fn initialize(
    env: soroban_sdk::Env,
    token_wasm_hash: soroban_sdk::BytesN<32>,
    token: soroban_sdk::Address,
    admin: soroban_sdk::Address,
    start_time: u64,
    end_time: u64,
    quote_period: u64,
    treasury: soroban_sdk::Address,
    min_deposit: u128,
)
         
        
        
            
            fn quote(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn set_quote(env: soroban_sdk::Env, amount: i128) -> Result<(), VaultError>
         
        
        
            
            fn bond_id(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn deposit(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    amount: i128,
) -> Result
         
        
        
            
            fn withdraw(
    env: soroban_sdk::Env,
    to: soroban_sdk::Address,
    amount: i128,
) -> Result
         
        
        
            
            fn total_deposit(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn available_redemption(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn set_total_redemption(env: soroban_sdk::Env, amount: i128) -> Result<(), VaultError>
         
        
        
            
            fn set_treasury(
    env: soroban_sdk::Env,
    treasury: soroban_sdk::Address,
) -> Result<(), VaultError>
         
        
        
            
            fn admin(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn set_admin(
    env: soroban_sdk::Env,
    new_admin: soroban_sdk::Address,
) -> Result<(), VaultError>
         
        
        
            
            fn maturity(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn total_bonds(env: soroban_sdk::Env) -> Result
         
        
        
            
            fn treasury_account(env: soroban_sdk::Env) -> Result