|
|
@@ -0,0 +1,2296 @@
|
|
|
+export const STAKING_IDK = {
|
|
|
+ address: "pytS9TjG1qyAZypk7n8rw8gfW9sUaqqYyMhJQ4E7JCQ",
|
|
|
+ metadata: {
|
|
|
+ name: "staking",
|
|
|
+ version: "2.1.0",
|
|
|
+ spec: "0.1.0",
|
|
|
+ description: "Created with Anchor",
|
|
|
+ },
|
|
|
+ instructions: [
|
|
|
+ {
|
|
|
+ name: "accept_split",
|
|
|
+ docs: [
|
|
|
+ "* A split request can only be accepted by the `pda_authority` from\n * the config account. If accepted, `amount` tokens are transferred to a new stake account\n * owned by the `recipient` and the split request is reset (by setting `amount` to 0).\n * The recipient of a transfer can't vote during the epoch of the transfer.\n *\n * The `pda_authority` must explicitly approve both the amount of tokens and recipient, and\n * these parameters must match the request (in the `split_request` account).",
|
|
|
+ ],
|
|
|
+ discriminator: [177, 172, 17, 93, 193, 86, 54, 222],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "pda_authority",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "source_stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "source_stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "source_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "source_stake_account_split_request",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 112, 108, 105, 116, 95, 114, 101, 113, 117, 101, 115,
|
|
|
+ 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "source_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "source_stake_account_custody",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "source_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "source_custody_authority",
|
|
|
+ docs: ["CHECK : This AccountInfo is safe because it's a checked PDA"],
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [97, 117, 116, 104, 111, 114, 105, 116, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "source_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "new_stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "new_stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "new_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "new_stake_account_custody",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "new_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "new_custody_authority",
|
|
|
+ docs: ["CHECK : This AccountInfo is safe because it's a checked PDA"],
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [97, 117, 116, 104, 111, 114, 105, 116, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "new_stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pyth_token_mint",
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "rent",
|
|
|
+ address: "SysvarRent111111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "token_program",
|
|
|
+ address: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "recipient",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "advance_clock",
|
|
|
+ discriminator: [52, 57, 147, 111, 56, 227, 33, 127],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "seconds",
|
|
|
+ type: "i64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "close_position",
|
|
|
+ discriminator: [123, 134, 81, 0, 49, 68, 98, 98],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "target_account",
|
|
|
+ writable: true,
|
|
|
+ optional: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [116, 97, 114, 103, 101, 116],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [118, 111, 116, 105, 110, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ signer: true,
|
|
|
+ optional: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "index",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "target_with_parameters",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "TargetWithParameters",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "create_position",
|
|
|
+ docs: [
|
|
|
+ "Creates a position",
|
|
|
+ "Looks for the first available place in the array, fails if array is full",
|
|
|
+ "Computes risk and fails if new positions exceed risk limit",
|
|
|
+ ],
|
|
|
+ discriminator: [48, 215, 197, 153, 96, 203, 180, 133],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "target_account",
|
|
|
+ writable: true,
|
|
|
+ optional: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [116, 97, 114, 103, 101, 116],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [118, 111, 116, 105, 110, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ signer: true,
|
|
|
+ optional: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "target_with_parameters",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "TargetWithParameters",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "create_stake_account",
|
|
|
+ docs: [
|
|
|
+ "Trustless instruction that creates a stake account for a user",
|
|
|
+ "The main account i.e. the position accounts needs to be initialized outside of the program",
|
|
|
+ "otherwise we run into stack limits",
|
|
|
+ ],
|
|
|
+ discriminator: [105, 24, 131, 19, 201, 250, 157, 73],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "custody_authority",
|
|
|
+ docs: ["CHECK : This AccountInfo is safe because it's a checked PDA"],
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [97, 117, 116, 104, 111, 114, 105, 116, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pyth_token_mint",
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "rent",
|
|
|
+ address: "SysvarRent111111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "token_program",
|
|
|
+ address: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "lock",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "VestingSchedule",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "create_target",
|
|
|
+ discriminator: [76, 144, 128, 239, 121, 210, 123, 39],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "target_account",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [116, 97, 114, 103, 101, 116],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [118, 111, 116, 105, 110, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "create_voter_record",
|
|
|
+ discriminator: [3, 12, 113, 222, 177, 4, 152, 165],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_record",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 118, 111, 116, 101, 114, 95, 119, 101, 105, 103, 104, 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "export_position_type",
|
|
|
+ discriminator: [219, 172, 149, 212, 103, 230, 164, 179],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config_account",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "rent",
|
|
|
+ address: "SysvarRent111111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "_position",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "Position",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "init_config",
|
|
|
+ discriminator: [23, 235, 115, 232, 168, 96, 1, 231],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config_account",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "rent",
|
|
|
+ address: "SysvarRent111111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "global_config",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "GlobalConfig",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "join_dao_llc",
|
|
|
+ docs: [
|
|
|
+ "* Accept to join the DAO LLC\n * This must happen before create_position or update_voter_weight\n * The user signs a hash of the agreement and the program checks that the hash matches the\n * agreement",
|
|
|
+ ],
|
|
|
+ discriminator: [79, 241, 203, 177, 232, 143, 124, 14],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "_agreement_hash",
|
|
|
+ type: {
|
|
|
+ array: ["u8", 32],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "merge_target_positions",
|
|
|
+ discriminator: [21, 136, 57, 2, 204, 219, 242, 141],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ docs: [
|
|
|
+ "CHECK : This AccountInfo is safe because it's checked against stake_account_metadata",
|
|
|
+ ],
|
|
|
+ writable: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ signer: true,
|
|
|
+ optional: true,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "target_with_parameters",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "TargetWithParameters",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "recover_account",
|
|
|
+ docs: [
|
|
|
+ "Recovers a user's `stake account` ownership by transferring ownership\n * from a token account to the `owner` of that token account.\n *\n * This functionality addresses the scenario where a user mistakenly\n * created a stake account using their token account address as the owner.",
|
|
|
+ ],
|
|
|
+ discriminator: [240, 223, 246, 118, 26, 121, 34, 128],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_record",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 118, 111, 116, 101, 114, 95, 119, 101, 105, 103, 104, 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "request_split",
|
|
|
+ docs: [
|
|
|
+ "* Any user of the staking program can request to split their account and\n * give a part of it to another user.\n * This is mostly useful to transfer unvested tokens. Each user can only have one active\n * request at a time.\n * In the first step, the user requests a split by specifying the `amount` of tokens\n * they want to give to the other user and the `recipient`'s pubkey.",
|
|
|
+ ],
|
|
|
+ discriminator: [133, 146, 228, 165, 251, 207, 146, 23],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_split_request",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 112, 108, 105, 116, 95, 114, 101, 113, 117, 101, 115,
|
|
|
+ 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "recipient",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "slash_account",
|
|
|
+ discriminator: [185, 97, 8, 208, 118, 205, 166, 2],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "publisher",
|
|
|
+ docs: [
|
|
|
+ "CHECK : This AccountInfo is just used to construct the target that will get slashed",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governance_target_account",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [116, 97, 114, 103, 101, 116],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [118, 111, 116, 105, 110, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "destination",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "custody_authority",
|
|
|
+ docs: ["CHECK : This AccountInfo is safe because it's a checked PDA"],
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [97, 117, 116, 104, 111, 114, 105, 116, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "token_program",
|
|
|
+ address: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "slash_ratio",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "transfer_account",
|
|
|
+ docs: [
|
|
|
+ "Transfers a user's stake account to a new owner provided by the `governance_authority`.\n *\n * This functionality addresses the scenario where a user doesn't have access to their owner\n * key. Only accounts without any staked tokens can be transferred.",
|
|
|
+ ],
|
|
|
+ discriminator: [219, 120, 55, 105, 3, 139, 205, 6],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "new_owner",
|
|
|
+ docs: [
|
|
|
+ "CHECK : A new arbitrary owner provided by the governance_authority",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_record",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 118, 111, 116, 101, 114, 95, 119, 101, 105, 103, 104, 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_agreement_hash",
|
|
|
+ discriminator: [86, 232, 181, 137, 158, 110, 129, 238],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "agreement_hash",
|
|
|
+ type: {
|
|
|
+ array: ["u8", 32],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_governance_authority",
|
|
|
+ discriminator: [11, 185, 227, 55, 39, 32, 168, 14],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "new_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_max_voter_weight",
|
|
|
+ discriminator: [248, 36, 229, 234, 11, 132, 145, 20],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "payer",
|
|
|
+ writable: true,
|
|
|
+ signer: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "max_voter_record",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [109, 97, 120, 95, 118, 111, 116, 101, 114],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "system_program",
|
|
|
+ address: "11111111111111111111111111111111",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_pda_authority",
|
|
|
+ discriminator: [178, 112, 199, 196, 59, 40, 140, 61],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "pda_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "new_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_pool_authority",
|
|
|
+ discriminator: [160, 162, 113, 9, 99, 187, 23, 239],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_token_list_time",
|
|
|
+ discriminator: [38, 217, 99, 222, 253, 253, 31, 83],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ signer: true,
|
|
|
+ relations: ["config"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "token_list_time",
|
|
|
+ type: {
|
|
|
+ option: "i64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "update_voter_weight",
|
|
|
+ discriminator: [92, 35, 133, 94, 230, 70, 14, 157],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_record",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 118, 111, 116, 101, 114, 95, 119, 101, 105, 103, 104, 116,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governance_target",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [116, 97, 114, 103, 101, 116],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [118, 111, 116, 105, 110, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "action",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "VoterWeightAction",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "withdraw_stake",
|
|
|
+ discriminator: [153, 8, 22, 138, 105, 176, 87, 66],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ signer: true,
|
|
|
+ relations: ["stake_account_metadata"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "destination",
|
|
|
+ writable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_positions",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_metadata",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [
|
|
|
+ 115, 116, 97, 107, 101, 95, 109, 101, 116, 97, 100, 97, 116,
|
|
|
+ 97,
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "stake_account_custody",
|
|
|
+ writable: true,
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 117, 115, 116, 111, 100, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "custody_authority",
|
|
|
+ docs: ["CHECK : This AccountInfo is safe because it's a checked PDA"],
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [97, 117, 116, 104, 111, 114, 105, 116, 121],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ kind: "account",
|
|
|
+ path: "stake_account_positions",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "config",
|
|
|
+ pda: {
|
|
|
+ seeds: [
|
|
|
+ {
|
|
|
+ kind: "const",
|
|
|
+ value: [99, 111, 110, 102, 105, 103],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "token_program",
|
|
|
+ address: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ args: [
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ accounts: [
|
|
|
+ {
|
|
|
+ name: "GlobalConfig",
|
|
|
+ discriminator: [149, 8, 156, 202, 160, 252, 176, 217],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "MaxVoterWeightRecord",
|
|
|
+ discriminator: [157, 95, 242, 151, 16, 98, 26, 118],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "PositionData",
|
|
|
+ discriminator: [85, 195, 241, 79, 124, 192, 79, 11],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "SplitRequest",
|
|
|
+ discriminator: [80, 85, 187, 143, 62, 147, 234, 248],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "StakeAccountMetadataV2",
|
|
|
+ discriminator: [192, 51, 203, 19, 76, 177, 136, 97],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "TargetMetadata",
|
|
|
+ discriminator: [157, 23, 139, 117, 181, 44, 197, 130],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "VoterWeightRecord",
|
|
|
+ discriminator: [46, 249, 155, 75, 153, 248, 116, 9],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ errors: [
|
|
|
+ {
|
|
|
+ code: 6000,
|
|
|
+ name: "TooMuchExposureToIntegrityPool",
|
|
|
+ msg: "Too much exposure to integrity pool",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6001,
|
|
|
+ name: "TooMuchExposureToGovernance",
|
|
|
+ msg: "Too much exposure to governance",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6002,
|
|
|
+ name: "TokensNotYetVested",
|
|
|
+ msg: "Tokens not yet vested",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6003,
|
|
|
+ name: "RiskLimitExceeded",
|
|
|
+ msg: "Risk limit exceeded",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6004,
|
|
|
+ name: "TooManyPositions",
|
|
|
+ msg: "Number of position limit reached",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6005,
|
|
|
+ name: "PositionNotInUse",
|
|
|
+ msg: "Position not in use",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6006,
|
|
|
+ name: "CreatePositionWithZero",
|
|
|
+ msg: "New position needs to have positive balance",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6007,
|
|
|
+ name: "ClosePositionWithZero",
|
|
|
+ msg: "Closing a position of 0 is not allowed",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6008,
|
|
|
+ name: "InvalidPosition",
|
|
|
+ msg: "Invalid product/publisher pair",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6009,
|
|
|
+ name: "AmountBiggerThanPosition",
|
|
|
+ msg: "Amount to unlock bigger than position",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6010,
|
|
|
+ name: "AlreadyUnlocking",
|
|
|
+ msg: "Position already unlocking",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6011,
|
|
|
+ name: "ZeroEpochDuration",
|
|
|
+ msg: "Epoch duration is 0",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6012,
|
|
|
+ name: "WithdrawToUnauthorizedAccount",
|
|
|
+ msg: "Owner needs to own destination account",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6013,
|
|
|
+ name: "InsufficientWithdrawableBalance",
|
|
|
+ msg: "Insufficient balance to cover the withdrawal",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6014,
|
|
|
+ name: "WrongTarget",
|
|
|
+ msg: "Target in position doesn't match target in instruction data",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6015,
|
|
|
+ name: "GenericOverflow",
|
|
|
+ msg: "An arithmetic operation unexpectedly overflowed",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6016,
|
|
|
+ name: "NegativeBalance",
|
|
|
+ msg: "Locked balance must be positive",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6017,
|
|
|
+ name: "Frozen",
|
|
|
+ msg: "Protocol is frozen",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6018,
|
|
|
+ name: "DebuggingOnly",
|
|
|
+ msg: "Not allowed when not debugging",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6019,
|
|
|
+ name: "ProposalTooLong",
|
|
|
+ msg: "Proposal too long",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6020,
|
|
|
+ name: "InvalidVotingEpoch",
|
|
|
+ msg: "Voting epoch is either too old or hasn't started",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6021,
|
|
|
+ name: "ProposalNotActive",
|
|
|
+ msg: "Voting hasn't started",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6022,
|
|
|
+ name: "NoRemainingAccount",
|
|
|
+ msg: "Extra governance account required",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6023,
|
|
|
+ name: "Unauthorized",
|
|
|
+ msg: "Unauthorized caller",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6024,
|
|
|
+ name: "AccountUpgradeFailed",
|
|
|
+ msg: "Precondition to upgrade account violated",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6025,
|
|
|
+ name: "NotImplemented",
|
|
|
+ msg: "Not implemented",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6026,
|
|
|
+ name: "PositionSerDe",
|
|
|
+ msg: "Error deserializing position",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6027,
|
|
|
+ name: "PositionOutOfBounds",
|
|
|
+ msg: "Position out of bounds",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6028,
|
|
|
+ name: "VoteDuringTransferEpoch",
|
|
|
+ msg: "Can't vote during an account's transfer epoch",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6029,
|
|
|
+ name: "NotLlcMember",
|
|
|
+ msg: "You need to be an LLC member to perform this action",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6030,
|
|
|
+ name: "InvalidLlcAgreement",
|
|
|
+ msg: "Invalid LLC agreement",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6031,
|
|
|
+ name: "SplitZeroTokens",
|
|
|
+ msg: "Can't split 0 tokens from an account",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6032,
|
|
|
+ name: "SplitTooManyTokens",
|
|
|
+ msg: "Can't split more tokens than are in the account",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6033,
|
|
|
+ name: "SplitWithStake",
|
|
|
+ msg: "Can't split a token account with staking positions. Unstake your tokens first.",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6034,
|
|
|
+ name: "InvalidApproval",
|
|
|
+ msg: "The approval arguments do not match the split request.",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6035,
|
|
|
+ name: "RecoverWithStake",
|
|
|
+ msg: "Can't recover account with staking positions. Unstake your tokens first.",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6036,
|
|
|
+ name: "InvalidPoolAuthority",
|
|
|
+ msg: "The pool authority hasn't been passed or doesn't match the target",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6037,
|
|
|
+ name: "MissingTargetAccount",
|
|
|
+ msg: "The target account is missing",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6038,
|
|
|
+ name: "InvalidSlashRatio",
|
|
|
+ msg: "The slash ratio should be between 0 and 1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6039,
|
|
|
+ name: "UnexpectedTargetAccount",
|
|
|
+ msg: "The target account is only expected when dealing with the governance target",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ code: 6040,
|
|
|
+ name: "Other",
|
|
|
+ msg: "Other",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ types: [
|
|
|
+ {
|
|
|
+ name: "GlobalConfig",
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governance_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pyth_token_mint",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pyth_governance_realm",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "removed_unlocking_duration",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "epoch_duration",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "freeze",
|
|
|
+ type: "bool",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pda_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governance_program",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pyth_token_list_time",
|
|
|
+ docs: [
|
|
|
+ "Once the pyth token is listed, governance can update the config to set this value.",
|
|
|
+ "Once this value is set, vesting schedules that depend on the token list date can start",
|
|
|
+ "vesting.",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ option: "i64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "agreement_hash",
|
|
|
+ type: {
|
|
|
+ array: ["u8", 32],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "mock_clock_time",
|
|
|
+ type: "i64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "pool_authority",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "MaxVoterWeightRecord",
|
|
|
+ docs: [
|
|
|
+ "Copied this struct from https://github.com/solana-labs/solana-program-library/blob/master/governance/addin-api/src/max_voter_weight.rs",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "realm",
|
|
|
+ docs: ["The Realm the MaxVoterWeightRecord belongs to"],
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governing_token_mint",
|
|
|
+ docs: [
|
|
|
+ "Governing Token Mint the MaxVoterWeightRecord is associated with",
|
|
|
+ "Note: The addin can take deposits of any tokens and is not restricted to the community or",
|
|
|
+ "council tokens only",
|
|
|
+ ],
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "max_voter_weight",
|
|
|
+ docs: [
|
|
|
+ "Max voter weight",
|
|
|
+ "The max voter weight provided by the addin for the given realm and governing_token_mint",
|
|
|
+ ],
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "max_voter_weight_expiry",
|
|
|
+ docs: [
|
|
|
+ "The slot when the max voting weight expires",
|
|
|
+ "It should be set to None if the weight never expires",
|
|
|
+ "If the max vote weight decays with time, for example for time locked based weights, then",
|
|
|
+ "the expiry must be set As a pattern Revise instruction to update the max weight should",
|
|
|
+ "be invoked before governance instruction within the same transaction and the expiry set",
|
|
|
+ "to the current slot to provide up to date weight",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ option: "u64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "reserved",
|
|
|
+ docs: ["Reserved space for future versions"],
|
|
|
+ type: {
|
|
|
+ array: ["u8", 8],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "Position",
|
|
|
+ docs: [
|
|
|
+ "This represents a staking position, i.e. an amount that someone has staked to a particular",
|
|
|
+ "target. This is one of the core pieces of our staking design, and stores all",
|
|
|
+ "of the state related to a position The voting position is a position where the",
|
|
|
+ "target_with_parameters is VOTING",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "activation_epoch",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "unlocking_start",
|
|
|
+ type: {
|
|
|
+ option: "u64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "target_with_parameters",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "TargetWithParameters",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "PositionData",
|
|
|
+ docs: ["The header of DynamicPositionArray"],
|
|
|
+ serialization: "bytemuck",
|
|
|
+ repr: {
|
|
|
+ kind: "c",
|
|
|
+ },
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "SplitRequest",
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "amount",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "recipient",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "StakeAccountMetadataV2",
|
|
|
+ docs: [
|
|
|
+ "This is the metadata account for each staker",
|
|
|
+ 'It is derived from the positions account with seeds "stake_metadata" and the positions account',
|
|
|
+ "pubkey It stores some PDA bumps, the owner of the account and the vesting schedule",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "metadata_bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "custody_bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "authority_bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "owner",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "lock",
|
|
|
+ type: {
|
|
|
+ defined: {
|
|
|
+ name: "VestingSchedule",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "next_index",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "_deprecated",
|
|
|
+ type: {
|
|
|
+ option: "u64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "signed_agreement_hash",
|
|
|
+ type: {
|
|
|
+ option: {
|
|
|
+ array: ["u8", 32],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "TargetMetadata",
|
|
|
+ docs: [
|
|
|
+ "This represents a target that users can stake to",
|
|
|
+ "Currently we store the last time the target account was updated, the current locked balance",
|
|
|
+ "and the amount by which the locked balance will change in the next epoch",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "bump",
|
|
|
+ type: "u8",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "last_update_at",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "prev_epoch_locked",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "locked",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "delta_locked",
|
|
|
+ type: "i64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "TargetWithParameters",
|
|
|
+ type: {
|
|
|
+ kind: "enum",
|
|
|
+ variants: [
|
|
|
+ {
|
|
|
+ name: "Voting",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "IntegrityPool",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "publisher",
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "VestingSchedule",
|
|
|
+ docs: [
|
|
|
+ "Represents how a given initial balance vests over time",
|
|
|
+ "It is unit-less, but units must be consistent",
|
|
|
+ ],
|
|
|
+ repr: {
|
|
|
+ kind: "rust",
|
|
|
+ },
|
|
|
+ type: {
|
|
|
+ kind: "enum",
|
|
|
+ variants: [
|
|
|
+ {
|
|
|
+ name: "FullyVested",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "PeriodicVesting",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "initial_balance",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "start_date",
|
|
|
+ type: "i64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "period_duration",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "num_periods",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "PeriodicVestingAfterListing",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "initial_balance",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "period_duration",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "num_periods",
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "VoterWeightAction",
|
|
|
+ docs: ["The governance action VoterWeight is evaluated for"],
|
|
|
+ type: {
|
|
|
+ kind: "enum",
|
|
|
+ variants: [
|
|
|
+ {
|
|
|
+ name: "CastVote",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "CommentProposal",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "CreateGovernance",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "CreateProposal",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "SignOffProposal",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "VoterWeightRecord",
|
|
|
+ docs: [
|
|
|
+ "Copied this struct from https://github.com/solana-labs/solana-program-library/blob/master/governance/addin-api/src/voter_weight.rs",
|
|
|
+ "Anchor has a macro (vote_weight_record) that is supposed to generate this struct, but it doesn't",
|
|
|
+ "work because the error's macros are not updated for anchor 0.22.0.",
|
|
|
+ "Even if it did work, the type wouldn't show up in the IDL. SPL doesn't produce an API, which",
|
|
|
+ "means that means we'd need the equivalent of this code on the client side.",
|
|
|
+ "If Anchor fixes the macro, we might consider changing it",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ kind: "struct",
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: "realm",
|
|
|
+ docs: [
|
|
|
+ 'VoterWeightRecord discriminator sha256("account:VoterWeightRecord")[..8]',
|
|
|
+ "Note: The discriminator size must match the addin implementing program discriminator size",
|
|
|
+ "to ensure it's stored in the private space of the account data and it's unique",
|
|
|
+ "pub account_discriminator: [u8; 8],",
|
|
|
+ "The Realm the VoterWeightRecord belongs to",
|
|
|
+ ],
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governing_token_mint",
|
|
|
+ docs: [
|
|
|
+ "Governing Token Mint the VoterWeightRecord is associated with",
|
|
|
+ "Note: The addin can take deposits of any tokens and is not restricted to the community or",
|
|
|
+ "council tokens only",
|
|
|
+ ],
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "governing_token_owner",
|
|
|
+ docs: [
|
|
|
+ "The owner of the governing token and voter",
|
|
|
+ "This is the actual owner (voter) and corresponds to TokenOwnerRecord.governing_token_owner",
|
|
|
+ ],
|
|
|
+ type: "pubkey",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_weight",
|
|
|
+ docs: [
|
|
|
+ "Voter's weight",
|
|
|
+ "The weight of the voter provided by the addin for the given realm, governing_token_mint and",
|
|
|
+ "governing_token_owner (voter)",
|
|
|
+ ],
|
|
|
+ type: "u64",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "voter_weight_expiry",
|
|
|
+ docs: [
|
|
|
+ "The slot when the voting weight expires",
|
|
|
+ "It should be set to None if the weight never expires",
|
|
|
+ "If the voter weight decays with time, for example for time locked based weights, then the",
|
|
|
+ "expiry must be set As a common pattern Revise instruction to update the weight should",
|
|
|
+ "be invoked before governance instruction within the same transaction and the expiry set",
|
|
|
+ "to the current slot to provide up to date weight",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ option: "u64",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "weight_action",
|
|
|
+ docs: [
|
|
|
+ "The governance action the voter's weight pertains to",
|
|
|
+ "It allows to provided voter's weight specific to the particular action the weight is",
|
|
|
+ "evaluated for When the action is provided then the governance program asserts the",
|
|
|
+ "executing action is the same as specified by the addin",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ option: {
|
|
|
+ defined: {
|
|
|
+ name: "VoterWeightAction",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "weight_action_target",
|
|
|
+ docs: [
|
|
|
+ "The target the voter's weight action pertains to",
|
|
|
+ "It allows to provided voter's weight specific to the target the weight is evaluated for",
|
|
|
+ "For example when addin supplies weight to vote on a particular proposal then it must",
|
|
|
+ "specify the proposal as the action target When the target is provided then the",
|
|
|
+ "governance program asserts the target is the same as specified by the addin",
|
|
|
+ ],
|
|
|
+ type: {
|
|
|
+ option: "pubkey",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "reserved",
|
|
|
+ docs: ["Reserved space for future versions"],
|
|
|
+ type: {
|
|
|
+ array: ["u8", 8],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+};
|