{
"address": "jupeiUmn818Jg1ekPURTpr4mFo29p46vygyykFJ3wZC",
"metadata": {
"name": "liquidity",
"version": "0.1.5",
"spec": "0.1.0",
"description": "Created with Anchor"
},
"instructions": [
{
"name": "change_status",
"discriminator": [236, 145, 131, 228, 227, 17, 192, 255],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "liquidity",
"writable": true
},
{
"name": "auth_list"
}
],
"args": [
{
"name": "status",
"type": "bool"
}
]
},
{
"name": "claim",
"discriminator": [62, 198, 214, 193, 213, 159, 108, 210],
"accounts": [
{
"name": "user",
"signer": true,
"relations": ["claim_account"]
},
{
"name": "liquidity"
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "mint",
"relations": ["token_reserve", "claim_account"]
},
{
"name": "recipient_token_account",
"writable": true
},
{
"name": "vault",
"writable": true,
"relations": ["token_reserve"]
},
{
"name": "claim_account",
"writable": true
},
{
"name": "token_program"
}
],
"args": [
{
"name": "recipient",
"type": "pubkey"
}
]
},
{
"name": "close_claim_account",
"discriminator": [241, 146, 203, 216, 58, 222, 91, 118],
"accounts": [
{
"name": "user",
"writable": true,
"signer": true,
"relations": ["claim_account"]
},
{
"name": "claim_account",
"writable": true
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "_mint",
"type": "pubkey"
}
]
},
{
"name": "collect_revenue",
"discriminator": [87, 96, 211, 36, 240, 43, 246, 87],
"accounts": [
{
"name": "authority",
"writable": true,
"signer": true
},
{
"name": "liquidity"
},
{
"name": "auth_list"
},
{
"name": "mint",
"relations": ["token_reserve"]
},
{
"name": "revenue_collector_account",
"writable": true,
"pda": {
"seeds": [
{
"kind": "account",
"path": "revenue_collector"
},
{
"kind": "account",
"path": "token_program"
},
{
"kind": "account",
"path": "mint"
}
],
"program": {
"kind": "const",
"value": [
140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19,
153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89
]
}
}
},
{
"name": "revenue_collector"
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "vault",
"writable": true,
"pda": {
"seeds": [
{
"kind": "account",
"path": "liquidity"
},
{
"kind": "account",
"path": "token_program"
},
{
"kind": "account",
"path": "mint"
}
],
"program": {
"kind": "const",
"value": [
140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19,
153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89
]
}
},
"relations": ["token_reserve"]
},
{
"name": "token_program"
},
{
"name": "associated_token_program",
"address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": []
},
{
"name": "init_claim_account",
"discriminator": [112, 141, 47, 170, 42, 99, 144, 145],
"accounts": [
{
"name": "signer",
"writable": true,
"signer": true
},
{
"name": "claim_account",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [117, 115, 101, 114, 95, 99, 108, 97, 105, 109]
},
{
"kind": "arg",
"path": "user"
},
{
"kind": "arg",
"path": "mint"
}
]
}
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "mint",
"type": "pubkey"
},
{
"name": "user",
"type": "pubkey"
}
]
},
{
"name": "init_liquidity",
"discriminator": [95, 189, 216, 183, 188, 62, 244, 108],
"accounts": [
{
"name": "signer",
"writable": true,
"signer": true
},
{
"name": "liquidity",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [108, 105, 113, 117, 105, 100, 105, 116, 121]
}
]
}
},
{
"name": "auth_list",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [97, 117, 116, 104, 95, 108, 105, 115, 116]
}
]
}
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "revenue_collector",
"type": "pubkey"
}
]
},
{
"name": "init_new_protocol",
"discriminator": [193, 147, 5, 32, 138, 135, 213, 158],
"accounts": [
{
"name": "authority",
"writable": true,
"signer": true
},
{
"name": "auth_list"
},
{
"name": "user_supply_position",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [
117, 115, 101, 114, 95, 115, 117, 112, 112, 108, 121, 95, 112, 111, 115, 105, 116,
105, 111, 110
]
},
{
"kind": "arg",
"path": "supply_mint"
},
{
"kind": "arg",
"path": "protocol"
}
]
}
},
{
"name": "user_borrow_position",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [
117, 115, 101, 114, 95, 98, 111, 114, 114, 111, 119, 95, 112, 111, 115, 105, 116,
105, 111, 110
]
},
{
"kind": "arg",
"path": "borrow_mint"
},
{
"kind": "arg",
"path": "protocol"
}
]
}
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "supply_mint",
"type": "pubkey"
},
{
"name": "borrow_mint",
"type": "pubkey"
},
{
"name": "protocol",
"type": "pubkey"
}
]
},
{
"name": "init_token_reserve",
"discriminator": [228, 235, 65, 129, 159, 15, 6, 84],
"accounts": [
{
"name": "authority",
"writable": true,
"signer": true
},
{
"name": "liquidity"
},
{
"name": "auth_list"
},
{
"name": "mint"
},
{
"name": "vault",
"writable": true,
"pda": {
"seeds": [
{
"kind": "account",
"path": "liquidity"
},
{
"kind": "account",
"path": "token_program"
},
{
"kind": "account",
"path": "mint"
}
],
"program": {
"kind": "const",
"value": [
140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19,
153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89
]
}
}
},
{
"name": "rate_model",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [114, 97, 116, 101, 95, 109, 111, 100, 101, 108]
},
{
"kind": "account",
"path": "mint"
}
]
}
},
{
"name": "token_reserve",
"writable": true,
"pda": {
"seeds": [
{
"kind": "const",
"value": [114, 101, 115, 101, 114, 118, 101]
},
{
"kind": "account",
"path": "mint"
}
]
}
},
{
"name": "token_program"
},
{
"name": "associated_token_program",
"address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": []
},
{
"name": "operate",
"discriminator": [217, 106, 208, 99, 116, 151, 42, 135],
"accounts": [
{
"name": "protocol",
"signer": true,
"relations": ["user_supply_position", "user_borrow_position"]
},
{
"name": "liquidity"
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "mint",
"relations": [
"token_reserve",
"rate_model",
"borrow_claim_account",
"withdraw_claim_account"
]
},
{
"name": "vault",
"writable": true,
"relations": ["token_reserve"]
},
{
"name": "user_supply_position",
"writable": true,
"optional": true
},
{
"name": "user_borrow_position",
"writable": true,
"optional": true
},
{
"name": "rate_model"
},
{
"name": "withdraw_to_account",
"writable": true,
"optional": true
},
{
"name": "borrow_to_account",
"writable": true,
"optional": true
},
{
"name": "borrow_claim_account",
"writable": true,
"optional": true
},
{
"name": "withdraw_claim_account",
"writable": true,
"optional": true
},
{
"name": "token_program"
}
],
"args": [
{
"name": "supply_amount",
"type": "i128"
},
{
"name": "borrow_amount",
"type": "i128"
},
{
"name": "withdraw_to",
"type": "pubkey"
},
{
"name": "borrow_to",
"type": "pubkey"
},
{
"name": "transfer_type",
"type": {
"defined": {
"name": "TransferType"
}
}
}
]
},
{
"name": "pause_token",
"discriminator": [226, 150, 72, 211, 159, 51, 226, 39],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "token_reserve",
"writable": true
}
],
"args": [
{
"name": "_mint",
"type": "pubkey"
}
]
},
{
"name": "pause_user",
"discriminator": [18, 63, 43, 94, 239, 53, 101, 14],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "user_supply_position",
"writable": true
},
{
"name": "user_borrow_position",
"writable": true
}
],
"args": [
{
"name": "protocol",
"type": "pubkey"
},
{
"name": "supply_mint",
"type": "pubkey"
},
{
"name": "borrow_mint",
"type": "pubkey"
},
{
"name": "supply_status",
"type": {
"option": "u8"
}
},
{
"name": "borrow_status",
"type": {
"option": "u8"
}
}
]
},
{
"name": "pre_operate",
"discriminator": [129, 205, 158, 155, 198, 155, 72, 133],
"accounts": [
{
"name": "protocol",
"signer": true,
"relations": ["user_supply_position", "user_borrow_position"]
},
{
"name": "liquidity"
},
{
"name": "user_supply_position",
"optional": true
},
{
"name": "user_borrow_position",
"optional": true
},
{
"name": "vault",
"relations": ["token_reserve"]
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "token_program"
}
],
"args": [
{
"name": "mint",
"type": "pubkey"
}
]
},
{
"name": "unpause_token",
"discriminator": [108, 117, 62, 30, 200, 92, 255, 202],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "token_reserve",
"writable": true
}
],
"args": [
{
"name": "_mint",
"type": "pubkey"
}
]
},
{
"name": "unpause_user",
"discriminator": [71, 115, 128, 252, 182, 126, 234, 62],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "user_supply_position",
"writable": true
},
{
"name": "user_borrow_position",
"writable": true
}
],
"args": [
{
"name": "protocol",
"type": "pubkey"
},
{
"name": "supply_mint",
"type": "pubkey"
},
{
"name": "borrow_mint",
"type": "pubkey"
},
{
"name": "supply_status",
"type": {
"option": "u8"
}
},
{
"name": "borrow_status",
"type": {
"option": "u8"
}
}
]
},
{
"name": "update_authority",
"discriminator": [32, 46, 64, 28, 149, 75, 243, 88],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "liquidity",
"writable": true
},
{
"name": "auth_list",
"writable": true
}
],
"args": [
{
"name": "new_authority",
"type": "pubkey"
}
]
},
{
"name": "update_auths",
"discriminator": [93, 96, 178, 156, 57, 117, 253, 209],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "liquidity"
},
{
"name": "auth_list",
"writable": true
}
],
"args": [
{
"name": "auth_status",
"type": {
"vec": {
"defined": {
"name": "AddressBool"
}
}
}
}
]
},
{
"name": "update_exchange_price",
"discriminator": [239, 244, 10, 248, 116, 25, 53, 150],
"accounts": [
{
"name": "token_reserve",
"writable": true
},
{
"name": "rate_model"
}
],
"args": [
{
"name": "_mint",
"type": "pubkey"
}
]
},
{
"name": "update_guardians",
"discriminator": [43, 62, 250, 138, 141, 117, 132, 97],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "liquidity"
},
{
"name": "auth_list",
"writable": true
}
],
"args": [
{
"name": "guardian_status",
"type": {
"vec": {
"defined": {
"name": "AddressBool"
}
}
}
}
]
},
{
"name": "update_rate_data_v1",
"discriminator": [6, 20, 34, 122, 22, 150, 180, 22],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "rate_model",
"writable": true
},
{
"name": "mint",
"relations": ["rate_model", "token_reserve"]
},
{
"name": "token_reserve",
"writable": true
}
],
"args": [
{
"name": "rate_data",
"type": {
"defined": {
"name": "RateDataV1Params"
}
}
}
]
},
{
"name": "update_rate_data_v2",
"discriminator": [116, 73, 53, 146, 216, 45, 228, 124],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "rate_model",
"writable": true
},
{
"name": "mint",
"relations": ["rate_model", "token_reserve"]
},
{
"name": "token_reserve",
"writable": true
}
],
"args": [
{
"name": "rate_data",
"type": {
"defined": {
"name": "RateDataV2Params"
}
}
}
]
},
{
"name": "update_revenue_collector",
"discriminator": [167, 142, 124, 240, 220, 113, 141, 59],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "liquidity",
"writable": true
}
],
"args": [
{
"name": "revenue_collector",
"type": "pubkey"
}
]
},
{
"name": "update_token_config",
"discriminator": [231, 122, 181, 79, 255, 79, 144, 167],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "rate_model",
"writable": true
},
{
"name": "mint",
"relations": ["rate_model", "token_reserve"]
},
{
"name": "token_reserve",
"writable": true
}
],
"args": [
{
"name": "token_config",
"type": {
"defined": {
"name": "TokenConfig"
}
}
}
]
},
{
"name": "update_user_borrow_config",
"discriminator": [100, 176, 201, 174, 247, 2, 54, 168],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "protocol",
"relations": ["user_borrow_position"]
},
{
"name": "auth_list"
},
{
"name": "rate_model"
},
{
"name": "mint",
"relations": ["rate_model", "token_reserve", "user_borrow_position"]
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "user_borrow_position",
"writable": true
}
],
"args": [
{
"name": "user_borrow_config",
"type": {
"defined": {
"name": "UserBorrowConfig"
}
}
}
]
},
{
"name": "update_user_class",
"discriminator": [12, 206, 68, 135, 63, 212, 48, 119],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list",
"writable": true
}
],
"args": [
{
"name": "user_class",
"type": {
"vec": {
"defined": {
"name": "AddressU8"
}
}
}
}
]
},
{
"name": "update_user_supply_config",
"discriminator": [217, 239, 225, 218, 33, 49, 234, 183],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "protocol",
"relations": ["user_supply_position"]
},
{
"name": "auth_list"
},
{
"name": "rate_model"
},
{
"name": "mint",
"relations": ["rate_model", "token_reserve", "user_supply_position"]
},
{
"name": "token_reserve",
"writable": true
},
{
"name": "user_supply_position",
"writable": true
}
],
"args": [
{
"name": "user_supply_config",
"type": {
"defined": {
"name": "UserSupplyConfig"
}
}
}
]
},
{
"name": "update_user_withdrawal_limit",
"discriminator": [162, 9, 186, 9, 213, 30, 173, 78],
"accounts": [
{
"name": "authority",
"signer": true
},
{
"name": "auth_list"
},
{
"name": "user_supply_position",
"writable": true
}
],
"args": [
{
"name": "new_limit",
"type": "u128"
},
{
"name": "protocol",
"type": "pubkey"
},
{
"name": "mint",
"type": "pubkey"
}
]
}
],
"accounts": [
{
"name": "AuthorizationList",
"discriminator": [19, 157, 117, 43, 236, 167, 251, 69]
},
{
"name": "Liquidity",
"discriminator": [54, 252, 249, 226, 137, 172, 121, 58]
},
{
"name": "RateModel",
"discriminator": [94, 3, 203, 219, 107, 137, 4, 162]
},
{
"name": "TokenReserve",
"discriminator": [21, 18, 59, 135, 120, 20, 31, 12]
},
{
"name": "UserBorrowPosition",
"discriminator": [73, 126, 65, 123, 220, 126, 197, 24]
},
{
"name": "UserClaim",
"discriminator": [228, 142, 195, 181, 228, 147, 32, 209]
},
{
"name": "UserSupplyPosition",
"discriminator": [202, 219, 136, 118, 61, 177, 21, 146]
}
],
"events": [
{
"name": "LogBorrowRateCap",
"discriminator": [156, 131, 232, 94, 254, 156, 14, 117]
},
{
"name": "LogChangeStatus",
"discriminator": [89, 77, 37, 172, 141, 31, 74, 42]
},
{
"name": "LogClaim",
"discriminator": [238, 50, 157, 85, 151, 58, 231, 45]
},
{
"name": "LogCollectRevenue",
"discriminator": [64, 198, 22, 194, 123, 87, 166, 82]
},
{
"name": "LogOperate",
"discriminator": [180, 8, 81, 71, 19, 132, 173, 8]
},
{
"name": "LogPauseUser",
"discriminator": [100, 17, 114, 224, 180, 30, 52, 170]
},
{
"name": "LogTokenLockdown",
"discriminator": [2, 103, 171, 11, 0, 27, 20, 40]
},
{
"name": "LogUnpauseUser",
"discriminator": [170, 91, 132, 96, 179, 77, 168, 26]
},
{
"name": "LogUpdateAuthority",
"discriminator": [150, 152, 157, 143, 6, 135, 193, 101]
},
{
"name": "LogUpdateAuths",
"discriminator": [88, 80, 109, 48, 111, 203, 76, 251]
},
{
"name": "LogUpdateExchangePrices",
"discriminator": [190, 194, 69, 204, 30, 86, 181, 163]
},
{
"name": "LogUpdateGuardians",
"discriminator": [231, 28, 191, 51, 53, 140, 79, 142]
},
{
"name": "LogUpdateRateDataV1",
"discriminator": [30, 102, 131, 192, 0, 30, 85, 223]
},
{
"name": "LogUpdateRateDataV2",
"discriminator": [206, 53, 195, 70, 113, 211, 92, 129]
},
{
"name": "LogUpdateRevenueCollector",
"discriminator": [44, 143, 80, 250, 211, 147, 180, 159]
},
{
"name": "LogUpdateTokenConfigs",
"discriminator": [24, 205, 191, 130, 47, 40, 233, 218]
},
{
"name": "LogUpdateUserBorrowConfigs",
"discriminator": [210, 251, 242, 159, 205, 33, 154, 74]
},
{
"name": "LogUpdateUserClass",
"discriminator": [185, 193, 106, 248, 11, 53, 0, 136]
},
{
"name": "LogUpdateUserSupplyConfigs",
"discriminator": [142, 160, 21, 90, 87, 88, 18, 51]
},
{
"name": "LogUpdateUserWithdrawalLimit",
"discriminator": [114, 131, 152, 189, 120, 253, 88, 105]
}
],
"errors": [
{
"code": 6000,
"name": "UserClassNotPausable",
"msg": "ADMIN_MODULE_USER_CLASS_NOT_PAUSABLE"
},
{
"code": 6001,
"name": "UserClassNotFound",
"msg": "ADMIN_MODULE_USER_CLASS_NOT_FOUND"
},
{
"code": 6002,
"name": "UserAlreadyPaused",
"msg": "ADMIN_MODULE_USER_ALREADY_PAUSED"
},
{
"code": 6003,
"name": "UserAlreadyUnpaused",
"msg": "ADMIN_MODULE_USER_ALREADY_UNPAUSED"
},
{
"code": 6004,
"name": "OnlyLiquidityAuthority",
"msg": "ADMIN_MODULE_ONLY_LIQUIDITY_AUTHORITY"
},
{
"code": 6005,
"name": "OnlyAuth",
"msg": "ADMIN_MODULE_ONLY_AUTH"
},
{
"code": 6006,
"name": "OnlyGuardians",
"msg": "ADMIN_MODULE_ONLY_GUARDIANS"
},
{
"code": 6007,
"name": "InvalidParams",
"msg": "ADMIN_MODULE_INVALID_PARAMS"
},
{
"code": 6008,
"name": "InvalidConfigOrder",
"msg": "ADMIN_MODULE_INVALID_CONFIG_ORDER"
},
{
"code": 6009,
"name": "StatusAlreadySet",
"msg": "ADMIN_MODULE_STATUS_ALREADY_SET"
},
{
"code": 6010,
"name": "LimitsCannotBeZero",
"msg": "ADMIN_MODULE_LIMITS_CAN_NOT_BE_ZERO"
},
{
"code": 6011,
"name": "MaxAuthCountReached",
"msg": "ADMIN_MODULE_MAX_AUTH_COUNT"
},
{
"code": 6012,
"name": "MaxUserClassesReached",
"msg": "ADMIN_MODULE_MAX_USER_CLASSES"
},
{
"code": 6013,
"name": "InsufficientBalance",
"msg": "USER_MODULE_INSUFFICIENT_BALANCE"
},
{
"code": 6014,
"name": "UserSupplyPositionRequired",
"msg": "USER_MODULE_USER_SUPPLY_POSITION_REQUIRED"
},
{
"code": 6015,
"name": "UserBorrowPositionRequired",
"msg": "USER_MODULE_USER_BORROW_POSITION_REQUIRED"
},
{
"code": 6016,
"name": "ClaimAccountRequired",
"msg": "USER_MODULE_CLAIM_ACCOUNT_REQUIRED"
},
{
"code": 6017,
"name": "WithdrawToAccountRequired",
"msg": "USER_MODULE_WITHDRAW_TO_ACCOUNT_REQUIRED"
},
{
"code": 6018,
"name": "BorrowToAccountRequired",
"msg": "USER_MODULE_BORROW_TO_ACCOUNT_REQUIRED"
},
{
"code": 6019,
"name": "InvalidClaimAmount",
"msg": "USER_MODULE_INVALID_CLAIM_AMOUNT"
},
{
"code": 6020,
"name": "NoAmountToClaim",
"msg": "USER_MODULE_NO_AMOUNT_TO_CLAIM"
},
{
"code": 6021,
"name": "AmountNotZero",
"msg": "USER_MODULE_AMOUNT_NOT_ZERO"
},
{
"code": 6022,
"name": "ValueOverflow",
"msg": "USER_MODULE_VALUE_OVERFLOW"
},
{
"code": 6023,
"name": "InvalidTransferType",
"msg": "USER_MODULE_INVALID_TRANSFER_TYPE"
},
{
"code": 6024,
"name": "MintMismatch",
"msg": "USER_MODULE_MINT_MISMATCH"
},
{
"code": 6025,
"name": "UserNotDefined",
"msg": "USER_MODULE_USER_NOT_DEFINED"
},
{
"code": 6026,
"name": "InvalidUserClaim",
"msg": "USER_MODULE_INVALID_USER_CLAIM"
},
{
"code": 6027,
"name": "UserPaused",
"msg": "USER_MODULE_USER_PAUSED"
},
{
"code": 6028,
"name": "WithdrawalLimitReached",
"msg": "USER_MODULE_WITHDRAWAL_LIMIT_REACHED"
},
{
"code": 6029,
"name": "BorrowLimitReached",
"msg": "USER_MODULE_BORROW_LIMIT_REACHED"
},
{
"code": 6030,
"name": "OperateAmountsNearlyZero",
"msg": "USER_MODULE_OPERATE_AMOUNTS_ZERO"
},
{
"code": 6031,
"name": "OperateAmountTooBig",
"msg": "USER_MODULE_OPERATE_AMOUNTS_TOO_BIG"
},
{
"code": 6032,
"name": "OperateAmountsInsufficient",
"msg": "USER_MODULE_OPERATE_AMOUNTS_INSUFFICIENT"
},
{
"code": 6033,
"name": "TransferAmountOutOfBounds",
"msg": "USER_MODULE_TRANSFER_AMOUNT_OUT_OF_BOUNDS"
},
{
"code": 6034,
"name": "ForbiddenOperateCall",
"msg": "FORBIDDEN_OPERATE_CALL"
},
{
"code": 6035,
"name": "MaxUtilizationReached",
"msg": "USER_MODULE_MAX_UTILIZATION_REACHED"
},
{
"code": 6036,
"name": "ValueOverflowTotalSupply",
"msg": "USER_MODULE_VALUE_OVERFLOW_TOTAL_SUPPLY"
},
{
"code": 6037,
"name": "ValueOverflowTotalBorrow",
"msg": "USER_MODULE_VALUE_OVERFLOW_TOTAL_BORROW"
},
{
"code": 6038,
"name": "DepositExpected",
"msg": "USER_MODULE_DEPOSIT_EXPECTED"
},
{
"code": 6039,
"name": "ExchangePriceZero",
"msg": "LIQUIDITY_CALCS_EXCHANGE_PRICE_ZERO"
},
{
"code": 6040,
"name": "UnsupportedRateVersion",
"msg": "LIQUIDITY_CALCS_UNSUPPORTED_RATE_VERSION"
},
{
"code": 6041,
"name": "BorrowRateNegative",
"msg": "LIQUIDITY_CALCS_BORROW_RATE_NEGATIVE"
},
{
"code": 6042,
"name": "ProtocolLockdown",
"msg": "PROTOCOL_LOCKDOWN"
},
{
"code": 6043,
"name": "TokenLockDown",
"msg": "TOKEN_LOCKED_DOWN"
},
{
"code": 6044,
"name": "TokenAlreadyLocked",
"msg": "TOKEN_ALREADY_LOCKED"
},
{
"code": 6045,
"name": "TokenAlreadyUnlocked",
"msg": "TOKEN_ALREADY_UNLOCKED"
},
{
"code": 6046,
"name": "OperateSkipTransferInvalid",
"msg": "USER_MODULE_OPERATE_SKIP_TRANSFER_INVALID"
}
],
"types": [
{
"name": "AddressBool",
"type": {
"kind": "struct",
"fields": [
{
"name": "addr",
"type": "pubkey"
},
{
"name": "value",
"type": "bool"
}
]
}
},
{
"name": "AddressU8",
"type": {
"kind": "struct",
"fields": [
{
"name": "addr",
"type": "pubkey"
},
{
"name": "value",
"type": "u8"
}
]
}
},
{
"name": "AuthorizationList",
"type": {
"kind": "struct",
"fields": [
{
"name": "auth_users",
"type": {
"vec": "pubkey"
}
},
{
"name": "guardians",
"type": {
"vec": "pubkey"
}
},
{
"name": "user_classes",
"type": {
"vec": {
"defined": {
"name": "UserClass"
}
}
}
}
]
}
},
{
"name": "Liquidity",
"type": {
"kind": "struct",
"fields": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "revenue_collector",
"type": "pubkey"
},
{
"name": "status",
"type": "bool"
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "LogBorrowRateCap",
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"type": "pubkey"
}
]
}
},
{
"name": "LogChangeStatus",
"type": {
"kind": "struct",
"fields": [
{
"name": "new_status",
"type": "bool"
}
]
}
},
{
"name": "LogClaim",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "token",
"type": "pubkey"
},
{
"name": "recipient",
"type": "pubkey"
},
{
"name": "amount",
"type": "u64"
}
]
}
},
{
"name": "LogCollectRevenue",
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"type": "pubkey"
},
{
"name": "revenue_amount",
"type": "u128"
}
]
}
},
{
"name": "LogOperate",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "token",
"type": "pubkey"
},
{
"name": "supply_amount",
"type": "i128"
},
{
"name": "borrow_amount",
"type": "i128"
},
{
"name": "withdraw_to",
"type": "pubkey"
},
{
"name": "borrow_to",
"type": "pubkey"
},
{
"name": "supply_exchange_price",
"type": "u64"
},
{
"name": "borrow_exchange_price",
"type": "u64"
}
]
}
},
{
"name": "LogPauseUser",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "mint",
"type": "pubkey"
},
{
"name": "status",
"type": "u8"
}
]
}
},
{
"name": "LogTokenLockdown",
"type": {
"kind": "struct",
"fields": [
{
"name": "mint",
"type": "pubkey"
},
{
"name": "suspend",
"type": "bool"
}
]
}
},
{
"name": "LogUnpauseUser",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "mint",
"type": "pubkey"
},
{
"name": "status",
"type": "u8"
}
]
}
},
{
"name": "LogUpdateAuthority",
"type": {
"kind": "struct",
"fields": [
{
"name": "new_authority",
"type": "pubkey"
}
]
}
},
{
"name": "LogUpdateAuths",
"type": {
"kind": "struct",
"fields": [
{
"name": "auth_status",
"type": {
"vec": {
"defined": {
"name": "AddressBool"
}
}
}
}
]
}
},
{
"name": "LogUpdateExchangePrices",
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"type": "pubkey"
},
{
"name": "supply_exchange_price",
"type": "u128"
},
{
"name": "borrow_exchange_price",
"type": "u128"
},
{
"name": "borrow_rate",
"type": "u16"
},
{
"name": "utilization",
"type": "u16"
}
]
}
},
{
"name": "LogUpdateGuardians",
"type": {
"kind": "struct",
"fields": [
{
"name": "guardian_status",
"type": {
"vec": {
"defined": {
"name": "AddressBool"
}
}
}
}
]
}
},
{
"name": "LogUpdateRateDataV1",
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"type": "pubkey"
},
{
"name": "rate_data",
"type": {
"defined": {
"name": "RateDataV1Params"
}
}
}
]
}
},
{
"name": "LogUpdateRateDataV2",
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"type": "pubkey"
},
{
"name": "rate_data",
"type": {
"defined": {
"name": "RateDataV2Params"
}
}
}
]
}
},
{
"name": "LogUpdateRevenueCollector",
"type": {
"kind": "struct",
"fields": [
{
"name": "revenue_collector",
"type": "pubkey"
}
]
}
},
{
"name": "LogUpdateTokenConfigs",
"type": {
"kind": "struct",
"fields": [
{
"name": "token_config",
"type": {
"defined": {
"name": "TokenConfig"
}
}
}
]
}
},
{
"name": "LogUpdateUserBorrowConfigs",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "token",
"type": "pubkey"
},
{
"name": "user_borrow_config",
"type": {
"defined": {
"name": "UserBorrowConfig"
}
}
}
]
}
},
{
"name": "LogUpdateUserClass",
"type": {
"kind": "struct",
"fields": [
{
"name": "user_class",
"type": {
"vec": {
"defined": {
"name": "AddressU8"
}
}
}
}
]
}
},
{
"name": "LogUpdateUserSupplyConfigs",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "token",
"type": "pubkey"
},
{
"name": "user_supply_config",
"type": {
"defined": {
"name": "UserSupplyConfig"
}
}
}
]
}
},
{
"name": "LogUpdateUserWithdrawalLimit",
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "token",
"type": "pubkey"
},
{
"name": "new_limit",
"type": "u128"
}
]
}
},
{
"name": "RateDataV1Params",
"docs": ["@notice struct to set borrow rate data for version 1"],
"type": {
"kind": "struct",
"fields": [
{
"name": "kink",
"docs": ["", "@param kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100"],
"type": "u128"
},
{
"name": "rate_at_utilization_zero",
"docs": [
"",
"@param rateAtUtilizationZero desired borrow rate when utilization is zero. in 1e2: 100% = 10_000; 1% = 100",
"i.e. constant minimum borrow rate",
"e.g. at utilization = 0.01% rate could still be at least 4% (rateAtUtilizationZero would be 400 then)"
],
"type": "u128"
},
{
"name": "rate_at_utilization_kink",
"docs": [
"",
"@param rateAtUtilizationKink borrow rate when utilization is at kink. in 1e2: 100% = 10_000; 1% = 100",
"e.g. when rate should be 7% at kink then rateAtUtilizationKink would be 700"
],
"type": "u128"
},
{
"name": "rate_at_utilization_max",
"docs": [
"",
"@param rateAtUtilizationMax borrow rate when utilization is maximum at 100%. in 1e2: 100% = 10_000; 1% = 100",
"e.g. when rate should be 125% at 100% then rateAtUtilizationMax would be 12_500"
],
"type": "u128"
}
]
}
},
{
"name": "RateDataV2Params",
"docs": ["@notice struct to set borrow rate data for version 2"],
"type": {
"kind": "struct",
"fields": [
{
"name": "kink1",
"docs": [
"",
"@param kink1 first kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100",
"utilization below kink 1 usually means slow increase in rate, once utilization is above kink 1 borrow rate increases faster"
],
"type": "u128"
},
{
"name": "kink2",
"docs": [
"",
"@param kink2 second kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100",
"utilization below kink 2 usually means slow / medium increase in rate, once utilization is above kink 2 borrow rate increases fast"
],
"type": "u128"
},
{
"name": "rate_at_utilization_zero",
"docs": [
"",
"@param rateAtUtilizationZero desired borrow rate when utilization is zero. in 1e2: 100% = 10_000; 1% = 100",
"i.e. constant minimum borrow rate",
"e.g. at utilization = 0.01% rate could still be at least 4% (rateAtUtilizationZero would be 400 then)"
],
"type": "u128"
},
{
"name": "rate_at_utilization_kink1",
"docs": [
"",
"@param rateAtUtilizationKink1 desired borrow rate when utilization is at first kink. in 1e2: 100% = 10_000; 1% = 100",
"e.g. when rate should be 7% at first kink then rateAtUtilizationKink would be 700"
],
"type": "u128"
},
{
"name": "rate_at_utilization_kink2",
"docs": [
"",
"@param rateAtUtilizationKink2 desired borrow rate when utilization is at second kink. in 1e2: 100% = 10_000; 1% = 100",
"e.g. when rate should be 7% at second kink then rateAtUtilizationKink would be 1_200"
],
"type": "u128"
},
{
"name": "rate_at_utilization_max",
"docs": [
"",
"@param rateAtUtilizationMax desired borrow rate when utilization is maximum at 100%. in 1e2: 100% = 10_000; 1% = 100",
"e.g. when rate should be 125% at 100% then rateAtUtilizationMax would be 12_500"
],
"type": "u128"
}
]
}
},
{
"name": "RateModel",
"docs": ["Interest rate model data"],
"serialization": "bytemuck",
"repr": {
"kind": "c",
"packed": true
},
"type": {
"kind": "struct",
"fields": [
{
"name": "mint",
"type": "pubkey"
},
{
"name": "version",
"type": "u8"
},
{
"name": "rate_at_zero",
"type": "u16"
},
{
"name": "kink1_utilization",
"type": "u16"
},
{
"name": "rate_at_kink1",
"type": "u16"
},
{
"name": "rate_at_max",
"type": "u16"
},
{
"name": "kink2_utilization",
"type": "u16"
},
{
"name": "rate_at_kink2",
"type": "u16"
}
]
}
},
{
"name": "TokenConfig",
"docs": ["@notice struct to set token config"],
"type": {
"kind": "struct",
"fields": [
{
"name": "token",
"docs": ["", "@param token address"],
"type": "pubkey"
},
{
"name": "fee",
"docs": [
"",
"@param fee charges on borrower's interest. in 1e2: 100% = 10_000; 1% = 100"
],
"type": "u128"
},
{
"name": "max_utilization",
"docs": [
"",
"@param maxUtilization maximum allowed utilization. in 1e2: 100% = 10_000; 1% = 100",
"set to 100% to disable and have default limit of 100% (avoiding SLOAD)."
],
"type": "u128"
}
]
}
},
{
"name": "TokenReserve",
"docs": ["Token configuration and exchange prices"],
"serialization": "bytemuck",
"repr": {
"kind": "c",
"packed": true
},
"type": {
"kind": "struct",
"fields": [
{
"name": "mint",
"type": "pubkey"
},
{
"name": "vault",
"type": "pubkey"
},
{
"name": "borrow_rate",
"type": "u16"
},
{
"name": "fee_on_interest",
"type": "u16"
},
{
"name": "last_utilization",
"type": "u16"
},
{
"name": "last_update_timestamp",
"type": "u64"
},
{
"name": "supply_exchange_price",
"type": "u64"
},
{
"name": "borrow_exchange_price",
"type": "u64"
},
{
"name": "max_utilization",
"type": "u16"
},
{
"name": "total_supply_with_interest",
"type": "u64"
},
{
"name": "total_supply_interest_free",
"type": "u64"
},
{
"name": "total_borrow_with_interest",
"type": "u64"
},
{
"name": "total_borrow_interest_free",
"type": "u64"
},
{
"name": "total_claim_amount",
"type": "u64"
},
{
"name": "interacting_protocol",
"type": "pubkey"
},
{
"name": "interacting_timestamp",
"type": "u64"
},
{
"name": "interacting_balance",
"type": "u64"
}
]
}
},
{
"name": "TransferType",
"type": {
"kind": "enum",
"variants": [
{
"name": "SKIP"
},
{
"name": "DIRECT"
},
{
"name": "CLAIM"
}
]
}
},
{
"name": "UserBorrowConfig",
"docs": ["@notice struct to set user borrow & payback config"],
"type": {
"kind": "struct",
"fields": [
{
"name": "mode",
"docs": ["", "@param mode: 0 = without interest. 1 = with interest"],
"type": "u8"
},
{
"name": "expand_percent",
"docs": [
"",
"@param expandPercent debt limit expand percent. in 1e2: 100% = 10_000; 1% = 100",
"Also used to calculate rate at which debt limit should decrease (instant)."
],
"type": "u128"
},
{
"name": "expand_duration",
"docs": [
"",
"@param expandDuration debt limit expand duration in seconds.",
"used to calculate rate together with expandPercent"
],
"type": "u128"
},
{
"name": "base_debt_ceiling",
"docs": [
"",
"@param baseDebtCeiling base borrow limit. until here, borrow limit remains as baseDebtCeiling",
"(user can borrow until this point at once without stepped expansion). Above this, automated limit comes in place.",
"amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:",
"with interest -> raw, without interest -> normal"
],
"type": "u128"
},
{
"name": "max_debt_ceiling",
"docs": [
"",
"@param maxDebtCeiling max borrow ceiling, maximum amount the user can borrow.",
"amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:",
"with interest -> raw, without interest -> normal"
],
"type": "u128"
}
]
}
},
{
"name": "UserBorrowPosition",
"docs": ["User borrow position"],
"serialization": "bytemuck",
"repr": {
"kind": "c",
"packed": true
},
"type": {
"kind": "struct",
"fields": [
{
"name": "protocol",
"type": "pubkey"
},
{
"name": "mint",
"type": "pubkey"
},
{
"name": "with_interest",
"type": "u8"
},
{
"name": "amount",
"type": "u64"
},
{
"name": "debt_ceiling",
"type": "u64"
},
{
"name": "last_update",
"type": "u64"
},
{
"name": "expand_pct",
"type": "u16"
},
{
"name": "expand_duration",
"type": "u32"
},
{
"name": "base_debt_ceiling",
"type": "u64"
},
{
"name": "max_debt_ceiling",
"type": "u64"
},
{
"name": "status",
"type": "u8"
}
]
}
},
{
"name": "UserClaim",
"serialization": "bytemuck",
"repr": {
"kind": "c",
"packed": true
},
"type": {
"kind": "struct",
"fields": [
{
"name": "user",
"type": "pubkey"
},
{
"name": "amount",
"type": "u64"
},
{
"name": "mint",
"type": "pubkey"
}
]
}
},
{
"name": "UserClass",
"type": {
"kind": "struct",
"fields": [
{
"name": "addr",
"type": "pubkey"
},
{
"name": "class",
"type": "u8"
}
]
}
},
{
"name": "UserSupplyConfig",
"docs": ["@notice struct to set user supply & withdrawal config"],
"type": {
"kind": "struct",
"fields": [
{
"name": "mode",
"docs": ["", "@param mode: 0 = without interest. 1 = with interest"],
"type": "u8"
},
{
"name": "expand_percent",
"docs": [
"",
"@param expandPercent withdrawal limit expand percent. in 1e2: 100% = 10_000; 1% = 100",
"Also used to calculate rate at which withdrawal limit should decrease (instant)."
],
"type": "u128"
},
{
"name": "expand_duration",
"docs": [
"",
"@param expandDuration withdrawal limit expand duration in seconds.",
"used to calculate rate together with expandPercent"
],
"type": "u128"
},
{
"name": "base_withdrawal_limit",
"docs": [
"",
"@param baseWithdrawalLimit base limit, below this, user can withdraw the entire amount.",
"amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:",
"with interest -> raw, without interest -> normal"
],
"type": "u128"
}
]
}
},
{
"name": "UserSupplyPosition",
"docs": ["User supply position"],
"serialization": "bytemuck",
"repr": {
"kind": "c",
"packed": true
},
"type": {
"kind": "struct",
"fields": [
{
"name": "protocol",
"type": "pubkey"
},
{
"name": "mint",
"type": "pubkey"
},
{
"name": "with_interest",
"type": "u8"
},
{
"name": "amount",
"type": "u64"
},
{
"name": "withdrawal_limit",
"type": "u64"
},
{
"name": "decay_amount",
"type": "u64"
},
{
"name": "last_update",
"type": "u64"
},
{
"name": "expand_pct",
"type": "u16"
},
{
"name": "expand_duration",
"type": "u32"
},
{
"name": "decay_duration",
"type": "u32"
},
{
"name": "base_withdrawal_limit",
"type": "u64"
},
{
"name": "status",
"type": "u8"
}
]
}
}
]
}