Binds this adapter instance to exactly one treasury SmartAccount.
An adapter instance is not shared across unrelated treasuries: doing
so would let one treasury's approved transfer authorize funds moving
out of a different treasury with the same adapter configured.
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
smart_account: soroban_sdk::Address,
) -> Result<(), TransferAdapterError>
fn contract_name(env: soroban_sdk::Env) -> soroban_sdk::Symbol
Executes a single SAC transfer of amount of token from the
configured treasury to to. Requires the treasury's own
authorization for this exact call.
fn execute_transfer(
env: soroban_sdk::Env,
token: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
) -> Result<(), TransferAdapterError>
Security review finding: this contract's instance TTL was only ever
extended as a side effect of execute_transfer succeeding, which
itself requires the treasury's own authorization -- meaning a
treasury that goes fully dormant (no payments at all, entirely
plausible for e.g. a quarterly-disbursement treasury) had no way
for anyone to keep this adapter's instance storage alive, since
the one call that touches it can't be driven permissionlessly.
Instance storage archival is not a soft failure -- an archived
contract cannot be invoked at all without a separate restore
operation. Every other contract in this workspace
(smart_account, recovery_manager, policy_engine,
intent_registry, governance_account) already has a
permissionless maintenance entrypoint for exactly this reason;
this one and split_adapter were the two gaps.
fn extend_instance_ttl(env: soroban_sdk::Env)