fn lock(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
amount: i128,
tier_id: u32,
) -> Result<(), FarmError>
fn claim(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
) -> Result
fn unlock(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
) -> Result
fn set_pool(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
config: PoolConfig,
) -> Result<(), FarmError>
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
) -> Result<(), FarmError>
Allow specific treasury addresses to top up a specific reward token for a pool.
fn set_funder(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
reward_token: soroban_sdk::Address,
funder: soroban_sdk::Address,
allowed: bool,
) -> Result<(), FarmError>
fn get_position(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
) -> Position
Admin-only APR update without replacing pool token/reward addresses.
fn set_pool_apr(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
apr_a_flex_bps: u32,
apr_a_core_bps: u32,
apr_a_prime_bps: u32,
apr_b_flex_bps: u32,
apr_b_core_bps: u32,
apr_b_prime_bps: u32,
) -> Result<(), FarmError>
Admin/Trident: sync a user's recorded position to their live LP balance
and computed tier after externally paying/settling accrued rewards.
If actual_balance is zero, the position is removed. If the amount grows
or tier increases, the lock timer is reset to the current ledger time.
fn sync_position(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
actual_balance: i128,
new_tier_id: u32,
) -> Result<(), FarmError>
fn get_pool_vault(
env: soroban_sdk::Env,
lp_token: soroban_sdk::Address,
) -> Result
Admin/Trident: reduce a user's recorded position when their actual LP
balance has dropped (e.g. they removed liquidity on another platform).
actual_balance is the user's real LP share balance as observed by the
bot via Horizon. If it's zero the position is removed entirely.
new_tier_id lets Trident demote the user's tier when their reduced
balance no longer meets the minimum for their current tier.
Rewards stop accruing on the removed portion from this moment.
fn slash_position(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
actual_balance: i128,
new_tier_id: u32,
) -> Result<(), FarmError>
fn deposit_rewards(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
amount_a: i128,
amount_b: i128,
) -> Result<(), FarmError>
fn get_pool_config(
env: soroban_sdk::Env,
lp_token: soroban_sdk::Address,
) -> Result
fn pending_rewards(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
) -> Result
fn get_participants(
env: soroban_sdk::Env,
lp_token: soroban_sdk::Address,
) -> soroban_sdk::Vec
Hybrid mode helper: Marks a user's rewards as externally settled through a timestamp (for Trident sweeps), preventing double-pay between off-chain and on-chain claim flows.
fn settle_unclaimed(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
settled_through: u64,
) -> Result<(), FarmError>
Admin can withdraw unused reward balances from a pool vault.
fn withdraw_rewards(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
amount_a: i128,
amount_b: i128,
) -> Result<(), FarmError>
Admin-only update for tier minimums.
min_lp_* is enforceable by this contract. min_bfab_* is exposed for
clients that estimate BFAB-equivalent LP value from pool reserves.
fn set_pool_minimums(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
min_lp_flex: i128,
min_lp_core: i128,
min_lp_prime: i128,
min_bfab_flex: i128,
min_bfab_core: i128,
min_bfab_prime: i128,
) -> Result<(), FarmError>
Admin/Trident: completely remove a user's position and adjust the vault. Use when the bot confirms the user holds zero LP shares.
fn force_remove_position(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
user: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
) -> Result<(), FarmError>
Third-party approved funder can deposit one reward token directly.
fn deposit_reward_as_funder(
env: soroban_sdk::Env,
funder: soroban_sdk::Address,
lp_token: soroban_sdk::Address,
reward_token: soroban_sdk::Address,
amount: i128,
) -> Result<(), FarmError>