IDL
If you’re more experienced, you can connect with the APY programs directly through its IDL
masterchef.json
{
"version": "0.1.0",
"name": "masterchef",
"instructions": [
{
"name": "initialize",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "metadata",
"isMut": true,
"isSigner": false
},
{
"name": "mint",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
},
{
"name": "tokenMetadataProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "rewardTokensPerBlock",
"type": "u64"
},
{
"name": "metadata",
"type": {
"defined": "InitTokenParams"
}
}
]
},
{
"name": "mint",
"accounts": [
{
"name": "state",
"isMut": false,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "mint",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "associatedTokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rent",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "amount",
"type": "u64"
}
]
},
{
"name": "updateReward",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "rewardPerSec",
"type": "u64"
}
]
},
{
"name": "addPool",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
},
{
"name": "mint",
"isMut": false,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "allocPoint",
"type": "u16"
},
{
"name": "amountTokenRequired",
"type": "u64"
}
]
},
{
"name": "setPoints",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "points",
"type": "u16"
}
]
},
{
"name": "deposit",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
},
{
"name": "userPool",
"isMut": true,
"isSigner": false
},
{
"name": "from",
"isMut": true,
"isSigner": false
},
{
"name": "to",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "mint",
"isMut": false,
"isSigner": false
},
{
"name": "admin",
"isMut": true,
"isSigner": false,
"docs": [
"CHECK : Admin account that will receive the fees"
]
}
],
"args": [
{
"name": "amount",
"type": "u64"
}
]
},
{
"name": "withdraw",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
},
{
"name": "userPool",
"isMut": true,
"isSigner": false
},
{
"name": "to",
"isMut": true,
"isSigner": false
},
{
"name": "from",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "mint",
"isMut": false,
"isSigner": false
},
{
"name": "admin",
"isMut": true,
"isSigner": false,
"docs": [
"CHECK : Admin account that will receive the fees"
]
}
],
"args": [
{
"name": "amount",
"type": "u64"
}
]
},
{
"name": "harvest",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
},
{
"name": "userPool",
"isMut": true,
"isSigner": false
},
{
"name": "mintTo",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "associatedTokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "rewardToken",
"isMut": true,
"isSigner": false
}
],
"args": []
},
{
"name": "massUpdateEpoch",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "allocPoints",
"type": {
"vec": "u16"
}
}
]
},
{
"name": "setFees",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "fees",
"type": {
"defined": "Fees"
}
}
]
},
{
"name": "enablePool",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "enabled",
"type": "bool"
}
]
},
{
"name": "setMultiplier",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "multiplier",
"type": "u16"
}
]
},
{
"name": "setAmountTokenRequired",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "amountTokenRequired",
"type": "u64"
}
]
},
{
"name": "setLockTime",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
}
],
"args": [
{
"name": "lockTime",
"type": "i64"
}
]
},
{
"name": "setTiper",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "tiper",
"type": "publicKey"
}
]
}
],
"accounts": [
{
"name": "State",
"type": {
"kind": "struct",
"fields": [
{
"name": "admin",
"type": "publicKey"
},
{
"name": "rewardTokensPerSec",
"type": "u64"
},
{
"name": "poolCount",
"type": "u64"
},
{
"name": "totalAllocPoint",
"type": "u64"
},
{
"name": "depositFee",
"type": "u64"
},
{
"name": "withdrawFee",
"type": "u64"
},
{
"name": "tiper",
"type": "publicKey"
}
]
}
},
{
"name": "PoolInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "id",
"type": "u64"
},
{
"name": "accTokenPerShare",
"type": "u128"
},
{
"name": "lastRewardTime",
"type": "u64"
},
{
"name": "allocPoint",
"type": "u16"
},
{
"name": "mint",
"type": "publicKey"
},
{
"name": "enabled",
"type": "bool"
},
{
"name": "amountTokenRequired",
"type": "u64"
},
{
"name": "totalStaked",
"type": "u64"
},
{
"name": "multiplier",
"type": "u16"
},
{
"name": "feesSinceLastEpoch",
"type": "u64"
},
{
"name": "creationTime",
"type": "u64"
},
{
"name": "lockTime",
"type": "i64"
}
]
}
},
{
"name": "UserInfo",
"type": {
"kind": "struct",
"fields": [
{
"name": "amount",
"type": "u64"
},
{
"name": "rewardDebt",
"type": "u64"
},
{
"name": "lockedUntil",
"type": "i64"
}
]
}
}
],
"types": [
{
"name": "Fees",
"type": {
"kind": "struct",
"fields": [
{
"name": "depositFee",
"type": "u64"
},
{
"name": "withdrawFee",
"type": "u64"
}
]
}
},
{
"name": "InitTokenParams",
"type": {
"kind": "struct",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "symbol",
"type": "string"
},
{
"name": "uri",
"type": "string"
},
{
"name": "decimals",
"type": "u8"
}
]
}
}
],
"events": [
{
"name": "DepositEvent",
"fields": [
{
"name": "user",
"type": "publicKey",
"index": false
},
{
"name": "poolId",
"type": "u64",
"index": false
},
{
"name": "amount",
"type": "u64",
"index": false
}
]
},
{
"name": "WithdrawEvent",
"fields": [
{
"name": "user",
"type": "publicKey",
"index": false
},
{
"name": "poolId",
"type": "u64",
"index": false
},
{
"name": "amount",
"type": "u64",
"index": false
}
]
},
{
"name": "HarvestEvent",
"fields": [
{
"name": "user",
"type": "publicKey",
"index": false
},
{
"name": "poolId",
"type": "u64",
"index": false
},
{
"name": "amount",
"type": "u64",
"index": false
}
]
}
],
"errors": [
{
"code": 6000,
"name": "OnlyAdmin",
"msg": "Only the admin can call this function"
},
{
"code": 6001,
"name": "PoolNotEnabled",
"msg": "Pool is not enabled"
},
{
"code": 6002,
"name": "MathOverflow",
"msg": "Math overflow"
},
{
"code": 6003,
"name": "PoolDisabled",
"msg": "Pool not enabled"
},
{
"code": 6004,
"name": "InvalidFeesReceiver",
"msg": "Invalid fees receiver"
},
{
"code": 6005,
"name": "InvalidToken",
"msg": "Invalid Token"
},
{
"code": 6006,
"name": "NotEnoughTokens",
"msg": "Not enough tokens"
},
{
"code": 6007,
"name": "TokenLocked",
"msg": "Token are locked"
}
],
"metadata": {
"address": "FRR8RDWvoKSYTSvhrZ4JCPSyozuxCNCwd3spkgRA5zYm"
}
}
tips_handler.json
{
"version": "0.1.0",
"name": "apy_tiper",
"instructions": [
{
"name": "initialize",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "masterchef",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "steps",
"type": {
"vec": "u64"
}
},
{
"name": "multipliers",
"type": "bytes"
}
]
},
{
"name": "tips",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
},
{
"name": "pool",
"isMut": true,
"isSigner": false
},
{
"name": "poolTips",
"isMut": true,
"isSigner": false
},
{
"name": "masterchefState",
"isMut": true,
"isSigner": false
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
},
{
"name": "masterchef",
"isMut": false,
"isSigner": false
},
{
"name": "admin",
"isMut": true,
"isSigner": false,
"docs": [
"CHECK : Admin account that will receive the fees"
]
}
],
"args": [
{
"name": "amount",
"type": "u64"
}
]
},
{
"name": "setMasterchef",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "masterchef",
"type": "publicKey"
},
{
"name": "masterchefState",
"type": "publicKey"
}
]
},
{
"name": "setStepsAndMultipliers",
"accounts": [
{
"name": "state",
"isMut": false,
"isSigner": false
},
{
"name": "user",
"isMut": true,
"isSigner": true
}
],
"args": [
{
"name": "steps",
"type": {
"vec": "u64"
}
},
{
"name": "multipliers",
"type": "bytes"
}
]
}
],
"accounts": [
{
"name": "State",
"type": {
"kind": "struct",
"fields": [
{
"name": "admin",
"type": "publicKey"
},
{
"name": "masterchef",
"type": "publicKey"
},
{
"name": "masterchefState",
"type": "publicKey"
},
{
"name": "steps",
"type": {
"vec": "u64"
}
},
{
"name": "multipliers",
"type": "bytes"
}
]
}
},
{
"name": "Tips",
"type": {
"kind": "struct",
"fields": [
{
"name": "amount",
"type": "u64"
}
]
}
}
],
"errors": [
{
"code": 6000,
"name": "OnlyAdmin",
"msg": "Only the admin can call this function"
},
{
"code": 6001,
"name": "StepMultiplierSize",
"msg": "Step and multiplier size are different"
},
{
"code": 6002,
"name": "InvalidFeesReceiver",
"msg": "Invalid fees receiver"
},
{
"code": 6003,
"name": "InvalidPoolId",
"msg": "Invalid pool id"
},
{
"code": 6004,
"name": "Overflow",
"msg": "Overflow"
}
],
"metadata": {
"address": "o9H6J91sGRqUyzbBNENtnV4hAQpRm9kh7C3Mwunf7mB"
}
}