Initialize the contract with the trading pair and dependencies
Arguments:
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
pool: soroban_sdk::Address,
margin_manager: soroban_sdk::Address,
base_token: soroban_sdk::Address,
quote_token: soroban_sdk::Address,
) -> Result<(), EntrypointError>
Update the margin manager contract address
fn set_margin_manager(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
margin_manager: soroban_sdk::Address,
) -> Result<(), EntrypointError>
Get the pool address
fn get_pool(env: soroban_sdk::Env) -> soroban_sdk::Address
Get the admin address
fn get_admin(env: soroban_sdk::Env) -> soroban_sdk::Address
Get the margin manager contract address
fn get_margin_manager(env: soroban_sdk::Env) -> soroban_sdk::Address
Get the base token address
fn get_base_token(env: soroban_sdk::Env) -> soroban_sdk::Address
Get the quote token address
fn get_quote_token(env: soroban_sdk::Env) -> soroban_sdk::Address
Get a position by user and position type
fn get_position(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
position_type: PositionType,
) -> Option
Check if a user has a position of a specific type
fn has_position(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
position_type: PositionType,
) -> bool
Open a LONG position on Base token
LONG Base = betting Base will appreciate vs Quote Flow: Flash loan Quote → Swap Quote→Base → Supply Base as collateral → Borrow Quote → Repay flash loan Result: Collateral=Base, Debt=Quote
Arguments:
fn open_long(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
flash_amount: i128,
initial_margin: i128,
collateral_amount: i128,
collateral_from_base: bool,
) -> Result<(), EntrypointError>
Open a SHORT position on Base token
SHORT Base = betting Base will depreciate vs Quote Flow: Flash loan Base → Swap Base→Quote → Supply Quote as collateral → Borrow Base → Repay flash loan Result: Collateral=Quote, Debt=Base
Arguments:
fn open_short(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
flash_amount: i128,
initial_margin: i128,
collateral_amount: i128,
collateral_from_quote: bool,
) -> Result<(), EntrypointError>
Reduce or close a LONG position on Base token
To reduce/close long (Collateral=Base, Debt=Quote): Flow: Flash loan Base → Swap Base→Quote → Repay Quote debt → Withdraw Base collateral → Repay Base flash loan
Arguments:
fn close_long(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
flash_amount: i128,
repay_amount: i128,
withdraw_amount: i128,
) -> Result<(), EntrypointError>
Reduce or close a SHORT position on Base token
To reduce/close short (Collateral=Quote, Debt=Base): Flow: Flash loan Quote → Swap Quote→Base → Repay Base debt → Withdraw Quote collateral → Repay Quote flash loan
Arguments:
fn close_short(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
flash_amount: i128,
repay_amount: i128,
withdraw_amount: i128,
) -> Result<(), EntrypointError>
Prepare parameters for opening a LONG position Returns (flash_loan, requests, borrow_amount) for user to call pool.flash_loan directly
User should:
fn prepare_open_long(
env: soroban_sdk::Env,
flash_amount: i128,
initial_margin: i128,
collateral_amount: i128,
collateral_from_base: bool,
) -> (FlashLoan, soroban_sdk::Vec, i128)
Prepare parameters for opening a SHORT position Returns (flash_loan, requests, borrow_amount) for user to call pool.flash_loan directly
fn prepare_open_short(
env: soroban_sdk::Env,
flash_amount: i128,
initial_margin: i128,
collateral_amount: i128,
collateral_from_quote: bool,
) -> (FlashLoan, soroban_sdk::Vec, i128)
Record a LONG position after successful flash loan execution Called by user after pool.flash_loan succeeds
fn record_long_position(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
initial_margin: i128,
collateral_amount: i128,
borrowed_amount: i128,
) -> Result<(), EntrypointError>
Record a SHORT position after successful flash loan execution Called by user after pool.flash_loan succeeds
fn record_short_position(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
initial_margin: i128,
collateral_amount: i128,
borrowed_amount: i128,
) -> Result<(), EntrypointError>
Create a supply collateral request
fn make_supply_collateral_request(
env: soroban_sdk::Env,
asset: soroban_sdk::Address,
amount: i128,
) -> Request
Create a borrow request
fn make_borrow_request(
env: soroban_sdk::Env,
asset: soroban_sdk::Address,
amount: i128,
) -> Request
Create a repay request
fn make_repay_request(
env: soroban_sdk::Env,
asset: soroban_sdk::Address,
amount: i128,
) -> Request
Create a withdraw collateral request
fn make_withdraw_collateral_request(
env: soroban_sdk::Env,
asset: soroban_sdk::Address,
amount: i128,
) -> Request