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"
    }
  }