fn init(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdc_sac: soroban_sdk::Address,
price_usdc: u64,
hmac_key: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn upgrade(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn admin_wd(
env: soroban_sdk::Env,
to: soroban_sdk::Address,
amount: i128,
) -> Result<(), soroban_sdk::Error>
fn is_active(env: soroban_sdk::Env, who: soroban_sdk::Address) -> bool
payer_pk must be the raw 32-byte Ed25519 public key (same bytes backend uses after StrKey decode).
fn subscribe(
env: soroban_sdk::Env,
payer: soroban_sdk::Address,
payer_pk: soroban_sdk::BytesN<32>,
coupon: Option,
) -> Result<(), soroban_sdk::Error>
fn expires_at(env: soroban_sdk::Env, who: soroban_sdk::Address) -> u64
fn price_usdc(env: soroban_sdk::Env) -> u64
fn admin_pause(env: soroban_sdk::Env) -> Result<(), soroban_sdk::Error>
fn admin_unpause(env: soroban_sdk::Env) -> Result<(), soroban_sdk::Error>
fn admin_set_price(
env: soroban_sdk::Env,
new_price: u64,
) -> Result<(), soroban_sdk::Error>