{
  "address": "boopURdYr29D4C4BX7UWfi7rHQyinzCb4XRac3SHR85",
  "metadata": {
    "name": "reward_pool",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Created with Anchor"
  },
  "instructions": [
    {
      "name": "add_funders",
      "discriminator": [
        23,
        209,
        67,
        31,
        0,
        206,
        198,
        249
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "authority",
          "writable": true,
          "signer": true,
          "relations": [
            "pool"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "funders",
          "type": {
            "vec": "pubkey"
          }
        }
      ]
    },
    {
      "name": "cancel_authority_transfer",
      "discriminator": [
        94,
        131,
        125,
        184,
        183,
        24,
        125,
        229
      ],
      "accounts": [
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "pool"
          ]
        },
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_reward",
      "discriminator": [
        149,
        95,
        181,
        242,
        94,
        90,
        158,
        162
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "staking_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "reward_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "staking_vault",
          "writable": true
        },
        {
          "name": "reward_vault",
          "writable": true
        },
        {
          "name": "user_reward_mint_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "staker"
              },
              {
                "kind": "const",
                "value": [
                  6,
                  221,
                  246,
                  225,
                  215,
                  101,
                  161,
                  147,
                  217,
                  203,
                  225,
                  70,
                  206,
                  235,
                  121,
                  172,
                  28,
                  180,
                  133,
                  237,
                  95,
                  91,
                  55,
                  145,
                  58,
                  140,
                  245,
                  133,
                  126,
                  255,
                  0,
                  169
                ]
              },
              {
                "kind": "account",
                "path": "reward_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": "user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  117,
                  115,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "staker"
              }
            ]
          }
        },
        {
          "name": "staker",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": []
    },
    {
      "name": "close_user",
      "discriminator": [
        86,
        219,
        138,
        140,
        236,
        24,
        118,
        200
      ],
      "accounts": [
        {
          "name": "user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  117,
                  115,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "staker"
              }
            ]
          }
        },
        {
          "name": "staker",
          "writable": true,
          "signer": true
        }
      ],
      "args": []
    },
    {
      "name": "complete_authority_transfer",
      "discriminator": [
        81,
        233,
        91,
        132,
        175,
        31,
        151,
        141
      ],
      "accounts": [
        {
          "name": "pending_authority",
          "signer": true,
          "relations": [
            "pool"
          ]
        },
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "fund",
      "discriminator": [
        218,
        188,
        111,
        221,
        152,
        113,
        174,
        7
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "staking_vault",
          "writable": true
        },
        {
          "name": "reward_vault",
          "writable": true
        },
        {
          "name": "funder_token_account",
          "writable": true
        },
        {
          "name": "staking_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "reward_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "funder",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initialize_pool",
      "discriminator": [
        95,
        180,
        10,
        172,
        84,
        174,
        232,
        40
      ],
      "accounts": [
        {
          "name": "staking_mint"
        },
        {
          "name": "staking_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pool"
              },
              {
                "kind": "const",
                "value": [
                  6,
                  221,
                  246,
                  225,
                  215,
                  101,
                  161,
                  147,
                  217,
                  203,
                  225,
                  70,
                  206,
                  235,
                  121,
                  172,
                  28,
                  180,
                  133,
                  237,
                  95,
                  91,
                  55,
                  145,
                  58,
                  140,
                  245,
                  133,
                  126,
                  255,
                  0,
                  169
                ]
              },
              {
                "kind": "account",
                "path": "staking_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": "reward_mint"
        },
        {
          "name": "reward_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pool"
              },
              {
                "kind": "const",
                "value": [
                  6,
                  221,
                  246,
                  225,
                  215,
                  101,
                  161,
                  147,
                  217,
                  203,
                  225,
                  70,
                  206,
                  235,
                  121,
                  172,
                  28,
                  180,
                  133,
                  237,
                  95,
                  91,
                  55,
                  145,
                  58,
                  140,
                  245,
                  133,
                  126,
                  255,
                  0,
                  169
                ]
              },
              {
                "kind": "account",
                "path": "reward_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": "authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": [
        {
          "name": "reward_duration",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initiate_authority_transfer",
      "discriminator": [
        210,
        43,
        101,
        215,
        119,
        140,
        106,
        218
      ],
      "accounts": [
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "pool"
          ]
        },
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "new_authority",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "remove_funders",
      "discriminator": [
        213,
        157,
        8,
        111,
        200,
        42,
        112,
        92
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "authority",
          "writable": true,
          "signer": true,
          "relations": [
            "pool"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "funders",
          "type": {
            "vec": "pubkey"
          }
        }
      ]
    },
    {
      "name": "stake",
      "discriminator": [
        206,
        176,
        202,
        18,
        200,
        209,
        179,
        108
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "staking_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "staking_vault",
          "writable": true
        },
        {
          "name": "user_staking_mint_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "staker"
              },
              {
                "kind": "const",
                "value": [
                  6,
                  221,
                  246,
                  225,
                  215,
                  101,
                  161,
                  147,
                  217,
                  203,
                  225,
                  70,
                  206,
                  235,
                  121,
                  172,
                  28,
                  180,
                  133,
                  237,
                  95,
                  91,
                  55,
                  145,
                  58,
                  140,
                  245,
                  133,
                  126,
                  255,
                  0,
                  169
                ]
              },
              {
                "kind": "account",
                "path": "staking_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": "user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  117,
                  115,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "staker"
              }
            ]
          }
        },
        {
          "name": "staker",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "unstake",
      "discriminator": [
        90,
        95,
        107,
        42,
        205,
        124,
        50,
        225
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "staking_mint",
          "relations": [
            "pool"
          ]
        },
        {
          "name": "staking_vault",
          "writable": true
        },
        {
          "name": "user_staking_mint_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "staker"
              },
              {
                "kind": "const",
                "value": [
                  6,
                  221,
                  246,
                  225,
                  215,
                  101,
                  161,
                  147,
                  217,
                  203,
                  225,
                  70,
                  206,
                  235,
                  121,
                  172,
                  28,
                  180,
                  133,
                  237,
                  95,
                  91,
                  55,
                  145,
                  58,
                  140,
                  245,
                  133,
                  126,
                  255,
                  0,
                  169
                ]
              },
              {
                "kind": "account",
                "path": "staking_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": "user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  117,
                  115,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "staker"
              }
            ]
          }
        },
        {
          "name": "staker",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "update_pool",
      "discriminator": [
        239,
        214,
        170,
        78,
        36,
        35,
        30,
        34
      ],
      "accounts": [
        {
          "name": "pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              }
            ]
          }
        },
        {
          "name": "authority",
          "writable": true,
          "signer": true,
          "relations": [
            "pool"
          ]
        }
      ],
      "args": [
        {
          "name": "min_staked_amount",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Pool",
      "discriminator": [
        241,
        154,
        109,
        4,
        17,
        177,
        109,
        188
      ]
    },
    {
      "name": "User",
      "discriminator": [
        159,
        117,
        95,
        227,
        239,
        151,
        58,
        236
      ]
    }
  ],
  "events": [
    {
      "name": "AuthorityTransferCancelledEvent",
      "discriminator": [
        192,
        121,
        140,
        224,
        229,
        96,
        13,
        143
      ]
    },
    {
      "name": "AuthorityTransferCompletedEvent",
      "discriminator": [
        163,
        132,
        217,
        128,
        243,
        92,
        90,
        249
      ]
    },
    {
      "name": "AuthorityTransferInitiatedEvent",
      "discriminator": [
        121,
        246,
        95,
        155,
        229,
        109,
        148,
        205
      ]
    },
    {
      "name": "FundedEvent",
      "discriminator": [
        184,
        241,
        25,
        25,
        217,
        159,
        102,
        174
      ]
    },
    {
      "name": "FundersAddedEvent",
      "discriminator": [
        150,
        4,
        253,
        198,
        25,
        12,
        74,
        94
      ]
    },
    {
      "name": "FundersRemovedEvent",
      "discriminator": [
        213,
        79,
        125,
        2,
        211,
        189,
        39,
        237
      ]
    },
    {
      "name": "PoolUpdatedEvent",
      "discriminator": [
        128,
        39,
        94,
        221,
        230,
        222,
        127,
        141
      ]
    },
    {
      "name": "RewardClaimedEvent",
      "discriminator": [
        246,
        43,
        215,
        228,
        82,
        49,
        230,
        56
      ]
    },
    {
      "name": "StakedEvent",
      "discriminator": [
        81,
        221,
        186,
        176,
        240,
        160,
        193,
        69
      ]
    },
    {
      "name": "UnstakedEvent",
      "discriminator": [
        186,
        174,
        247,
        231,
        242,
        159,
        68,
        128
      ]
    },
    {
      "name": "UserClosedEvent",
      "discriminator": [
        90,
        192,
        139,
        28,
        156,
        216,
        120,
        169
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "AccountNotEmpty",
      "msg": "Account not empty"
    },
    {
      "code": 6001,
      "name": "DurationTooShort",
      "msg": "Duration too short"
    },
    {
      "code": 6002,
      "name": "FunderAlreadyAdded",
      "msg": "Funder already added"
    },
    {
      "code": 6003,
      "name": "FunderDoesNotExist",
      "msg": "Funder does not exist"
    },
    {
      "code": 6004,
      "name": "InsufficientBalance",
      "msg": "Insufficient balance"
    },
    {
      "code": 6005,
      "name": "MinimumStakedAmountNotMet",
      "msg": "Minimum staked amount not met"
    },
    {
      "code": 6006,
      "name": "NoAuthorityTransferInProgress",
      "msg": "No authority transfer in progress"
    },
    {
      "code": 6007,
      "name": "NoRewardToClaim",
      "msg": "No reward to claim"
    },
    {
      "code": 6008,
      "name": "Unauthorized",
      "msg": "Unauthorized"
    },
    {
      "code": 6009,
      "name": "ZeroAmount",
      "msg": "Zero amount"
    },
    {
      "code": 6010,
      "name": "ZeroRewardRate",
      "msg": "Zero reward rate"
    }
  ],
  "types": [
    {
      "name": "AuthorityTransferCancelledEvent",
      "type": {
        "kind": "struct",
        "fields": []
      }
    },
    {
      "name": "AuthorityTransferCompletedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "old_authority",
            "type": "pubkey"
          },
          {
            "name": "new_authority",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "AuthorityTransferInitiatedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "old_authority",
            "type": "pubkey"
          },
          {
            "name": "new_authority",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "FundedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "funder",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FundersAddedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "funders",
            "type": {
              "vec": "pubkey"
            }
          }
        ]
      }
    },
    {
      "name": "FundersRemovedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "funders",
            "type": {
              "vec": "pubkey"
            }
          }
        ]
      }
    },
    {
      "name": "Pool",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "docs": [
              "authority of the pool."
            ],
            "type": "pubkey"
          },
          {
            "name": "pending_authority",
            "docs": [
              "pending authority of the pool. Used for 2 step authority transfer."
            ],
            "type": "pubkey"
          },
          {
            "name": "staking_mint",
            "docs": [
              "Mint of the token that can be staked."
            ],
            "type": "pubkey"
          },
          {
            "name": "reward_mint",
            "docs": [
              "Mint of the reward A token."
            ],
            "type": "pubkey"
          },
          {
            "name": "reward_duration",
            "docs": [
              "The period which rewards are linearly distributed."
            ],
            "type": "u64"
          },
          {
            "name": "reward_duration_end",
            "docs": [
              "The timestamp at which the current reward period ends."
            ],
            "type": "u64"
          },
          {
            "name": "last_update_time",
            "docs": [
              "The last time reward states were updated."
            ],
            "type": "u64"
          },
          {
            "name": "reward_rate",
            "docs": [
              "Rate of reward distribution."
            ],
            "type": "u64"
          },
          {
            "name": "reward_per_token_stored",
            "docs": [
              "Last calculated reward per pool token."
            ],
            "type": "u128"
          },
          {
            "name": "user_stake_count",
            "docs": [
              "Users staked"
            ],
            "type": "u32"
          },
          {
            "name": "funders",
            "docs": [
              "authorized funders"
            ],
            "type": {
              "vec": "pubkey"
            }
          },
          {
            "name": "min_staked_amount",
            "docs": [
              "minimum amount of staked tokens to be eligible for rewards"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "PoolUpdatedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "min_staked_amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "RewardClaimedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "staker",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "StakedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "staker",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "UnstakedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "staker",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "User",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "reward_per_token_complete",
            "docs": [
              "The amount of token claimed."
            ],
            "type": "u128"
          },
          {
            "name": "reward_per_token_pending",
            "docs": [
              "The amount of token pending claim."
            ],
            "type": "u64"
          },
          {
            "name": "balance_staked",
            "docs": [
              "The amount staked."
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "UserClosedEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "staker",
            "type": "pubkey"
          }
        ]
      }
    }
  ]
}