lez-programs/artifacts/stablecoin-idl.json
Ricardo Guilherme Schmidt f3a94e6bff
feat(redemption-controller): implement initialize and update functions for redemption rate feedback controller
- Added `initialize_redemption_controller` and `update_redemption_controller` functions to manage redemption rate feedback.
- Introduced `RedemptionController` struct to maintain state for redemption rates.
- Updated `Cargo.toml` and `Cargo.lock` to include `twap_oracle_core` dependency.
- Modified integration tests to cover new redemption controller functionality.
2026-07-02 17:25:56 -03:00

520 lines
11 KiB
JSON

{
"version": "0.1.0",
"name": "stablecoin",
"instructions": [
{
"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": "token_definition",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "collateral_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
}
],
"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
}
],
"args": [
{
"name": "amount",
"type": "u128"
}
]
},
{
"name": "initialize_redemption_controller",
"accounts": [
{
"name": "controller",
"writable": false,
"signer": false,
"init": false
},
{
"name": "stablecoin_definition",
"writable": false,
"signer": false,
"init": false
},
{
"name": "price_feed",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "reference_asset_id",
"type": "account_id"
},
{
"name": "initial_redemption_price",
"type": "u128"
},
{
"name": "proportional_gain",
"type": "u128"
},
{
"name": "integral_gain",
"type": "u128"
},
{
"name": "max_integral_error",
"type": "u128"
},
{
"name": "max_redemption_rate",
"type": "u128"
},
{
"name": "max_price_feed_age",
"type": "u64"
},
{
"name": "current_timestamp",
"type": "u64"
}
]
},
{
"name": "update_redemption_controller",
"accounts": [
{
"name": "controller",
"writable": false,
"signer": false,
"init": false
},
{
"name": "price_feed",
"writable": false,
"signer": false,
"init": false
}
],
"args": [
{
"name": "current_timestamp",
"type": "u64"
}
]
}
],
"accounts": [
{
"name": "Position",
"type": {
"kind": "struct",
"fields": [
{
"name": "collateral_vault_id",
"type": "account_id"
},
{
"name": "collateral_definition_id",
"type": "account_id"
},
{
"name": "collateral_amount",
"type": "u128"
},
{
"name": "debt_amount",
"type": "u128"
}
]
}
},
{
"name": "RedemptionController",
"type": {
"kind": "struct",
"fields": [
{
"name": "stablecoin_definition_id",
"type": "account_id"
},
{
"name": "reference_asset_id",
"type": "account_id"
},
{
"name": "price_feed_id",
"type": "account_id"
},
{
"name": "oracle_program_id",
"type": "program_id"
},
{
"name": "redemption_price",
"type": "u128"
},
{
"name": "redemption_rate",
"type": "i128"
},
{
"name": "accumulated_error",
"type": "i128"
},
{
"name": "proportional_gain",
"type": "u128"
},
{
"name": "integral_gain",
"type": "u128"
},
{
"name": "max_integral_error",
"type": "u128"
},
{
"name": "max_redemption_rate",
"type": "u128"
},
{
"name": "max_price_feed_age",
"type": "u64"
},
{
"name": "last_update_timestamp",
"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"
}