@jpool/bond-sdk 0.8.0-next.1 → 0.8.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +99 -70
- package/dist/index.d.ts +99 -70
- package/dist/index.js +102 -72
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +102 -72
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/idl/jbond.json","../src/types/index.ts","../src/utils/wallet.ts","../src/utils/index.ts","../src/client.ts"],"names":["BondTransactionType","BondClientEnv","Program","AnchorProvider","PublicKey","Transaction","BN","LAMPORTS_PER_SOL","SYSVAR_EPOCH_SCHEDULE_PUBKEY","bs58"],"mappings":"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","file":"index.js","sourcesContent":["import { PublicKey } from '@solana/web3.js'\n\n/**\n * Program IDs for different environments\n */\nexport const ENV_PROGRAM_ID: Record<string, PublicKey> = {\n // [BondClientEnv.DEV]: new PublicKey('...'),\n}\n","{\n \"address\": \"BondQ7KqZreTcW2UbeTNDcLCJQ3aXAtLn2Fm6ftaJDU\",\n \"metadata\": {\n \"name\": \"jbond\",\n \"version\": \"0.2.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Jpool Bond Program\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"docs\": [\n \"Claims compensation for a validator.\",\n \"Transfers funds from the validator's bond account to reserve.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount of compensation to claim (must be positive).\",\n \"\",\n \"# Errors\",\n \"Fails if the authority is invalid, if the validator is not active,\",\n \"if the amount is zero, or if there are insufficient funds.\"\n ],\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"reserve\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority that can trigger claims\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initializes the global state for the bonding program.\",\n \"Sets the authority and reserve account for managing validator bonds.\",\n \"\",\n \"# Errors\",\n \"Fails if the global state account is already initialized or if the payer lacks\",\n \"sufficient funds.\"\n ],\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"reserve\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"register\",\n \"docs\": [\n \"Registers a new validator with the bonding program.\",\n \"Sets up the validator's bond account and deposits initial collateral.\",\n \"\",\n \"# Arguments\",\n \"* `initial_collateral` - Amount of collateral to lock (must be positive).\",\n \"* `withdrawal_authority` - Optional key that can withdraw collateral later.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is already registered, if the vote account is invalid,\",\n \"or if the initial collateral transfer fails.\"\n ],\n \"discriminator\": [\n 211,\n 124,\n 67,\n 15,\n 211,\n 194,\n 178,\n 240\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\"\n },\n {\n \"name\": \"vote_account\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"The account creating the bond (pays for account creation and initial collateral)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"initial_collateral\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_authority\",\n \"docs\": [\n \"Sets a new withdrawal authority for a validator's bond account.\",\n \"Allows changing who can withdraw collateral in the future.\",\n \"\",\n \"# Arguments\",\n \"* `new_authority` - Optional new authority key (None to restrict to identity).\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to change the authority.\"\n ],\n \"discriminator\": [\n 133,\n 250,\n 37,\n 21,\n 110,\n 163,\n 26,\n 121\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"global_state\"\n ]\n },\n {\n \"name\": \"new_authority\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_withdraw_authority\",\n \"docs\": [\n \"Sets a new withdrawal authority for a validator's bond account.\",\n \"Allows changing who can withdraw collateral in the future.\",\n \"\",\n \"# Arguments\",\n \"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to identity).\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to change the withdrawal authority.\"\n ],\n \"discriminator\": [\n 199,\n 146,\n 140,\n 67,\n 1,\n 90,\n 8,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\",\n \"signer\": true\n },\n {\n \"name\": \"new_withdraw_authority\",\n \"optional\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"top_up\",\n \"docs\": [\n \"Adds additional collateral to an existing validator's bond.\",\n \"Increases the collateral balance, enhancing the validator's stake.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to add.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"or if the transfer of funds fails.\"\n ],\n \"discriminator\": [\n 236,\n 225,\n 96,\n 9,\n 60,\n 106,\n 77,\n 208\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"docs\": [\n \"Withdraws collateral from a validator's bond.\",\n \"Decreases the collateral balance, allowing the validator to reclaim funds.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to withdraw (must not exceed available balance).\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"if the withdrawal authority is invalid, or if the withdrawal would\",\n \"leave insufficient collateral.\"\n ],\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"withdrawal_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"epoch_schedule\",\n \"address\": \"SysvarEpochSchedu1e111111111111111111111111\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"GlobalState\",\n \"discriminator\": [\n 163,\n 46,\n 74,\n 168,\n 216,\n 123,\n 133,\n 98\n ]\n },\n {\n \"name\": \"ValidatorBond\",\n \"discriminator\": [\n 82,\n 127,\n 243,\n 208,\n 195,\n 42,\n 80,\n 35\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"CollateralToppedUp\",\n \"discriminator\": [\n 189,\n 137,\n 204,\n 58,\n 135,\n 182,\n 19,\n 176\n ]\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"discriminator\": [\n 51,\n 224,\n 133,\n 106,\n 74,\n 173,\n 72,\n 82\n ]\n },\n {\n \"name\": \"CompensationClaimed\",\n \"discriminator\": [\n 36,\n 159,\n 41,\n 178,\n 104,\n 135,\n 220,\n 32\n ]\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"discriminator\": [\n 20,\n 20,\n 190,\n 191,\n 53,\n 174,\n 95,\n 72\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidVoteAccount\",\n \"msg\": \"Invalid vote account\"\n },\n {\n \"code\": 6001,\n \"name\": \"IdentityMismatch\",\n \"msg\": \"Identity does not match vote account\"\n },\n {\n \"code\": 6002,\n \"name\": \"InsufficientCollateral\",\n \"msg\": \"Insufficient collateral amount\"\n },\n {\n \"code\": 6003,\n \"name\": \"TargetAprTooLow\",\n \"msg\": \"Target APR is below minimum threshold\"\n },\n {\n \"code\": 6004,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n },\n {\n \"code\": 6006,\n \"name\": \"ValidatorNotActive\",\n \"msg\": \"Validator bond account is not active\"\n },\n {\n \"code\": 6007,\n \"name\": \"ValidatorAlreadyRegistered\",\n \"msg\": \"Validator already registered\"\n },\n {\n \"code\": 6008,\n \"name\": \"Unauthorized\",\n \"msg\": \"Unauthorized\"\n },\n {\n \"code\": 6009,\n \"name\": \"WithdrawalLockedNearEpochEnd\",\n \"msg\": \"Withdrawals are locked near the end of the epoch.\"\n }\n ],\n \"types\": [\n {\n \"name\": \"CollateralToppedUp\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CompensationClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GlobalState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority allowed to manage the program\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reserve\",\n \"docs\": [\n \"The reserve vault holding SOL for bonding and compensation\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_validators\",\n \"docs\": [\n \"Total number of registered validators\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation amount paid out\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorBond\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"docs\": [\n \"The validator identity pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"docs\": [\n \"The validator vote account pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the validator bond account\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"withdrawal_authority\",\n \"docs\": [\n \"Authority allowed to withdraw funds (if None, only identity can withdraw)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation claimed for the validator\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_compensation_amount\",\n \"docs\": [\n \"Last compensation amount claimed\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_compensation_epoch\",\n \"docs\": [\n \"Last epoch when compensation was claimed\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"docs\": [\n \"Timestamp when the bond account was created\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"is_active\",\n \"docs\": [\n \"Whether the validator is currently active\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"initial_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ]\n}","import type { BN } from '@coral-xyz/anchor'\nimport type { PublicKey } from '@solana/web3.js'\n\nexport * from './jbond'\n\nexport type ValidatorBond = {\n identity: PublicKey\n voteAccount: PublicKey\n withdrawalAuthority?: string\n totalWithdrawn: number\n lastWithdrawalEpoch: number\n isActive: boolean\n createdAt: number\n bump: number\n}\n\nexport type InitializeProps = {\n authority?: PublicKey\n reserve: PublicKey\n}\n\nexport type RegisterValidatorProps = {\n identity: PublicKey\n voteAccount: PublicKey\n initialCollateral: number\n creator?: PublicKey\n}\n\nexport type TopUpCollateralProps = {\n amount: number\n voteAccount: PublicKey\n payer?: PublicKey\n}\n\nexport type WithdrawCollateralProps = {\n amount: number\n voteAccount: PublicKey\n destination?: PublicKey\n withdrawalAuthority?: PublicKey\n}\n\nexport type ClaimProps = {\n amount: number\n voteAccount: PublicKey\n reserve?: PublicKey\n authority?: PublicKey\n}\n\nexport type GetHistoryProps = {\n voteAccount: PublicKey\n options?: {\n limit?: number\n before?: string\n until?: string\n }\n}\n\nexport type GetHistoryGroupedProps = {\n voteAccount: PublicKey\n epochsCount?: number\n}\n\nexport type SetAuthorityProps = {\n newAuthority: PublicKey\n authority?: PublicKey\n}\n\nexport type SetWithdrawAuthorityProps = {\n voteAccount: PublicKey\n newWithdrawAuthority?: PublicKey | null\n identity?: PublicKey\n}\n\nexport type GlobalState = {\n authority: PublicKey\n totalValidators: number\n totalCollateral: BN\n totalWithdrawn: BN\n bump: number\n}\n\nexport type EpochHistoryItem = {\n epoch: number\n deposits: number\n withdrawals: number\n balanceChange: number\n signatures: string[]\n}\n\nexport type TransactionHistoryItem = {\n signature: string\n slot: number\n epoch: number\n type: BondTransactionType\n amount: number\n beforeBalance?: number\n afterBalance?: number\n}\n\nexport enum BondTransactionType {\n Deposit = 'deposit',\n Withdrawal = 'withdrawal',\n Compensation = 'compensation',\n}\n","import type { Keypair, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js'\n\nfunction isVersionedTransaction(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return 'version' in tx\n}\n\nexport type Wallet = {\n publicKey: PublicKey\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>\n signTransaction: <T extends Transaction | VersionedTransaction>(tx: T) => Promise<T>\n signAllTransactions: <T extends Transaction | VersionedTransaction>(txs: T[]) => Promise<T[]>\n}\n\nexport class NodeWallet implements Wallet {\n constructor(readonly payer: Keypair) {}\n\n async signTransaction<T extends Transaction | VersionedTransaction>(\n tx: T,\n ): Promise<T> {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.payer])\n } else {\n tx.partialSign(this.payer)\n }\n\n return tx\n }\n\n async signAllTransactions<T extends Transaction | VersionedTransaction>(\n txs: T[],\n ): Promise<T[]> {\n return txs.map((t) => {\n if (isVersionedTransaction(t)) {\n t.sign([this.payer])\n } else {\n t.partialSign(this.payer)\n }\n return t\n })\n }\n\n get publicKey(): PublicKey {\n return this.payer.publicKey\n }\n}\n","import { Cluster } from '@solana/web3.js'\n\nexport * from './wallet'\n\nconst SLOTS_PER_EPOCH_MAINNET = 432_000\nconst SLOTS_PER_EPOCH_DEVNET = 400_000\n\nexport function slotToEpoch(slot: number, cluster: Cluster): number {\n const slotsPerEpoch = cluster === 'mainnet-beta' ? SLOTS_PER_EPOCH_MAINNET : SLOTS_PER_EPOCH_DEVNET\n return Math.floor(slot / slotsPerEpoch)\n}\n","import type {\n ClaimProps, EpochHistoryItem, InitializeProps, Jbond, RegisterValidatorProps,\n SetAuthorityProps, SetWithdrawAuthorityProps, TopUpCollateralProps, TransactionHistoryItem, WithdrawCollateralProps,\n} from './types'\nimport { AnchorProvider, BN, Program } from '@coral-xyz/anchor'\nimport {\n Connection, Keypair, LAMPORTS_PER_SOL, ParsedTransactionWithMeta, PublicKey,\n PublicKeyInitData, SYSVAR_EPOCH_SCHEDULE_PUBKEY, Transaction,\n} from '@solana/web3.js'\nimport bs58 from 'bs58'\nimport { ENV_PROGRAM_ID } from './constants'\nimport IDL from './idl/jbond.json'\nimport { BondTransactionType } from './types'\nimport { NodeWallet, slotToEpoch, Wallet } from './utils'\n\n/**\n * Enum for different client environments.\n */\nexport enum BondClientEnv { DEV = 'dev', STAGE = 'stage', PROD = 'prod' }\n\n/**\n * Options for configuring the JBondClient.\n */\nexport type ClientOptions = {\n // Optional custom program ID (defaults to the one in the IDL)\n programId?: PublicKey\n // Debug mode flag\n debug?: boolean\n} & Record<string, any>\n\nexport class JBondClient {\n readonly options: ClientOptions\n readonly program: Program<Jbond>\n\n constructor(readonly provider: AnchorProvider, options?: ClientOptions) {\n this.options = options ?? {}\n this.program = new Program(IDL, this.provider)\n }\n\n /**\n * Creates an instance of `JBondClient` using a provided connection and wallet.\n */\n static fromWallet(connection: Connection, wallet?: Wallet, options?: ClientOptions) {\n return new this(\n new AnchorProvider(\n connection,\n wallet ?? { publicKey: PublicKey.default } as Wallet,\n AnchorProvider.defaultOptions(),\n ),\n options,\n )\n }\n\n /**\n * Creates an instance of `JBondClient` using the provided connection and keypair.\n */\n static fromKeypair(connection: Connection, keypair: Keypair, options?: ClientOptions) {\n return JBondClient.fromWallet(connection, new NodeWallet(keypair), options)\n }\n\n /**\n * Get the current program ID.\n */\n get programId() {\n return this.options.programId ?? this.program.programId\n }\n\n /**\n * Get the current connection.\n */\n private get connection() {\n return this.provider.connection\n }\n\n /**\n * Set the environment.\n */\n env(env: BondClientEnv) {\n return this.configure('programId', ENV_PROGRAM_ID[env])\n }\n\n /**\n * Configure a specific option.\n */\n configure<K extends keyof ClientOptions>(key: K, val: ClientOptions[K]) {\n this.options[key] = val\n return this\n }\n\n /**\n * Program Derived Addresses (PDAs)\n */\n pda = {\n globalState: () => {\n return PublicKey.findProgramAddressSync(\n [Buffer.from('global_state')],\n this.programId,\n )\n },\n validatorBond: (vote: PublicKeyInitData) => {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from('validator_bond'),\n new PublicKey(vote).toBuffer(),\n ],\n this.programId,\n )\n },\n }\n\n /**\n * Initialize the program\n * Default authority is the provider's wallet\n */\n async initialize(props: InitializeProps) {\n const ix = await this.buildInitializeInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Register a new validator\n * Default creator is the provider's wallet\n */\n async registerValidator(props: RegisterValidatorProps) {\n const ix = await this.buildRegisterValidatorInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Top up collateral\n * Default payer is the provider's wallet\n */\n async topUpCollateral(props: TopUpCollateralProps) {\n const ix = await this.buildTopUpCollateralInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Withdraw collateral\n * Default withdrawal authority is the provider's wallet\n * Default destination is the provider's wallet\n * @return Transaction signature\n */\n async withdrawCollateral(props: WithdrawCollateralProps) {\n const ix = await this.buildWithdrawCollateralInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Claim compensation\n * Default authority is the provider's wallet\n * @return Transaction signature\n */\n async claimCompensation(props: ClaimProps) {\n const ix = await this.buildClaimInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Set a new authority for the program\n * Default authority is the provider's wallet\n * @return Transaction signature\n */\n async setAuthority(props: SetAuthorityProps) {\n const ix = await this.buildSetAuthorityInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Set withdrawal authority for validator bond\n * Only the validator identity can call this\n * Default identity is the provider's wallet\n * @return Transaction signature\n */\n async setWithdrawAuthority(props: SetWithdrawAuthorityProps) {\n const ix = await this.buildSetWithdrawAuthorityInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Build initialize instruction\n */\n async buildInitializeInstruction(props: InitializeProps) {\n const [globalState] = this.pda.globalState()\n const { reserve } = props\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .initialize()\n .accountsPartial({\n globalState,\n authority,\n reserve,\n })\n .instruction()\n }\n\n /**\n * Build register validator instruction\n */\n async buildRegisterValidatorInstruction(props: RegisterValidatorProps) {\n const { identity, voteAccount, initialCollateral } = props\n\n const [globalState] = this.pda.globalState()\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(initialCollateral * LAMPORTS_PER_SOL)\n const creator = props.creator ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .register(lamports)\n .accountsPartial({\n creator,\n globalState,\n validatorBond,\n identity,\n voteAccount,\n })\n .instruction()\n }\n\n /**\n * Build top up collateral instruction\n */\n async buildTopUpCollateralInstruction(props: TopUpCollateralProps) {\n const { voteAccount, amount } = props\n\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(amount * LAMPORTS_PER_SOL)\n const payer = props.payer ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .topUp(lamports)\n .accountsPartial({\n validatorBond,\n payer,\n })\n .instruction()\n }\n\n /**\n * Build withdraw collateral instruction\n */\n async buildWithdrawCollateralInstruction(props: WithdrawCollateralProps) {\n const { voteAccount, amount } = props\n\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(amount * LAMPORTS_PER_SOL)\n const withdrawalAuthority = props.withdrawalAuthority ?? this.provider.wallet.publicKey\n const destination = props.destination ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .withdraw(lamports)\n .accountsPartial({\n validatorBond,\n withdrawalAuthority,\n epochSchedule: SYSVAR_EPOCH_SCHEDULE_PUBKEY,\n destination,\n })\n .instruction()\n }\n\n /**\n * Build claim compensation instruction\n */\n async buildClaimInstruction(props: ClaimProps) {\n const [globalState] = this.pda.globalState()\n const [validatorBond] = this.pda.validatorBond(props.voteAccount)\n const lamports = new BN(props.amount * LAMPORTS_PER_SOL)\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n // If reserve is not provided, fetch it from global state\n let reserve = props.reserve\n if (!reserve) {\n const globalStateData = await this.getGlobalState()\n reserve = globalStateData.reserve\n if (!reserve) {\n throw new Error('Reserve address is not set in the global state. The program might not be initialized yet.')\n }\n }\n\n return this.program.methods\n .claim(lamports)\n .accountsPartial({\n globalState,\n validatorBond,\n reserve,\n authority,\n })\n .instruction()\n }\n\n /**\n * Build set authority instruction\n */\n async buildSetAuthorityInstruction(props: SetAuthorityProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .setAuthority()\n .accountsStrict({\n globalState,\n authority,\n newAuthority: props.newAuthority,\n })\n .instruction()\n }\n\n /**\n * Build set withdraw authority instruction\n */\n async buildSetWithdrawAuthorityInstruction(props: SetWithdrawAuthorityProps) {\n const { voteAccount, newWithdrawAuthority } = props\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const identity = props.identity ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .setWithdrawAuthority()\n .accountsPartial({\n validatorBond,\n identity,\n newWithdrawAuthority: newWithdrawAuthority ?? null,\n })\n .instruction()\n }\n\n /**\n * Fetch global state or throw if not found\n */\n async getGlobalState() {\n const [globalState] = this.pda.globalState()\n return await this.program.account.globalState.fetch(globalState)\n }\n\n /**\n * Fetch validator bond data or null if not found\n * @param vote\n */\n async getValidatorBond(vote: PublicKeyInitData) {\n const [address] = this.pda.validatorBond(new PublicKey(vote))\n return await this.program.account.validatorBond.fetchNullable(address)\n }\n\n /**\n * Get validator bond account balance (in SOL)\n * @param vote - Vote account public key\n * @return Balance in SOL\n */\n async getValidatorBondBalance(vote: PublicKeyInitData) {\n const [address] = this.pda.validatorBond(new PublicKey(vote))\n const accountInfo = await this.connection.getAccountInfo(address)\n if (!accountInfo) {\n return 0\n }\n const { data, lamports } = accountInfo\n const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length)\n const availableBalance = Math.max(0, lamports - rentExempt)\n return availableBalance / LAMPORTS_PER_SOL\n }\n\n /**\n * Get transaction history grouped by epochs\n * @param vote - The vote account to get history for\n * @param epochsCount - Number of recent epochs to return (default: 10)\n * @returns Array of epoch history items sorted by epoch (descending)\n */\n async getHistoryGroupedByEpochs(\n vote: PublicKeyInitData,\n epochsCount = 10,\n ): Promise<EpochHistoryItem[]> {\n const epochInfo = await this.connection.getEpochInfo()\n const fullHistory = await this.getFullHistory(new PublicKey(vote))\n\n const epochMap = new Map<number, EpochHistoryItem>()\n\n for (const item of fullHistory) {\n if (item.epoch < epochInfo.epoch - epochsCount + 1) {\n continue\n }\n if (!epochMap.has(item.epoch)) {\n epochMap.set(item.epoch, {\n epoch: item.epoch,\n deposits: 0,\n withdrawals: 0,\n balanceChange: 0,\n signatures: [],\n })\n }\n\n const epochData = epochMap.get(item.epoch)!\n\n if (item.type === 'deposit') {\n epochData.deposits += item.amount\n } else if (item.type === 'withdrawal') {\n epochData.withdrawals += item.amount\n }\n\n if (!epochData.signatures.includes(item.signature)) {\n epochData.signatures.push(item.signature)\n }\n }\n\n for (const epochData of epochMap.values()) {\n epochData.balanceChange = epochData.deposits - epochData.withdrawals\n }\n\n return [...epochMap.values()].toSorted((a, b) => b.epoch - a.epoch)\n }\n\n /**\n * Get transaction history for a specific validator bond account\n */\n async getHistory(\n vote: PublicKey,\n options?: {\n cluster?: 'mainnet-beta' | 'testnet' | 'devnet'\n limit?: number\n before?: string\n until?: string\n },\n ): Promise<TransactionHistoryItem[]> {\n const [ValidatorBondAccount] = this.pda.validatorBond(new PublicKey(vote))\n\n const signatures = (await this.connection.getSignaturesForAddress(\n ValidatorBondAccount,\n {\n limit: options?.limit || 1000,\n before: options?.before,\n until: options?.until,\n },\n )).filter(sig => !sig.err)\n\n const signatureStrings = signatures.map(sig => sig.signature)\n\n const BATCH_SIZE = 100\n const allTransactions: (ParsedTransactionWithMeta | null)[] = []\n\n for (let i = 0; i < signatureStrings.length; i += BATCH_SIZE) {\n const batch = signatureStrings.slice(i, i + BATCH_SIZE)\n const transactions = await this.connection.getParsedTransactions(\n batch,\n {\n maxSupportedTransactionVersion: 0,\n },\n )\n allTransactions.push(...transactions)\n }\n\n const cluster = options?.cluster || 'mainnet-beta'\n\n const history: TransactionHistoryItem[] = []\n\n for (const [idx, tx] of allTransactions.entries()) {\n const sigInfo = signatures[idx]\n\n if (!tx || !tx.meta || tx.meta.err !== null) {\n continue\n }\n\n try {\n const slot = (tx.slot || 0)\n const instructions = tx.transaction.message.instructions\n\n for (const instruction of instructions) {\n if ('programId' in instruction && instruction.programId.equals(this.options.programId ?? this.program.programId)) {\n const ixData = instruction as any\n\n if ('parsed' in ixData && ixData.parsed) {\n continue\n }\n\n const data = ixData.data\n if (!data) {\n continue\n }\n\n let type: BondTransactionType | null = null\n let amount = 0\n\n try {\n const dataBuffer = bs58.decode(data)\n\n if (dataBuffer.length >= 16) {\n const discriminator = dataBuffer.slice(0, 8)\n\n const bondInitDiscriminator = this.getInstructionDiscriminator('register')\n const bondTopUpDiscriminator = this.getInstructionDiscriminator('topUp')\n const withdrawCompensationDiscriminator = this.getInstructionDiscriminator('claim')\n const bondWithdrawDiscriminator = this.getInstructionDiscriminator('withdraw')\n\n const amountBytes = dataBuffer.slice(8, 16)\n const amountBN = new BN(amountBytes, 'le')\n amount = amountBN.toNumber() / LAMPORTS_PER_SOL\n\n if (Buffer.from(discriminator).equals(Buffer.from(bondInitDiscriminator))) {\n type = BondTransactionType.Deposit\n } else if (Buffer.from(discriminator).equals(Buffer.from(bondTopUpDiscriminator))) {\n type = BondTransactionType.Deposit\n } else if (Buffer.from(discriminator).equals(Buffer.from(withdrawCompensationDiscriminator))) {\n type = BondTransactionType.Compensation\n } else if (Buffer.from(discriminator).equals(Buffer.from(bondWithdrawDiscriminator))) {\n type = BondTransactionType.Withdrawal\n }\n }\n } catch {\n console.warn('Failed to decode instruction data')\n }\n\n if (type && amount > 0) {\n let beforeBalance: number | undefined\n let afterBalance: number | undefined\n\n // Find the validator bond account in the account keys\n const accountIndex = tx.transaction.message.accountKeys.findIndex(\n key => key.pubkey.equals(ValidatorBondAccount),\n )\n\n if (accountIndex !== -1 && tx.meta.preBalances && tx.meta.postBalances) {\n beforeBalance = Number(tx.meta.preBalances[accountIndex] || 0) / LAMPORTS_PER_SOL\n afterBalance = Number(tx.meta.postBalances[accountIndex] || 0) / LAMPORTS_PER_SOL\n }\n\n history.push({\n signature: sigInfo!.signature,\n slot,\n epoch: slotToEpoch(slot, cluster),\n type,\n amount,\n beforeBalance,\n afterBalance,\n })\n }\n }\n }\n } catch (error) {\n console.error(`Error processing transaction ${sigInfo!.signature}:`, error)\n }\n }\n\n return history.toSorted((a, b) => b.slot - a.slot)\n }\n\n /**\n * Get full transaction history by paginating through results\n * @param voteAccount\n * @param pageSize\n */\n async getFullHistory(\n voteAccount: PublicKey,\n pageSize: number = 100,\n ): Promise<TransactionHistoryItem[]> {\n const allHistory: TransactionHistoryItem[] = []\n let before: string | undefined\n\n while (true) {\n const batch = await this.getHistory(voteAccount, {\n limit: pageSize,\n before,\n })\n\n if (batch.length === 0) {\n break\n }\n\n allHistory.push(...batch)\n\n // Get the signature of the last transaction for pagination\n before = batch.at(-1)?.signature\n\n // If we got less than the page size, we've reached the end\n if (batch.length < pageSize) {\n break\n }\n }\n\n return allHistory\n }\n\n /**\n * Get instruction discriminator from IDL\n * @param instructionName\n * @private\n */\n private getInstructionDiscriminator(instructionName: string): Uint8Array {\n const instruction = this.program.idl.instructions.find(ix => ix.name === instructionName)\n if (!instruction) {\n throw new Error(`Instruction ${instructionName} not found in IDL`)\n }\n\n if (!instruction.discriminator || !Array.isArray(instruction.discriminator)) {\n throw new Error(`Discriminator not found for instruction ${instructionName}`)\n }\n\n return new Uint8Array(instruction.discriminator)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/idl/jbond.json","../src/types/index.ts","../src/utils/wallet.ts","../src/utils/index.ts","../src/client.ts"],"names":["BondTransactionType","BondClientEnv","Program","AnchorProvider","PublicKey","Transaction","BN","LAMPORTS_PER_SOL","SYSVAR_EPOCH_SCHEDULE_PUBKEY","bs58"],"mappings":"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","file":"index.js","sourcesContent":["import { PublicKey } from '@solana/web3.js'\n\n/**\n * Program IDs for different environments\n */\nexport const ENV_PROGRAM_ID: Record<string, PublicKey> = {\n // [BondClientEnv.DEV]: new PublicKey('...'),\n}\n","{\n \"address\": \"BondQ7KqZreTcW2UbeTNDcLCJQ3aXAtLn2Fm6ftaJDU\",\n \"metadata\": {\n \"name\": \"jbond\",\n \"version\": \"0.2.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Jpool Bond Program\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"docs\": [\n \"Claims compensation for a validator.\",\n \"Transfers funds from the validator's bond account to reserve.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount of compensation to claim (must be positive).\",\n \"\",\n \"# Errors\",\n \"Fails if the authority is invalid, if the validator is not active,\",\n \"if the amount is zero, or if there are insufficient funds.\"\n ],\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"reserve\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority that can trigger claims\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"configure\",\n \"docs\": [\n \"Updates the global program configuration, including authority and reserve fields.\",\n \"Allows changing the program's authority and updating the reserve account.\",\n \"\",\n \"# Arguments\",\n \"* `data` - Configuration data containing optional new authority and reserve keys.\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to update the global configuration.\"\n ],\n \"discriminator\": [\n 245,\n 7,\n 108,\n 117,\n 95,\n 196,\n 54,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"global_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"ConfigureData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initializes the global state for the bonding program.\",\n \"Sets the authority and reserve account for managing validator bonds.\",\n \"\",\n \"# Errors\",\n \"Fails if the global state account is already initialized or if the payer lacks\",\n \"sufficient funds.\"\n ],\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"reserve\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"register\",\n \"docs\": [\n \"Registers a new validator with the bonding program.\",\n \"Sets up the validator's bond account and deposits initial collateral.\",\n \"\",\n \"# Arguments\",\n \"* `initial_collateral` - Amount of collateral to lock (must be positive).\",\n \"* `withdrawal_authority` - Optional key that can withdraw collateral later.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is already registered, if the vote account is invalid,\",\n \"or if the initial collateral transfer fails.\"\n ],\n \"discriminator\": [\n 211,\n 124,\n 67,\n 15,\n 211,\n 194,\n 178,\n 240\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\"\n },\n {\n \"name\": \"vote_account\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"The account creating the bond (pays for account creation and initial collateral)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"initial_collateral\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_withdraw_authority\",\n \"docs\": [\n \"Sets a new withdrawal authority for a validator's bond account.\",\n \"Allows changing who can withdraw collateral in the future.\",\n \"\",\n \"# Arguments\",\n \"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to\",\n \"identity).\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to change the withdrawal authority.\"\n ],\n \"discriminator\": [\n 199,\n 146,\n 140,\n 67,\n 1,\n 90,\n 8,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\",\n \"signer\": true\n },\n {\n \"name\": \"new_withdraw_authority\",\n \"optional\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"top_up\",\n \"docs\": [\n \"Adds additional collateral to an existing validator's bond.\",\n \"Increases the collateral balance, enhancing the validator's stake.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to add.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"or if the transfer of funds fails.\"\n ],\n \"discriminator\": [\n 236,\n 225,\n 96,\n 9,\n 60,\n 106,\n 77,\n 208\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"docs\": [\n \"Withdraws collateral from a validator's bond.\",\n \"Decreases the collateral balance, allowing the validator to reclaim funds.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to withdraw (must not exceed available balance).\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"if the withdrawal authority is invalid, or if the withdrawal would\",\n \"leave insufficient collateral.\"\n ],\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"withdrawal_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"epoch_schedule\",\n \"address\": \"SysvarEpochSchedu1e111111111111111111111111\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"GlobalState\",\n \"discriminator\": [\n 163,\n 46,\n 74,\n 168,\n 216,\n 123,\n 133,\n 98\n ]\n },\n {\n \"name\": \"ValidatorBond\",\n \"discriminator\": [\n 82,\n 127,\n 243,\n 208,\n 195,\n 42,\n 80,\n 35\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"CollateralToppedUp\",\n \"discriminator\": [\n 189,\n 137,\n 204,\n 58,\n 135,\n 182,\n 19,\n 176\n ]\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"discriminator\": [\n 51,\n 224,\n 133,\n 106,\n 74,\n 173,\n 72,\n 82\n ]\n },\n {\n \"name\": \"CompensationClaimed\",\n \"discriminator\": [\n 36,\n 159,\n 41,\n 178,\n 104,\n 135,\n 220,\n 32\n ]\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"discriminator\": [\n 20,\n 20,\n 190,\n 191,\n 53,\n 174,\n 95,\n 72\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidVoteAccount\",\n \"msg\": \"Invalid vote account\"\n },\n {\n \"code\": 6001,\n \"name\": \"IdentityMismatch\",\n \"msg\": \"Identity does not match vote account\"\n },\n {\n \"code\": 6002,\n \"name\": \"InsufficientCollateral\",\n \"msg\": \"Insufficient collateral amount\"\n },\n {\n \"code\": 6003,\n \"name\": \"TargetAprTooLow\",\n \"msg\": \"Target APR is below minimum threshold\"\n },\n {\n \"code\": 6004,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n },\n {\n \"code\": 6006,\n \"name\": \"ValidatorNotActive\",\n \"msg\": \"Validator bond account is not active\"\n },\n {\n \"code\": 6007,\n \"name\": \"ValidatorAlreadyRegistered\",\n \"msg\": \"Validator already registered\"\n },\n {\n \"code\": 6008,\n \"name\": \"Unauthorized\",\n \"msg\": \"Unauthorized\"\n },\n {\n \"code\": 6009,\n \"name\": \"WithdrawalLockedNearEpochEnd\",\n \"msg\": \"Withdrawals are locked near the end of the epoch.\"\n }\n ],\n \"types\": [\n {\n \"name\": \"CollateralToppedUp\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CompensationClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"ConfigureData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_reserve\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"GlobalState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority allowed to manage the program\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reserve\",\n \"docs\": [\n \"The reserve vault holding SOL for bonding and compensation\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_validators\",\n \"docs\": [\n \"Total number of registered validators\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation amount paid out\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorBond\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"docs\": [\n \"The validator identity pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"docs\": [\n \"The validator vote account pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the validator bond account\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"withdrawal_authority\",\n \"docs\": [\n \"Authority allowed to withdraw funds (if None, only identity can withdraw)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation claimed for the validator\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_compensation_amount\",\n \"docs\": [\n \"Last compensation amount claimed\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_compensation_epoch\",\n \"docs\": [\n \"Last epoch when compensation was claimed\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"docs\": [\n \"Timestamp when the bond account was created\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"is_active\",\n \"docs\": [\n \"Whether the validator is currently active\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"initial_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ]\n}","import type { BN } from '@coral-xyz/anchor'\nimport type { PublicKey } from '@solana/web3.js'\n\nexport * from './jbond'\n\nexport type ValidatorBond = {\n identity: PublicKey\n voteAccount: PublicKey\n withdrawalAuthority?: string\n totalWithdrawn: number\n lastWithdrawalEpoch: number\n isActive: boolean\n createdAt: number\n bump: number\n}\n\nexport type InitializeProps = {\n authority?: PublicKey\n reserve: PublicKey\n}\n\nexport type RegisterValidatorProps = {\n identity: PublicKey\n voteAccount: PublicKey\n initialCollateral: number\n creator?: PublicKey\n}\n\nexport type TopUpCollateralProps = {\n amount: number\n voteAccount: PublicKey\n payer?: PublicKey\n}\n\nexport type WithdrawCollateralProps = {\n amount: number\n voteAccount: PublicKey\n destination?: PublicKey\n withdrawalAuthority?: PublicKey\n}\n\nexport type ClaimProps = {\n amount: number\n voteAccount: PublicKey\n reserve?: PublicKey\n authority?: PublicKey\n}\n\nexport type GetHistoryProps = {\n voteAccount: PublicKey\n options?: {\n limit?: number\n before?: string\n until?: string\n }\n}\n\nexport type GetHistoryGroupedProps = {\n voteAccount: PublicKey\n epochsCount?: number\n}\n\nexport type ConfigureProps = {\n authority?: PublicKey\n newAuthority?: PublicKey\n newReserve?: PublicKey\n}\n\nexport type SetWithdrawAuthorityProps = {\n voteAccount: PublicKey\n newWithdrawAuthority?: PublicKey | null\n identity?: PublicKey\n}\n\nexport type GlobalState = {\n authority: PublicKey\n totalValidators: number\n totalCollateral: BN\n totalWithdrawn: BN\n bump: number\n}\n\nexport type EpochHistoryItem = {\n epoch: number\n deposits: number\n withdrawals: number\n balanceChange: number\n signatures: string[]\n}\n\nexport type TransactionHistoryItem = {\n signature: string\n slot: number\n epoch: number\n type: BondTransactionType\n amount: number\n beforeBalance?: number\n afterBalance?: number\n}\n\nexport enum BondTransactionType {\n Deposit = 'deposit',\n Withdrawal = 'withdrawal',\n Compensation = 'compensation',\n}\n","import type { Keypair, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js'\n\nfunction isVersionedTransaction(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return 'version' in tx\n}\n\nexport type Wallet = {\n publicKey: PublicKey\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>\n signTransaction: <T extends Transaction | VersionedTransaction>(tx: T) => Promise<T>\n signAllTransactions: <T extends Transaction | VersionedTransaction>(txs: T[]) => Promise<T[]>\n}\n\nexport class NodeWallet implements Wallet {\n constructor(readonly payer: Keypair) {}\n\n async signTransaction<T extends Transaction | VersionedTransaction>(\n tx: T,\n ): Promise<T> {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.payer])\n } else {\n tx.partialSign(this.payer)\n }\n\n return tx\n }\n\n async signAllTransactions<T extends Transaction | VersionedTransaction>(\n txs: T[],\n ): Promise<T[]> {\n return txs.map((t) => {\n if (isVersionedTransaction(t)) {\n t.sign([this.payer])\n } else {\n t.partialSign(this.payer)\n }\n return t\n })\n }\n\n get publicKey(): PublicKey {\n return this.payer.publicKey\n }\n}\n","import { Cluster } from '@solana/web3.js'\n\nexport * from './wallet'\n\nconst SLOTS_PER_EPOCH_MAINNET = 432_000\nconst SLOTS_PER_EPOCH_DEVNET = 400_000\n\nexport function slotToEpoch(slot: number, cluster: Cluster): number {\n const slotsPerEpoch = cluster === 'mainnet-beta' ? SLOTS_PER_EPOCH_MAINNET : SLOTS_PER_EPOCH_DEVNET\n return Math.floor(slot / slotsPerEpoch)\n}\n","import type {\n ClaimProps, ConfigureProps, EpochHistoryItem, InitializeProps, Jbond,\n RegisterValidatorProps, SetWithdrawAuthorityProps, TopUpCollateralProps, TransactionHistoryItem, WithdrawCollateralProps,\n} from './types'\nimport { AnchorProvider, BN, Program } from '@coral-xyz/anchor'\nimport {\n Connection, Keypair, LAMPORTS_PER_SOL, ParsedTransactionWithMeta, PublicKey,\n PublicKeyInitData, SYSVAR_EPOCH_SCHEDULE_PUBKEY, Transaction,\n} from '@solana/web3.js'\nimport bs58 from 'bs58'\nimport { ENV_PROGRAM_ID } from './constants'\nimport IDL from './idl/jbond.json'\nimport { BondTransactionType } from './types'\nimport { NodeWallet, slotToEpoch, Wallet } from './utils'\n\n/**\n * Enum for different client environments.\n */\nexport enum BondClientEnv { DEV = 'dev', STAGE = 'stage', PROD = 'prod' }\n\n/**\n * Options for configuring the JBondClient.\n */\nexport type ClientOptions = {\n // Optional custom program ID (defaults to the one in the IDL)\n programId?: PublicKey\n // Debug mode flag\n debug?: boolean\n} & Record<string, any>\n\nexport class JBondClient {\n readonly options: ClientOptions\n readonly program: Program<Jbond>\n\n constructor(readonly provider: AnchorProvider, options?: ClientOptions) {\n this.options = options ?? {}\n this.program = new Program(IDL, this.provider)\n }\n\n /**\n * Creates an instance of `JBondClient` using a provided connection and wallet.\n */\n static fromWallet(connection: Connection, wallet?: Wallet, options?: ClientOptions) {\n return new this(\n new AnchorProvider(\n connection,\n wallet ?? { publicKey: PublicKey.default } as Wallet,\n AnchorProvider.defaultOptions(),\n ),\n options,\n )\n }\n\n /**\n * Creates an instance of `JBondClient` using the provided connection and keypair.\n */\n static fromKeypair(connection: Connection, keypair: Keypair, options?: ClientOptions) {\n return JBondClient.fromWallet(connection, new NodeWallet(keypair), options)\n }\n\n /**\n * Get the current program ID.\n */\n get programId() {\n return this.options.programId ?? this.program.programId\n }\n\n /**\n * Get the current connection.\n */\n private get connection() {\n return this.provider.connection\n }\n\n /**\n * Set the environment.\n */\n env(env: BondClientEnv) {\n return this.configureEnv('programId', ENV_PROGRAM_ID[env])\n }\n\n /**\n * Configure a specific option.\n */\n configureEnv<K extends keyof ClientOptions>(key: K, val: ClientOptions[K]) {\n this.options[key] = val\n return this\n }\n\n /**\n * Program Derived Addresses (PDAs)\n */\n pda = {\n globalState: () => {\n return PublicKey.findProgramAddressSync(\n [Buffer.from('global_state')],\n this.programId,\n )\n },\n validatorBond: (vote: PublicKeyInitData) => {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from('validator_bond'),\n new PublicKey(vote).toBuffer(),\n ],\n this.programId,\n )\n },\n }\n\n /**\n * Initialize the program\n * Default authority is the provider's wallet\n */\n async initialize(props: InitializeProps) {\n const ix = await this.buildInitializeInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Register a new validator\n * Default creator is the provider's wallet\n */\n async registerValidator(props: RegisterValidatorProps) {\n const ix = await this.buildRegisterValidatorInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Top up collateral\n * Default payer is the provider's wallet\n */\n async topUpCollateral(props: TopUpCollateralProps) {\n const ix = await this.buildTopUpCollateralInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Withdraw collateral\n * Default withdrawal authority is the provider's wallet\n * Default destination is the provider's wallet\n * @return Transaction signature\n */\n async withdrawCollateral(props: WithdrawCollateralProps) {\n const ix = await this.buildWithdrawCollateralInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Claim compensation\n * Default authority is the provider's wallet\n * @return Transaction signature\n */\n async claimCompensation(props: ClaimProps) {\n const ix = await this.buildClaimInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Update global configuration for the program\n * Default authority is the provider's wallet\n * Only the current authority can call this\n * @return Transaction signature\n */\n async configure(props: ConfigureProps) {\n const ix = await this.buildConfigureInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Set withdrawal authority for validator bond\n * Only the validator identity can call this\n * Default identity is the provider's wallet\n * @return Transaction signature\n */\n async setWithdrawAuthority(props: SetWithdrawAuthorityProps) {\n const ix = await this.buildSetWithdrawAuthorityInstruction(props)\n return await this.provider.sendAndConfirm(new Transaction().add(ix))\n }\n\n /**\n * Build initialize instruction\n */\n async buildInitializeInstruction(props: InitializeProps) {\n const [globalState] = this.pda.globalState()\n const { reserve } = props\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .initialize()\n .accountsPartial({\n globalState,\n authority,\n reserve,\n })\n .instruction()\n }\n\n /**\n * Build register validator instruction\n */\n async buildRegisterValidatorInstruction(props: RegisterValidatorProps) {\n const { identity, voteAccount, initialCollateral } = props\n\n const [globalState] = this.pda.globalState()\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(initialCollateral * LAMPORTS_PER_SOL)\n const creator = props.creator ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .register(lamports)\n .accountsPartial({\n creator,\n globalState,\n validatorBond,\n identity,\n voteAccount,\n })\n .instruction()\n }\n\n /**\n * Build top up collateral instruction\n */\n async buildTopUpCollateralInstruction(props: TopUpCollateralProps) {\n const { voteAccount, amount } = props\n\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(amount * LAMPORTS_PER_SOL)\n const payer = props.payer ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .topUp(lamports)\n .accountsPartial({\n validatorBond,\n payer,\n })\n .instruction()\n }\n\n /**\n * Build withdraw collateral instruction\n */\n async buildWithdrawCollateralInstruction(props: WithdrawCollateralProps) {\n const { voteAccount, amount } = props\n\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const lamports = new BN(amount * LAMPORTS_PER_SOL)\n const withdrawalAuthority = props.withdrawalAuthority ?? this.provider.wallet.publicKey\n const destination = props.destination ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .withdraw(lamports)\n .accountsPartial({\n validatorBond,\n withdrawalAuthority,\n epochSchedule: SYSVAR_EPOCH_SCHEDULE_PUBKEY,\n destination,\n })\n .instruction()\n }\n\n /**\n * Build claim compensation instruction\n */\n async buildClaimInstruction(props: ClaimProps) {\n const [globalState] = this.pda.globalState()\n const [validatorBond] = this.pda.validatorBond(props.voteAccount)\n const lamports = new BN(props.amount * LAMPORTS_PER_SOL)\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n // If reserve is not provided, fetch it from global state\n let reserve = props.reserve\n if (!reserve) {\n const globalStateData = await this.getGlobalState()\n reserve = globalStateData.reserve\n if (!reserve) {\n throw new Error('Reserve address is not set in the global state. The program might not be initialized yet.')\n }\n }\n\n return this.program.methods\n .claim(lamports)\n .accountsPartial({\n globalState,\n validatorBond,\n reserve,\n authority,\n })\n .instruction()\n }\n\n /**\n * Build configure instruction\n */\n async buildConfigureInstruction(props: ConfigureProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .configure({\n newAuthority: props.newAuthority ?? null,\n newReserve: props.newReserve ?? null,\n })\n .accountsStrict({\n globalState,\n authority,\n })\n .instruction()\n }\n\n /**\n * Build set withdraw authority instruction\n */\n async buildSetWithdrawAuthorityInstruction(props: SetWithdrawAuthorityProps) {\n const { voteAccount, newWithdrawAuthority } = props\n const [validatorBond] = this.pda.validatorBond(voteAccount)\n const identity = props.identity ?? this.provider.wallet.publicKey\n\n return this.program.methods\n .setWithdrawAuthority()\n .accountsPartial({\n validatorBond,\n identity,\n newWithdrawAuthority: newWithdrawAuthority ?? null,\n })\n .instruction()\n }\n\n /**\n * Fetch global state or throw if not found\n */\n async getGlobalState() {\n const [globalState] = this.pda.globalState()\n return await this.program.account.globalState.fetch(globalState)\n }\n\n /**\n * Fetch validator bond data or null if not found\n * @param vote\n */\n async getValidatorBond(vote: PublicKeyInitData) {\n const [address] = this.pda.validatorBond(new PublicKey(vote))\n return await this.program.account.validatorBond.fetchNullable(address)\n }\n\n /**\n * Get validator bond account balance (in SOL)\n * @param vote - Vote account public key\n * @return Balance in SOL\n */\n async getValidatorBondBalance(vote: PublicKeyInitData) {\n const [address] = this.pda.validatorBond(new PublicKey(vote))\n const accountInfo = await this.connection.getAccountInfo(address)\n if (!accountInfo) {\n return 0\n }\n const { data, lamports } = accountInfo\n const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length)\n const availableBalance = Math.max(0, lamports - rentExempt)\n return availableBalance / LAMPORTS_PER_SOL\n }\n\n /**\n * Get transaction history grouped by epochs\n * @param vote - The vote account to get history for\n * @param epochsCount - Number of recent epochs to return (default: 10)\n * @returns Array of epoch history items sorted by epoch (descending)\n */\n async getHistoryGroupedByEpochs(\n vote: PublicKeyInitData,\n epochsCount = 10,\n ): Promise<EpochHistoryItem[]> {\n const epochInfo = await this.connection.getEpochInfo()\n const fullHistory = await this.getFullHistory(new PublicKey(vote))\n\n const epochMap = new Map<number, EpochHistoryItem>()\n\n for (const item of fullHistory) {\n if (item.epoch < epochInfo.epoch - epochsCount + 1) {\n continue\n }\n if (!epochMap.has(item.epoch)) {\n epochMap.set(item.epoch, {\n epoch: item.epoch,\n deposits: 0,\n withdrawals: 0,\n balanceChange: 0,\n signatures: [],\n })\n }\n\n const epochData = epochMap.get(item.epoch)!\n\n if (item.type === 'deposit') {\n epochData.deposits += item.amount\n } else if (item.type === 'withdrawal') {\n epochData.withdrawals += item.amount\n }\n\n if (!epochData.signatures.includes(item.signature)) {\n epochData.signatures.push(item.signature)\n }\n }\n\n for (const epochData of epochMap.values()) {\n epochData.balanceChange = epochData.deposits - epochData.withdrawals\n }\n\n return [...epochMap.values()].toSorted((a, b) => b.epoch - a.epoch)\n }\n\n /**\n * Get transaction history for a specific validator bond account\n */\n async getHistory(\n vote: PublicKey,\n options?: {\n cluster?: 'mainnet-beta' | 'testnet' | 'devnet'\n limit?: number\n before?: string\n until?: string\n },\n ): Promise<TransactionHistoryItem[]> {\n const [ValidatorBondAccount] = this.pda.validatorBond(new PublicKey(vote))\n\n const signatures = (await this.connection.getSignaturesForAddress(\n ValidatorBondAccount,\n {\n limit: options?.limit || 1000,\n before: options?.before,\n until: options?.until,\n },\n )).filter(sig => !sig.err)\n\n const signatureStrings = signatures.map(sig => sig.signature)\n\n const BATCH_SIZE = 100\n const allTransactions: (ParsedTransactionWithMeta | null)[] = []\n\n for (let i = 0; i < signatureStrings.length; i += BATCH_SIZE) {\n const batch = signatureStrings.slice(i, i + BATCH_SIZE)\n const transactions = await this.connection.getParsedTransactions(\n batch,\n {\n maxSupportedTransactionVersion: 0,\n },\n )\n allTransactions.push(...transactions)\n }\n\n const cluster = options?.cluster || 'mainnet-beta'\n\n const history: TransactionHistoryItem[] = []\n\n for (const [idx, tx] of allTransactions.entries()) {\n const sigInfo = signatures[idx]\n\n if (!tx || !tx.meta || tx.meta.err !== null) {\n continue\n }\n\n try {\n const slot = (tx.slot || 0)\n const instructions = tx.transaction.message.instructions\n\n for (const instruction of instructions) {\n if ('programId' in instruction && instruction.programId.equals(this.options.programId ?? this.program.programId)) {\n const ixData = instruction as any\n\n if ('parsed' in ixData && ixData.parsed) {\n continue\n }\n\n const data = ixData.data\n if (!data) {\n continue\n }\n\n let type: BondTransactionType | null = null\n let amount = 0\n\n try {\n const dataBuffer = bs58.decode(data)\n\n if (dataBuffer.length >= 16) {\n const discriminator = dataBuffer.slice(0, 8)\n\n const bondInitDiscriminator = this.getInstructionDiscriminator('register')\n const bondTopUpDiscriminator = this.getInstructionDiscriminator('topUp')\n const withdrawCompensationDiscriminator = this.getInstructionDiscriminator('claim')\n const bondWithdrawDiscriminator = this.getInstructionDiscriminator('withdraw')\n\n const amountBytes = dataBuffer.slice(8, 16)\n const amountBN = new BN(amountBytes, 'le')\n amount = amountBN.toNumber() / LAMPORTS_PER_SOL\n\n if (Buffer.from(discriminator).equals(Buffer.from(bondInitDiscriminator))) {\n type = BondTransactionType.Deposit\n } else if (Buffer.from(discriminator).equals(Buffer.from(bondTopUpDiscriminator))) {\n type = BondTransactionType.Deposit\n } else if (Buffer.from(discriminator).equals(Buffer.from(withdrawCompensationDiscriminator))) {\n type = BondTransactionType.Compensation\n } else if (Buffer.from(discriminator).equals(Buffer.from(bondWithdrawDiscriminator))) {\n type = BondTransactionType.Withdrawal\n }\n }\n } catch {\n console.warn('Failed to decode instruction data')\n }\n\n if (type && amount > 0) {\n let beforeBalance: number | undefined\n let afterBalance: number | undefined\n\n // Find the validator bond account in the account keys\n const accountIndex = tx.transaction.message.accountKeys.findIndex(\n key => key.pubkey.equals(ValidatorBondAccount),\n )\n\n if (accountIndex !== -1 && tx.meta.preBalances && tx.meta.postBalances) {\n beforeBalance = Number(tx.meta.preBalances[accountIndex] || 0) / LAMPORTS_PER_SOL\n afterBalance = Number(tx.meta.postBalances[accountIndex] || 0) / LAMPORTS_PER_SOL\n }\n\n history.push({\n signature: sigInfo!.signature,\n slot,\n epoch: slotToEpoch(slot, cluster),\n type,\n amount,\n beforeBalance,\n afterBalance,\n })\n }\n }\n }\n } catch (error) {\n console.error(`Error processing transaction ${sigInfo!.signature}:`, error)\n }\n }\n\n return history.toSorted((a, b) => b.slot - a.slot)\n }\n\n /**\n * Get full transaction history by paginating through results\n * @param voteAccount\n * @param pageSize\n */\n async getFullHistory(\n voteAccount: PublicKey,\n pageSize: number = 100,\n ): Promise<TransactionHistoryItem[]> {\n const allHistory: TransactionHistoryItem[] = []\n let before: string | undefined\n\n while (true) {\n const batch = await this.getHistory(voteAccount, {\n limit: pageSize,\n before,\n })\n\n if (batch.length === 0) {\n break\n }\n\n allHistory.push(...batch)\n\n // Get the signature of the last transaction for pagination\n before = batch.at(-1)?.signature\n\n // If we got less than the page size, we've reached the end\n if (batch.length < pageSize) {\n break\n }\n }\n\n return allHistory\n }\n\n /**\n * Get instruction discriminator from IDL\n * @param instructionName\n * @private\n */\n private getInstructionDiscriminator(instructionName: string): Uint8Array {\n const instruction = this.program.idl.instructions.find(ix => ix.name === instructionName)\n if (!instruction) {\n throw new Error(`Instruction ${instructionName} not found in IDL`)\n }\n\n if (!instruction.discriminator || !Array.isArray(instruction.discriminator)) {\n throw new Error(`Discriminator not found for instruction ${instructionName}`)\n }\n\n return new Uint8Array(instruction.discriminator)\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -123,6 +123,73 @@ var jbond_default = {
|
|
|
123
123
|
}
|
|
124
124
|
]
|
|
125
125
|
},
|
|
126
|
+
{
|
|
127
|
+
name: "configure",
|
|
128
|
+
docs: [
|
|
129
|
+
"Updates the global program configuration, including authority and reserve fields.",
|
|
130
|
+
"Allows changing the program's authority and updating the reserve account.",
|
|
131
|
+
"",
|
|
132
|
+
"# Arguments",
|
|
133
|
+
"* `data` - Configuration data containing optional new authority and reserve keys.",
|
|
134
|
+
"",
|
|
135
|
+
"# Errors",
|
|
136
|
+
"Fails if the signer is not authorized to update the global configuration."
|
|
137
|
+
],
|
|
138
|
+
discriminator: [
|
|
139
|
+
245,
|
|
140
|
+
7,
|
|
141
|
+
108,
|
|
142
|
+
117,
|
|
143
|
+
95,
|
|
144
|
+
196,
|
|
145
|
+
54,
|
|
146
|
+
217
|
|
147
|
+
],
|
|
148
|
+
accounts: [
|
|
149
|
+
{
|
|
150
|
+
name: "global_state",
|
|
151
|
+
writable: true,
|
|
152
|
+
pda: {
|
|
153
|
+
seeds: [
|
|
154
|
+
{
|
|
155
|
+
kind: "const",
|
|
156
|
+
value: [
|
|
157
|
+
103,
|
|
158
|
+
108,
|
|
159
|
+
111,
|
|
160
|
+
98,
|
|
161
|
+
97,
|
|
162
|
+
108,
|
|
163
|
+
95,
|
|
164
|
+
115,
|
|
165
|
+
116,
|
|
166
|
+
97,
|
|
167
|
+
116,
|
|
168
|
+
101
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: "authority",
|
|
176
|
+
signer: true,
|
|
177
|
+
relations: [
|
|
178
|
+
"global_state"
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
args: [
|
|
183
|
+
{
|
|
184
|
+
name: "data",
|
|
185
|
+
type: {
|
|
186
|
+
defined: {
|
|
187
|
+
name: "ConfigureData"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
126
193
|
{
|
|
127
194
|
name: "initialize",
|
|
128
195
|
docs: [
|
|
@@ -291,67 +358,6 @@ var jbond_default = {
|
|
|
291
358
|
}
|
|
292
359
|
]
|
|
293
360
|
},
|
|
294
|
-
{
|
|
295
|
-
name: "set_authority",
|
|
296
|
-
docs: [
|
|
297
|
-
"Sets a new withdrawal authority for a validator's bond account.",
|
|
298
|
-
"Allows changing who can withdraw collateral in the future.",
|
|
299
|
-
"",
|
|
300
|
-
"# Arguments",
|
|
301
|
-
"* `new_authority` - Optional new authority key (None to restrict to identity).",
|
|
302
|
-
"",
|
|
303
|
-
"# Errors",
|
|
304
|
-
"Fails if the signer is not authorized to change the authority."
|
|
305
|
-
],
|
|
306
|
-
discriminator: [
|
|
307
|
-
133,
|
|
308
|
-
250,
|
|
309
|
-
37,
|
|
310
|
-
21,
|
|
311
|
-
110,
|
|
312
|
-
163,
|
|
313
|
-
26,
|
|
314
|
-
121
|
|
315
|
-
],
|
|
316
|
-
accounts: [
|
|
317
|
-
{
|
|
318
|
-
name: "global_state",
|
|
319
|
-
writable: true,
|
|
320
|
-
pda: {
|
|
321
|
-
seeds: [
|
|
322
|
-
{
|
|
323
|
-
kind: "const",
|
|
324
|
-
value: [
|
|
325
|
-
103,
|
|
326
|
-
108,
|
|
327
|
-
111,
|
|
328
|
-
98,
|
|
329
|
-
97,
|
|
330
|
-
108,
|
|
331
|
-
95,
|
|
332
|
-
115,
|
|
333
|
-
116,
|
|
334
|
-
97,
|
|
335
|
-
116,
|
|
336
|
-
101
|
|
337
|
-
]
|
|
338
|
-
}
|
|
339
|
-
]
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
{
|
|
343
|
-
name: "authority",
|
|
344
|
-
signer: true,
|
|
345
|
-
relations: [
|
|
346
|
-
"global_state"
|
|
347
|
-
]
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
name: "new_authority"
|
|
351
|
-
}
|
|
352
|
-
],
|
|
353
|
-
args: []
|
|
354
|
-
},
|
|
355
361
|
{
|
|
356
362
|
name: "set_withdraw_authority",
|
|
357
363
|
docs: [
|
|
@@ -359,7 +365,8 @@ var jbond_default = {
|
|
|
359
365
|
"Allows changing who can withdraw collateral in the future.",
|
|
360
366
|
"",
|
|
361
367
|
"# Arguments",
|
|
362
|
-
"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to
|
|
368
|
+
"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to",
|
|
369
|
+
"identity).",
|
|
363
370
|
"",
|
|
364
371
|
"# Errors",
|
|
365
372
|
"Fails if the signer is not authorized to change the withdrawal authority."
|
|
@@ -785,6 +792,26 @@ var jbond_default = {
|
|
|
785
792
|
]
|
|
786
793
|
}
|
|
787
794
|
},
|
|
795
|
+
{
|
|
796
|
+
name: "ConfigureData",
|
|
797
|
+
type: {
|
|
798
|
+
kind: "struct",
|
|
799
|
+
fields: [
|
|
800
|
+
{
|
|
801
|
+
name: "new_authority",
|
|
802
|
+
type: {
|
|
803
|
+
option: "pubkey"
|
|
804
|
+
}
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
name: "new_reserve",
|
|
808
|
+
type: {
|
|
809
|
+
option: "pubkey"
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
]
|
|
813
|
+
}
|
|
814
|
+
},
|
|
788
815
|
{
|
|
789
816
|
name: "GlobalState",
|
|
790
817
|
type: {
|
|
@@ -1032,12 +1059,12 @@ var JBondClient = class _JBondClient {
|
|
|
1032
1059
|
* Set the environment.
|
|
1033
1060
|
*/
|
|
1034
1061
|
env(env) {
|
|
1035
|
-
return this.
|
|
1062
|
+
return this.configureEnv("programId", ENV_PROGRAM_ID[env]);
|
|
1036
1063
|
}
|
|
1037
1064
|
/**
|
|
1038
1065
|
* Configure a specific option.
|
|
1039
1066
|
*/
|
|
1040
|
-
|
|
1067
|
+
configureEnv(key, val) {
|
|
1041
1068
|
this.options[key] = val;
|
|
1042
1069
|
return this;
|
|
1043
1070
|
}
|
|
@@ -1105,12 +1132,13 @@ var JBondClient = class _JBondClient {
|
|
|
1105
1132
|
return await this.provider.sendAndConfirm(new Transaction().add(ix));
|
|
1106
1133
|
}
|
|
1107
1134
|
/**
|
|
1108
|
-
*
|
|
1135
|
+
* Update global configuration for the program
|
|
1109
1136
|
* Default authority is the provider's wallet
|
|
1137
|
+
* Only the current authority can call this
|
|
1110
1138
|
* @return Transaction signature
|
|
1111
1139
|
*/
|
|
1112
|
-
async
|
|
1113
|
-
const ix = await this.
|
|
1140
|
+
async configure(props) {
|
|
1141
|
+
const ix = await this.buildConfigureInstruction(props);
|
|
1114
1142
|
return await this.provider.sendAndConfirm(new Transaction().add(ix));
|
|
1115
1143
|
}
|
|
1116
1144
|
/**
|
|
@@ -1206,15 +1234,17 @@ var JBondClient = class _JBondClient {
|
|
|
1206
1234
|
}).instruction();
|
|
1207
1235
|
}
|
|
1208
1236
|
/**
|
|
1209
|
-
* Build
|
|
1237
|
+
* Build configure instruction
|
|
1210
1238
|
*/
|
|
1211
|
-
async
|
|
1239
|
+
async buildConfigureInstruction(props) {
|
|
1212
1240
|
const [globalState] = this.pda.globalState();
|
|
1213
1241
|
const authority = props.authority ?? this.provider.wallet.publicKey;
|
|
1214
|
-
return this.program.methods.
|
|
1242
|
+
return this.program.methods.configure({
|
|
1243
|
+
newAuthority: props.newAuthority ?? null,
|
|
1244
|
+
newReserve: props.newReserve ?? null
|
|
1245
|
+
}).accountsStrict({
|
|
1215
1246
|
globalState,
|
|
1216
|
-
authority
|
|
1217
|
-
newAuthority: props.newAuthority
|
|
1247
|
+
authority
|
|
1218
1248
|
}).instruction();
|
|
1219
1249
|
}
|
|
1220
1250
|
/**
|