Upgrade factory contract WASM — requires admin authorization
fn upgrade(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), FactoryError>
Get agent contract address by domain node
fn get_agent(
env: soroban_sdk::Env,
domain_node: soroban_sdk::BytesN<32>,
) -> Option
Update admin address — requires current admin authorization
fn set_admin(
env: soroban_sdk::Env,
new_admin: soroban_sdk::Address,
) -> Result<(), FactoryError>
Initialize the factory with admin, Account WASM hash, and optional Registry address
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
account_wasm_hash: soroban_sdk::BytesN<32>,
registry: Option,
) -> Result<(), FactoryError>
Deploy a deterministic AgentSmartAccount for a domain node (legacy v1: salt = domain_node)
fn deploy_agent(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain_node: soroban_sdk::BytesN<32>,
master_key: soroban_sdk::BytesN<32>,
session_key: soroban_sdk::BytesN<32>,
policy: SessionPolicy,
) -> Result
Get Registry contract address
fn get_registry(env: soroban_sdk::Env) -> Option
Admin: Set Registry contract address for domain ownership checks
fn set_registry(
env: soroban_sdk::Env,
new_registry: soroban_sdk::Address,
) -> Result<(), FactoryError>
Deploy with explicit salt (v2: allows rotating / redeploying salt)
fn deploy_agent_v2(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain_node: soroban_sdk::BytesN<32>,
salt: soroban_sdk::BytesN<32>,
master_key: soroban_sdk::BytesN<32>,
session_key: soroban_sdk::BytesN<32>,
policy: SessionPolicy,
) -> Result
Deploy a deterministic AgentSmartAccount and atomically fund gas and/or trading capital
fn deploy_and_fund(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain_node: soroban_sdk::BytesN<32>,
master_key: soroban_sdk::BytesN<32>,
session_key: soroban_sdk::BytesN<32>,
policy: SessionPolicy,
gas_token: Option,
gas_amount: i128,
trading_token: Option,
trading_amount: i128,
) -> Result
Get domain node by agent contract address
fn get_domain_node(
env: soroban_sdk::Env,
agent: soroban_sdk::Address,
) -> Option>
Deploy and fund with custom salt (v2)
fn deploy_and_fund_v2(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain_node: soroban_sdk::BytesN<32>,
salt: soroban_sdk::BytesN<32>,
master_key: soroban_sdk::BytesN<32>,
session_key: soroban_sdk::BytesN<32>,
policy: SessionPolicy,
gas_token: Option,
gas_amount: i128,
trading_token: Option,
trading_amount: i128,
) -> Result
Total deployed agents count
fn get_total_deployed(env: soroban_sdk::Env) -> u32
Admin: Explicitly set/rebind agent mapping for a domain node
fn set_agent_for_node(
env: soroban_sdk::Env,
domain_node: soroban_sdk::BytesN<32>,
agent: soroban_sdk::Address,
) -> Result<(), FactoryError>
Admin: Clear agent mapping for a node to allow redeployment
fn clear_agent_for_node(
env: soroban_sdk::Env,
domain_node: soroban_sdk::BytesN<32>,
) -> Result<(), FactoryError>
Get active Account WASM hash
fn get_account_wasm_hash(
env: soroban_sdk::Env,
) -> Result, FactoryError>
Predict deterministic agent address for a domain node
fn predict_agent_address(
env: soroban_sdk::Env,
domain_node: soroban_sdk::BytesN<32>,
) -> soroban_sdk::Address
Set Account WASM hash — requires admin authorization
fn set_account_wasm_hash(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), FactoryError>