use crate::{account::AccountHash, auction::EraId};
pub const SYSTEM_ACCOUNT: AccountHash = AccountHash::new([0; 32]);
pub const INITIAL_ERA_ID: EraId = 0;
pub const DELEGATION_RATE_DENOMINATOR: u64 = 1_000_000_000_000;
pub const BLOCK_REWARD: u64 = 1_000_000_000_000;
pub const DEFAULT_UNBONDING_DELAY: u64 = 14;
pub const ARG_AMOUNT: &str = "amount";
pub const ARG_DELEGATION_RATE: &str = "delegation_rate";
pub const ARG_PUBLIC_KEY: &str = "public_key";
pub const ARG_VALIDATOR: &str = "validator";
pub const ARG_DELEGATOR: &str = "delegator";
pub const ARG_SOURCE_PURSE: &str = "source_purse";
pub const ARG_VALIDATOR_PURSE: &str = "validator_purse";
pub const ARG_VALIDATOR_KEYS: &str = "validator_keys";
pub const ARG_VALIDATOR_PUBLIC_KEYS: &str = "validator_public_keys";
pub const ARG_ERA_ID: &str = "era_id";
pub const ARG_REWARD_FACTORS: &str = "reward_factors";
pub const ARG_VALIDATOR_PUBLIC_KEY: &str = "validator_public_key";
pub const ARG_DELEGATOR_PUBLIC_KEY: &str = "delegator_public_key";
pub const ARG_TARGET_PURSE: &str = "target_purse";
pub const ARG_UNBOND_PURSE: &str = "unbond_purse";
pub const ARG_VALIDATOR_SLOTS: &str = VALIDATOR_SLOTS_KEY;
pub const ARG_MINT_CONTRACT_PACKAGE_HASH: &str = "mint_contract_package_hash";
pub const ARG_GENESIS_VALIDATORS: &str = "genesis_validators";
pub const ARG_AUCTION_DELAY: &str = "auction_delay";
pub const ARG_LOCKED_FUNDS_PERIOD: &str = "locked_funds_period";
pub const METHOD_GET_ERA_VALIDATORS: &str = "get_era_validators";
pub const METHOD_READ_SEIGNIORAGE_RECIPIENTS: &str = "read_seigniorage_recipients";
pub const METHOD_ADD_BID: &str = "add_bid";
pub const METHOD_WITHDRAW_BID: &str = "withdraw_bid";
pub const METHOD_DELEGATE: &str = "delegate";
pub const METHOD_UNDELEGATE: &str = "undelegate";
pub const METHOD_RUN_AUCTION: &str = "run_auction";
pub const METHOD_SLASH: &str = "slash";
pub const METHOD_RELEASE_FOUNDER_STAKE: &str = "release_founder_stake";
pub const METHOD_DISTRIBUTE: &str = "distribute";
pub const METHOD_WITHDRAW_DELEGATOR_REWARD: &str = "withdraw_delegator_reward";
pub const METHOD_WITHDRAW_VALIDATOR_REWARD: &str = "withdraw_validator_reward";
pub const METHOD_READ_ERA_ID: &str = "read_era_id";
pub const BID_PURSES_KEY: &str = "bid_purses";
pub const UNBONDING_PURSES_KEY: &str = "unbonding_purses";
pub const BIDS_KEY: &str = "bids";
pub const DELEGATORS_KEY: &str = "delegators";
pub const ERA_VALIDATORS_KEY: &str = "era_validators";
pub const ERA_ID_KEY: &str = "era_id";
pub const SEIGNIORAGE_RECIPIENTS_SNAPSHOT_KEY: &str = "seigniorage_recipients_snapshot";
pub const DELEGATOR_REWARD_PURSE_KEY: &str = "delegator_reward_purse";
pub const VALIDATOR_REWARD_PURSE_KEY: &str = "validator_reward_purse";
pub const DELEGATOR_REWARD_MAP_KEY: &str = "delegator_reward_map";
pub const VALIDATOR_REWARD_MAP_KEY: &str = "validator_reward_map";
pub const VALIDATOR_SLOTS_KEY: &str = "validator_slots";
pub const AUCTION_DELAY_KEY: &str = "auction_delay";
pub const LOCKED_FUNDS_PERIOD_KEY: &str = "locked_funds_period";