{
  "address": "mi7DC6qnESgL6TWdQn7xJBKqWwv2YiZVeoVuhpXhLvz",
  "metadata": {
    "name": "infini_stake",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "infinisvm staking program"
  },
  "instructions": [
    {
      "name": "accept_admin",
      "discriminator": [
        112,
        42,
        45,
        90,
        116,
        181,
        13,
        170
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "new_admin",
          "signer": true
        }
      ],
      "args": []
    },
    {
      "name": "claim_commission",
      "discriminator": [
        12,
        9,
        15,
        170,
        155,
        235,
        124,
        254
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "identity"
              }
            ]
          }
        },
        {
          "name": "identity_token_account",
          "writable": true
        },
        {
          "name": "stake_mint",
          "writable": true
        },
        {
          "name": "identity",
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "claim_rewards",
      "discriminator": [
        4,
        144,
        132,
        71,
        116,
        23,
        151,
        80
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "delegation",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  100,
                  101,
                  108,
                  101,
                  103,
                  97,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "owner"
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "owner_token_account",
          "writable": true
        },
        {
          "name": "stake_mint",
          "writable": true
        },
        {
          "name": "owner",
          "signer": true,
          "relations": [
            "delegation"
          ]
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "complete_unstake",
      "discriminator": [
        79,
        98,
        40,
        241,
        100,
        30,
        25,
        234
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "delegation",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  100,
                  101,
                  108,
                  101,
                  103,
                  97,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "owner"
              },
              {
                "kind": "account",
                "path": "delegation.validator_identity",
                "account": "StakeDelegation"
              }
            ]
          }
        },
        {
          "name": "stake_vault",
          "writable": true
        },
        {
          "name": "owner_token_account",
          "writable": true
        },
        {
          "name": "owner",
          "signer": true,
          "relations": [
            "delegation"
          ]
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "deactivate_validator",
      "discriminator": [
        188,
        227,
        224,
        187,
        231,
        52,
        3,
        147
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "arg",
                "path": "identity"
              }
            ]
          }
        },
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        }
      ],
      "args": [
        {
          "name": "identity",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "delegate",
      "discriminator": [
        90,
        147,
        75,
        178,
        85,
        88,
        4,
        137
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "delegation",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  100,
                  101,
                  108,
                  101,
                  103,
                  97,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "owner"
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "owner_token_account",
          "writable": true
        },
        {
          "name": "stake_vault",
          "writable": true
        },
        {
          "name": "stake_mint",
          "writable": true
        },
        {
          "name": "owner",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initialize",
      "discriminator": [
        175,
        175,
        109,
        31,
        13,
        152,
        155,
        237
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "stake_mint",
          "writable": true
        },
        {
          "name": "stake_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "config"
              },
              {
                "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": "stake_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": "admin",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "apy_bps",
          "type": "u16"
        },
        {
          "name": "cooldown_seconds",
          "type": "i64"
        }
      ]
    },
    {
      "name": "propose_admin",
      "discriminator": [
        121,
        214,
        199,
        212,
        87,
        39,
        117,
        234
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        }
      ],
      "args": [
        {
          "name": "new_admin",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "register_validator",
      "discriminator": [
        118,
        98,
        251,
        58,
        81,
        30,
        13,
        240
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "arg",
                "path": "identity"
              }
            ]
          }
        },
        {
          "name": "admin",
          "writable": true,
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "identity",
          "type": "pubkey"
        },
        {
          "name": "commission_bps",
          "type": "u16"
        }
      ]
    },
    {
      "name": "request_unstake",
      "discriminator": [
        44,
        154,
        110,
        253,
        160,
        202,
        54,
        34
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "delegation",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  100,
                  101,
                  108,
                  101,
                  103,
                  97,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "owner"
              },
              {
                "kind": "account",
                "path": "validator.identity",
                "account": "Validator"
              }
            ]
          }
        },
        {
          "name": "owner_token_account",
          "writable": true
        },
        {
          "name": "stake_mint",
          "writable": true
        },
        {
          "name": "owner",
          "signer": true,
          "relations": [
            "delegation"
          ]
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "set_apy",
      "discriminator": [
        161,
        152,
        30,
        236,
        6,
        157,
        152,
        254
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        }
      ],
      "args": [
        {
          "name": "new_apy_bps",
          "type": "u16"
        }
      ]
    },
    {
      "name": "set_commission",
      "discriminator": [
        193,
        212,
        22,
        184,
        185,
        232,
        22,
        187
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "validator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  108,
                  105,
                  100,
                  97,
                  116,
                  111,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "identity"
              }
            ]
          }
        },
        {
          "name": "identity",
          "signer": true
        }
      ],
      "args": [
        {
          "name": "new_commission_bps",
          "type": "u16"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "StakeDelegation",
      "discriminator": [
        165,
        164,
        214,
        92,
        159,
        39,
        35,
        117
      ]
    },
    {
      "name": "Validator",
      "discriminator": [
        108,
        40,
        172,
        51,
        190,
        198,
        22,
        15
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidAmount",
      "msg": "Amount must be greater than zero"
    },
    {
      "code": 6001,
      "name": "InvalidApy",
      "msg": "APY exceeds the configured maximum"
    },
    {
      "code": 6002,
      "name": "InvalidCommission",
      "msg": "Commission exceeds the configured maximum"
    },
    {
      "code": 6003,
      "name": "ValidatorInactive",
      "msg": "Validator is not active"
    },
    {
      "code": 6004,
      "name": "AlreadyInactive",
      "msg": "Validator is already inactive"
    },
    {
      "code": 6005,
      "name": "PendingUnstakeExists",
      "msg": "A pending unstake already exists for this delegation"
    },
    {
      "code": 6006,
      "name": "NoPendingUnstake",
      "msg": "No pending unstake to complete"
    },
    {
      "code": 6007,
      "name": "CooldownNotElapsed",
      "msg": "Cooldown has not elapsed"
    },
    {
      "code": 6008,
      "name": "NotAdmin",
      "msg": "Signer is not the admin"
    },
    {
      "code": 6009,
      "name": "Overflow",
      "msg": "Arithmetic overflow"
    }
  ],
  "types": [
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "pending_admin",
            "type": "pubkey"
          },
          {
            "name": "stake_mint",
            "type": "pubkey"
          },
          {
            "name": "stake_vault",
            "type": "pubkey"
          },
          {
            "name": "apy_bps",
            "type": "u16"
          },
          {
            "name": "cooldown_seconds",
            "type": "i64"
          },
          {
            "name": "last_accrue_ts",
            "type": "i64"
          },
          {
            "name": "acc_reward_per_share",
            "type": "u128"
          },
          {
            "name": "total_active_stake",
            "type": "u64"
          },
          {
            "name": "validator_count",
            "type": "u32"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "_reserved",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "StakeDelegation",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "owner",
            "type": "pubkey"
          },
          {
            "name": "validator_identity",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "acc_snapshot",
            "type": "u128"
          },
          {
            "name": "pending_unstake",
            "type": "u64"
          },
          {
            "name": "unstake_ready_ts",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Validator",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "identity",
            "type": "pubkey"
          },
          {
            "name": "active",
            "type": "bool"
          },
          {
            "name": "total_stake",
            "type": "u64"
          },
          {
            "name": "commission_bps",
            "docs": [
              "Commission the validator takes out of its delegators' rewards, in bps."
            ],
            "type": "u16"
          },
          {
            "name": "net_acc",
            "docs": [
              "Net (after-commission) reward accumulator. Delegations snapshot THIS, not",
              "the global `Config.acc_reward_per_share`."
            ],
            "type": "u128"
          },
          {
            "name": "global_checkpoint",
            "docs": [
              "Value of `Config.acc_reward_per_share` at the last `roll_validator`."
            ],
            "type": "u128"
          },
          {
            "name": "accrued_commission",
            "docs": [
              "Commission owed to the validator (token units), claimable via claim_commission."
            ],
            "type": "u64"
          },
          {
            "name": "commission_remainder",
            "docs": [
              "Carried sub-token commission remainder (PRECISION-scaled). Makes realized",
              "commission independent of how often roll_validator runs (see accrue.rs)."
            ],
            "type": "u128"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    }
  ]
}
