{
  "address": "EdYg6JsyntWpf3WGofNWKzBYnQPEvWFZSzUNim3PLbhB",
  "metadata": {
    "name": "nest_stake",
    "version": "0.1.0",
    "spec": "0.1.0"
  },
  "instructions": [
    {
      "name": "harvest",
      "discriminator": [
        228,
        241,
        31,
        182,
        53,
        169,
        59,
        199
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "nusd_mint",
          "writable": true
        },
        {
          "name": "revenue_nusd_account",
          "writable": true
        },
        {
          "name": "staking_nusd_vault",
          "writable": true
        },
        {
          "name": "protocol",
          "writable": true
        },
        {
          "name": "nest_core_program",
          "address": "HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW"
        },
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "staking_state"
          ]
        },
        {
          "name": "nusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initialize_staking",
      "discriminator": [
        184,
        41,
        251,
        154,
        146,
        145,
        197,
        77
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "protocol"
        },
        {
          "name": "nusd_mint"
        },
        {
          "name": "snusd_mint"
        },
        {
          "name": "staking_nusd_vault",
          "writable": true
        },
        {
          "name": "revenue_nusd_vault",
          "writable": true
        },
        {
          "name": "authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "nusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "snusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "InitializeStakingParams"
            }
          }
        }
      ]
    },
    {
      "name": "realize_loss",
      "discriminator": [
        219,
        141,
        172,
        206,
        79,
        15,
        9,
        52
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "nusd_mint",
          "writable": true
        },
        {
          "name": "staking_nusd_vault",
          "writable": true
        },
        {
          "name": "protocol",
          "writable": true
        },
        {
          "name": "nest_core_program",
          "address": "HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW"
        },
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "staking_state"
          ]
        },
        {
          "name": "nusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "set_paused",
      "discriminator": [
        91,
        60,
        125,
        192,
        176,
        225,
        166,
        218
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "staking_state"
          ]
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "name": "set_staking_authority",
      "discriminator": [
        95,
        56,
        127,
        221,
        83,
        100,
        126,
        84
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "authority",
          "signer": true,
          "relations": [
            "staking_state"
          ]
        }
      ],
      "args": [
        {
          "name": "authority",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "stake",
      "discriminator": [
        206,
        176,
        202,
        18,
        200,
        209,
        179,
        108
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "protocol",
          "writable": true
        },
        {
          "name": "nest_core_program",
          "address": "HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW"
        },
        {
          "name": "nusd_mint",
          "writable": true
        },
        {
          "name": "snusd_mint",
          "writable": true
        },
        {
          "name": "owner_nusd_account",
          "writable": true
        },
        {
          "name": "staking_nusd_vault",
          "writable": true
        },
        {
          "name": "owner_snusd_account",
          "writable": true
        },
        {
          "name": "revenue_nusd_vault"
        },
        {
          "name": "owner",
          "signer": true
        },
        {
          "name": "nusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "snusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "min_shares_out",
          "type": "u64"
        }
      ]
    },
    {
      "name": "unstake",
      "discriminator": [
        90,
        95,
        107,
        42,
        205,
        124,
        50,
        225
      ],
      "accounts": [
        {
          "name": "staking_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  116,
                  97,
                  107,
                  105,
                  110,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "protocol",
          "writable": true
        },
        {
          "name": "nest_core_program",
          "address": "HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW"
        },
        {
          "name": "nusd_mint",
          "writable": true
        },
        {
          "name": "snusd_mint",
          "writable": true
        },
        {
          "name": "owner_snusd_account",
          "writable": true
        },
        {
          "name": "staking_nusd_vault",
          "writable": true
        },
        {
          "name": "owner_nusd_account",
          "writable": true
        },
        {
          "name": "owner",
          "signer": true
        },
        {
          "name": "nusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "snusd_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": [
        {
          "name": "shares",
          "type": "u64"
        },
        {
          "name": "min_nusd_out",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "StakingState",
      "discriminator": [
        152,
        226,
        234,
        201,
        202,
        8,
        155,
        60
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Paused",
      "msg": "staking is paused"
    },
    {
      "code": 6001,
      "name": "Unauthorized",
      "msg": "unauthorized"
    },
    {
      "code": 6002,
      "name": "MathOverflow",
      "msg": "math overflow"
    },
    {
      "code": 6003,
      "name": "InvalidParameter",
      "msg": "invalid parameter"
    },
    {
      "code": 6004,
      "name": "CooldownActive",
      "msg": "cooldown is still active"
    },
    {
      "code": 6005,
      "name": "ClaimWindowActive",
      "msg": "unstake claim window is still active"
    },
    {
      "code": 6006,
      "name": "ClaimWindowExpired",
      "msg": "unstake claim window has expired"
    },
    {
      "code": 6007,
      "name": "BadDebtOutstanding",
      "msg": "protocol bad debt must be resolved before this operation"
    },
    {
      "code": 6008,
      "name": "InsufficientAssets",
      "msg": "insufficient assets"
    },
    {
      "code": 6009,
      "name": "Insolvent",
      "msg": "insolvent"
    },
    {
      "code": 6010,
      "name": "AlreadyCompleted",
      "msg": "pending withdrawal already completed"
    },
    {
      "code": 6011,
      "name": "AmountOverflow",
      "msg": "amount does not fit in SPL token u64 amount"
    },
    {
      "code": 6012,
      "name": "TransferFeeNotSupported",
      "msg": "token transfer fee or hook reduced received amount"
    },
    {
      "code": 6013,
      "name": "StakeCapacityExceeded",
      "msg": "staking capacity for target APR exceeded"
    }
  ],
  "types": [
    {
      "name": "InitializeStakingParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "cooldown_seconds",
            "type": "i64"
          },
          {
            "name": "revenue_vesting_seconds",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "StakingState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "type": "pubkey"
          },
          {
            "name": "nusd_mint",
            "type": "pubkey"
          },
          {
            "name": "snusd_mint",
            "type": "pubkey"
          },
          {
            "name": "staking_nusd_vault",
            "type": "pubkey"
          },
          {
            "name": "revenue_nusd_vault",
            "type": "pubkey"
          },
          {
            "name": "revenue_baseline_nusd",
            "type": "u128"
          },
          {
            "name": "total_shares",
            "type": "u128"
          },
          {
            "name": "total_user_shares",
            "type": "u128"
          },
          {
            "name": "staking_vault_nusd",
            "type": "u128"
          },
          {
            "name": "realized_loss_nusd",
            "type": "u128"
          },
          {
            "name": "unvested_revenue",
            "type": "u128"
          },
          {
            "name": "reserved_pending_claims",
            "type": "u128"
          },
          {
            "name": "vesting_start_ts",
            "type": "i64"
          },
          {
            "name": "vesting_end_ts",
            "type": "i64"
          },
          {
            "name": "last_vesting_sync_ts",
            "type": "i64"
          },
          {
            "name": "cooldown_seconds",
            "type": "i64"
          },
          {
            "name": "revenue_vesting_seconds",
            "type": "i64"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    }
  ]
}
