{ "version": "0.1.0", "name": "stablecoin", "instructions": [ { "name": "initialize_program", "accounts": [ { "name": "admin", "writable": false, "signer": true, "init": false }, { "name": "protocol_parameters", "writable": true, "signer": false, "init": true }, { "name": "stability_fee_accumulator", "writable": true, "signer": false, "init": true }, { "name": "redemption_price_state", "writable": true, "signer": false, "init": true }, { "name": "stablecoin_definition", "writable": true, "signer": false, "init": true }, { "name": "stablecoin_master_holding", "writable": true, "signer": false, "init": true }, { "name": "collateral_definition", "writable": false, "signer": false, "init": false }, { "name": "market_price_oracle", "writable": false, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "freeze_authority_account_id", "type": "account_id" }, { "name": "initial_stability_fee_per_millisecond", "type": "u128" }, { "name": "initial_controller_proportional_gain", "type": "i128" }, { "name": "initial_controller_integral_gain", "type": "i128" }, { "name": "initial_minimum_collateralization_ratio", "type": "u128" }, { "name": "minimum_milliseconds_between_rate_updates", "type": "u64" }, { "name": "maximum_oracle_price_age_milliseconds", "type": "u64" }, { "name": "initial_redemption_price", "type": "u128" }, { "name": "stablecoin_name", "type": "string" } ] }, { "name": "accrue_stability_fee", "accounts": [ { "name": "caller", "writable": false, "signer": true, "init": false }, { "name": "protocol_parameters", "writable": false, "signer": false, "init": false }, { "name": "stability_fee_accumulator", "writable": true, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [] }, { "name": "set_stability_fee_per_millisecond", "accounts": [ { "name": "admin", "writable": false, "signer": true, "init": false }, { "name": "protocol_parameters", "writable": true, "signer": false, "init": false }, { "name": "stability_fee_accumulator", "writable": true, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "new_rate", "type": "u128" } ] }, { "name": "open_position", "accounts": [ { "name": "owner", "writable": false, "signer": true, "init": false }, { "name": "position", "writable": true, "signer": false, "init": true }, { "name": "vault", "writable": true, "signer": false, "init": true }, { "name": "user_holding", "writable": true, "signer": true, "init": false }, { "name": "collateral_definition", "writable": false, "signer": false, "init": false }, { "name": "protocol_parameters", "writable": false, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "position_nonce", "type": "u64" }, { "name": "initial_collateral_amount", "type": "u128" } ] }, { "name": "generate_debt", "accounts": [ { "name": "owner", "writable": false, "signer": true, "init": false }, { "name": "position", "writable": true, "signer": false, "init": false }, { "name": "stablecoin_definition", "writable": true, "signer": false, "init": false }, { "name": "user_stablecoin_holding", "writable": true, "signer": false, "init": false }, { "name": "stability_fee_accumulator", "writable": false, "signer": false, "init": false }, { "name": "redemption_price_state", "writable": false, "signer": false, "init": false }, { "name": "market_price_oracle", "writable": false, "signer": false, "init": false }, { "name": "protocol_parameters", "writable": false, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "amount", "type": "u128" } ] }, { "name": "withdraw_collateral", "accounts": [ { "name": "owner", "writable": false, "signer": true, "init": false }, { "name": "position", "writable": true, "signer": false, "init": false }, { "name": "vault", "writable": true, "signer": false, "init": false }, { "name": "destination", "writable": true, "signer": false, "init": false }, { "name": "stability_fee_accumulator", "writable": false, "signer": false, "init": false }, { "name": "redemption_price_state", "writable": false, "signer": false, "init": false }, { "name": "protocol_parameters", "writable": false, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "amount", "type": "u128" } ] }, { "name": "repay_debt", "accounts": [ { "name": "owner", "writable": false, "signer": true, "init": false }, { "name": "position", "writable": true, "signer": false, "init": false }, { "name": "stablecoin_definition", "writable": true, "signer": false, "init": false }, { "name": "user_stablecoin_holding", "writable": true, "signer": true, "init": false }, { "name": "stability_fee_accumulator", "writable": false, "signer": false, "init": false }, { "name": "protocol_parameters", "writable": false, "signer": false, "init": false }, { "name": "clock", "writable": false, "signer": false, "init": false } ], "args": [ { "name": "amount", "type": "u128" } ] } ], "accounts": [ { "name": "ProtocolParameters", "type": { "kind": "struct", "fields": [ { "name": "admin_account_id", "type": "account_id" }, { "name": "freeze_authority_account_id", "type": "account_id" }, { "name": "stablecoin_definition_id", "type": "account_id" }, { "name": "collateral_definition_id", "type": "account_id" }, { "name": "market_price_oracle_id", "type": "account_id" }, { "name": "stability_fee_per_millisecond", "type": "u128" }, { "name": "controller_proportional_gain", "type": "i128" }, { "name": "controller_integral_gain", "type": "i128" }, { "name": "minimum_collateralization_ratio", "type": "u128" }, { "name": "minimum_milliseconds_between_rate_updates", "type": "u64" }, { "name": "maximum_oracle_price_age_milliseconds", "type": "u64" }, { "name": "is_frozen", "type": "bool" } ] } }, { "name": "StabilityFeeAccumulator", "type": { "kind": "struct", "fields": [ { "name": "accumulated_rate_at_last_accrual", "type": "u128" }, { "name": "last_accrued_at", "type": "u64" } ] } }, { "name": "RedemptionPriceState", "type": { "kind": "struct", "fields": [ { "name": "redemption_price_at_last_update", "type": "u128" }, { "name": "redemption_rate_per_millisecond", "type": "u128" }, { "name": "controller_integral_term", "type": "i128" }, { "name": "last_updated_at", "type": "u64" } ] } }, { "name": "Position", "type": { "kind": "struct", "fields": [ { "name": "owner_account_id", "type": "account_id" }, { "name": "position_nonce", "type": "u64" }, { "name": "vault_account_id", "type": "account_id" }, { "name": "collateral_amount", "type": "u128" }, { "name": "normalized_debt_amount", "type": "u128" }, { "name": "opened_at", "type": "u64" } ] } }, { "name": "TokenDefinition", "type": { "kind": "enum", "variants": [ { "name": "Fungible", "fields": [ { "name": "name", "type": "string" }, { "name": "total_supply", "type": "u128" }, { "name": "metadata_id", "type": { "option": "account_id" } }, { "name": "authority", "type": { "option": "account_id" } } ] }, { "name": "NonFungible", "fields": [ { "name": "name", "type": "string" }, { "name": "printable_supply", "type": "u128" }, { "name": "metadata_id", "type": "account_id" } ] } ] } }, { "name": "TokenHolding", "type": { "kind": "enum", "variants": [ { "name": "Fungible", "fields": [ { "name": "definition_id", "type": "account_id" }, { "name": "balance", "type": "u128" } ] }, { "name": "NftMaster", "fields": [ { "name": "definition_id", "type": "account_id" }, { "name": "print_balance", "type": "u128" } ] }, { "name": "NftPrintedCopy", "fields": [ { "name": "definition_id", "type": "account_id" }, { "name": "owned", "type": "bool" } ] } ] } }, { "name": "TokenMetadata", "type": { "kind": "struct", "fields": [ { "name": "definition_id", "type": "account_id" }, { "name": "standard", "type": { "defined": "MetadataStandard" } }, { "name": "uri", "type": "string" }, { "name": "creators", "type": "string" }, { "name": "primary_sale_date", "type": "u64" } ] } }, { "name": "PriceObservations", "type": { "kind": "struct", "fields": [ { "name": "price_source_id", "type": "account_id" }, { "name": "write_index", "type": "u32" }, { "name": "total_entries", "type": "u64" }, { "name": "last_recorded_tick", "type": "i32" }, { "name": "entries", "type": { "vec": { "defined": "ObservationEntry" } } } ] } }, { "name": "OraclePriceAccount", "type": { "kind": "struct", "fields": [ { "name": "base_asset", "type": "account_id" }, { "name": "quote_asset", "type": "account_id" }, { "name": "price", "type": "u128" }, { "name": "timestamp", "type": "u64" }, { "name": "source_id", "type": "account_id" }, { "name": "confidence_interval", "type": "u128" } ] } }, { "name": "CurrentTickAccount", "type": { "kind": "struct", "fields": [ { "name": "tick", "type": "i32" }, { "name": "last_updated", "type": "u64" } ] } } ], "types": [ { "name": "MetadataStandard", "kind": "enum", "variants": [ { "name": "Simple" }, { "name": "Expanded" } ] }, { "name": "ObservationEntry", "kind": "struct", "fields": [ { "name": "timestamp", "type": "u64" }, { "name": "tick_cumulative", "type": "i64" } ] } ], "instruction_type": "stablecoin_core::Instruction" }