fn admin(env: soroban_sdk::Env) -> soroban_sdk::Address
Replace the Factory Wasm. Auth: admin (checked BEFORE the swap).
Added alongside Registry::upgrade (2026-08-01): the Factory permanently
holds every owner→strategy mapping and anchors each strategy's
deterministic address, so a redeploy loses the index AND breaks
predict_address continuity — it must be patchable in place.
fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)
The owner's deployed slot numbers (sparse, e.g. {0, 5, 42}) in deploy order.
Lets the indexer/api recover the true slot for each strategy (paired with
strategy_at) and compute the next free slot — never assume dense 0..count.
fn owner_slots(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> soroban_sdk::Vec
The strategy at (owner, index), or None if that slot is free.
fn strategy_at(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
index: u32,
) -> Option
All of the owner's deployed strategies (empty for a not-yet-deployed owner).
Iterates the sparse OwnerSlots — never 0..count.
fn strategy_of(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> soroban_sdk::Vec
Accept a proposed admin rotation, step 2 of 2. Auth: the NOMINEE.
fn accept_admin(env: soroban_sdk::Env) -> Result<(), soroban_sdk::Error>
fn __constructor(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
strategy_wasm: soroban_sdk::BytesN<32>,
registry: soroban_sdk::Address,
)
fn strategy_wasm(env: soroban_sdk::Env) -> soroban_sdk::BytesN<32>
fn strategy_count(env: soroban_sdk::Env) -> u32
Rotate the admin, step 1 of 2. Auth: current admin. Nothing changes until
the nominee calls accept_admin.
Two-step for the same reason as the Registry, and it matters more here:
the Factory admin owns set_strategy_wasm, which decides the CODE every
future strategy deploys with. Losing it means the template can never be
updated again — and require_admin gates upgrade too, so there is no
path back. The nominee signing step 2 proves the key can sign before it
takes effect.
fn transfer_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)
Deploy the owner's Strategy at index and fund a deposit intent in one
signed tx — the first-deposit path for a selection too large to invest
atomically. Auth: owner (whole tree).
fn deploy_and_fund(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
index: u32,
auto_rebalance: bool,
asset: soroban_sdk::Address,
total: i128,
swap: MaybeSwap,
target: soroban_sdk::Address,
plan: soroban_sdk::Vec,
deadline: u64,
) -> Result
Deploy the owner's Strategy at slot index, at its deterministic address.
Auth: owner. One per (owner, index) (AlreadyDeployed otherwise);
refuses past OWNER_SLOT_CAP slots per owner (TooManyStrategies).
auto_rebalance is the strategy's IMMUTABLE lifetime choice (doc 13): a
strategy is born keeper-managed or manual, and pays fee_bps + delta or
fee_bps accordingly, until it is closed. There is no setter afterwards.
fn deploy_strategy(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
index: u32,
auto_rebalance: bool,
) -> Result
Deterministic Strategy address for (owner, index) (computable pre-deploy).
fn predict_address(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
index: u32,
) -> soroban_sdk::Address
Deploy the owner's Strategy at index and run the first invest in one
signed tx (the default first-investment path). Auth: owner (whole tree).
fn deploy_and_invest(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
index: u32,
auto_rebalance: bool,
asset: soroban_sdk::Address,
total: i128,
allocations: soroban_sdk::Vec,
swaps: soroban_sdk::Map,
) -> Result
Set the template Wasm hash used by FUTURE deploys. Auth: admin.
fn set_strategy_wasm(env: soroban_sdk::Env, new_wasm: soroban_sdk::BytesN<32>)
fn strategy_by_index(env: soroban_sdk::Env, index: u32) -> Option
How many slots the owner has deployed (a count, not a max index).
fn strategy_count_of(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> u32