Skip to content

Commit

Permalink
✨ Adding vstrk adapter (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
florian-bellotti authored May 6, 2024
1 parent 626ee5f commit ebb3371
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/adapters.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ mod nostrav2_adapter;
mod sithswap_adapter;
mod starkdefi_adapter;
mod tenkswap_adapter;
mod vstrk_adapter;

use starknet::ContractAddress;

Expand Down
48 changes: 48 additions & 0 deletions src/adapters/vstrk_adapter.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
use starknet::ContractAddress;

#[starknet::interface]
trait IVstrk<TContractState> {
fn unlock(self: @TContractState, amount: u256);
}
#[starknet::interface]
trait IStrk<TContractState> {
fn lock_and_delegate(self: @TContractState, delegatee: ContractAddress, amount: u256);
}

#[starknet::contract]
mod VstrkAdapter {
use avnu::adapters::ISwapAdapter;
use super::{IVstrkDispatcher, IVstrkDispatcherTrait, IStrkDispatcher, IStrkDispatcherTrait};
use starknet::{contract_address_const, ContractAddress};

#[storage]
struct Storage {}

#[external(v0)]
impl VstrkAdapter of ISwapAdapter<ContractState> {
fn swap(
self: @ContractState,
exchange_address: ContractAddress,
token_from_address: ContractAddress,
token_from_amount: u256,
token_to_address: ContractAddress,
token_to_min_amount: u256,
to: ContractAddress,
additional_swap_params: Array<felt252>,
) {
assert(additional_swap_params.len() == 0, 'Invalid swap params');
let STRK_ADDRESS: ContractAddress =
contract_address_const::<0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d>();
assert(
token_from_address == STRK_ADDRESS || token_to_address == STRK_ADDRESS,
'Invalid STRK address'
);
if (token_from_address == STRK_ADDRESS) {
IStrkDispatcher { contract_address: token_from_address }
.lock_and_delegate(to, token_from_amount);
} else {
IVstrkDispatcher { contract_address: token_from_address }.unlock(token_from_amount);
}
}
}
}

0 comments on commit ebb3371

Please sign in to comment.