fn stake(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
proposal_id: u32,
side: u32,
amount: i128,
) -> Result<(), ContractError>
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
token: soroban_sdk::Address,
oracle: soroban_sdk::Address,
twap_threshold: i128,
observation_window: u32,
) -> Result<(), ContractError>
fn get_proposal(
env: soroban_sdk::Env,
proposal_id: u32,
) -> Result
fn get_snapshot(
env: soroban_sdk::Env,
proposal_id: u32,
index: u32,
) -> Result
fn claim_winnings(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
proposal_id: u32,
) -> Result<(), ContractError>
fn get_user_stake(
env: soroban_sdk::Env,
proposal_id: u32,
user: soroban_sdk::Address,
) -> Result
fn create_proposal(
env: soroban_sdk::Env,
creator: soroban_sdk::Address,
description: soroban_sdk::String,
) -> Result
fn resolve_proposal(
env: soroban_sdk::Env,
proposal_id: u32,
) -> Result<(), ContractError>
fn get_proposal_count(env: soroban_sdk::Env) -> u32
fn get_snapshot_count(env: soroban_sdk::Env, proposal_id: u32) -> u32
fn record_price_snapshot(
env: soroban_sdk::Env,
proposal_id: u32,
) -> Result<(), ContractError>