@hodlmarkets/sdk 0.1.0 → 0.1.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/README.md +6 -6
- package/dist/accounts.cjs +22 -0
- package/dist/accounts.cjs.map +1 -1
- package/dist/accounts.js +22 -0
- package/dist/accounts.js.map +1 -1
- package/dist/client.cjs +340 -28
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +6 -2
- package/dist/client.d.ts +6 -2
- package/dist/client.js +341 -29
- package/dist/client.js.map +1 -1
- package/dist/constants.cjs +3 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +5 -3
- package/dist/constants.d.ts +5 -3
- package/dist/constants.js +3 -2
- package/dist/constants.js.map +1 -1
- package/dist/events.cjs +333 -14
- package/dist/events.cjs.map +1 -1
- package/dist/events.d.cts +9 -0
- package/dist/events.d.ts +9 -0
- package/dist/events.js +334 -15
- package/dist/events.js.map +1 -1
- package/dist/index.cjs +375 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +375 -32
- package/dist/index.js.map +1 -1
- package/dist/instructions.cjs +22 -0
- package/dist/instructions.cjs.map +1 -1
- package/dist/instructions.js +22 -0
- package/dist/instructions.js.map +1 -1
- package/dist/math.cjs +33 -0
- package/dist/math.cjs.map +1 -1
- package/dist/math.d.cts +14 -4
- package/dist/math.d.ts +14 -4
- package/dist/math.js +33 -1
- package/dist/math.js.map +1 -1
- package/dist/pda.cjs +1 -0
- package/dist/pda.cjs.map +1 -1
- package/dist/pda.js +1 -0
- package/dist/pda.js.map +1 -1
- package/dist/transaction.cjs +0 -13
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.d.cts +5 -3
- package/dist/transaction.d.ts +5 -3
- package/dist/transaction.js +1 -13
- package/dist/transaction.js.map +1 -1
- package/dist/types.d.cts +3 -0
- package/dist/types.d.ts +3 -0
- package/package.json +5 -3
package/dist/client.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/pda.ts","../src/idl/hodl.json","../src/program.ts","../src/accounts.ts","../src/instructions.ts","../src/transaction.ts","../src/events.ts","../src/client.ts"],"names":["PublicKey","BN","AnchorProvider","Program","getAssociatedTokenAddressSync","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","SystemProgram","SYSVAR_RENT_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","ComputeBudgetProgram","TransactionMessage","VersionedTransaction","BorshCoder","EventParser"],"mappings":"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","file":"client.cjs","sourcesContent":["import { PublicKey } from '@solana/web3.js'\nimport BN from 'bn.js'\n\nexport const BPS_DENOMINATOR = 10_000\n\nexport const PROGRAM_ID = new PublicKey('hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG')\nexport const PROTOCOL_AUTHORITY = new PublicKey('EFAquDGAHjkoPB6TGKVibD3BYhbFXNDjuXKpiBHdYzji')\n\nexport const VIRTUAL_SOL = new BN('30000000000')\nexport const TOTAL_SUPPLY = new BN('1000000000000000')\nexport const PROTOCOL_MINT_FEE = new BN('100000000')\nexport const DECIMALS = 6\n\nexport const SEEDS = {\n POOL: Buffer.from('pool'),\n VAULT_AUTHORITY: Buffer.from('vault_authority'),\n SOL_VAULT: Buffer.from('sol_vault'),\n POSITION: Buffer.from('position'),\n PROTOCOL_FEES: Buffer.from('protocol_fees'),\n EVENT_AUTHORITY: Buffer.from('__event_authority'),\n} as const\n\nexport const MAINNET_CONFIG = {\n programId: PROGRAM_ID,\n virtualSol: VIRTUAL_SOL,\n protocolAuthority: PROTOCOL_AUTHORITY,\n protocolMintFee: PROTOCOL_MINT_FEE,\n decimals: DECIMALS,\n totalSupply: TOTAL_SUPPLY,\n} as const\n\nexport const DEVNET_CONFIG = {\n programId: PROGRAM_ID,\n virtualSol: VIRTUAL_SOL,\n protocolAuthority: PROTOCOL_AUTHORITY,\n protocolMintFee: PROTOCOL_MINT_FEE,\n decimals: DECIMALS,\n totalSupply: TOTAL_SUPPLY,\n} as const\n\n/** Trade fee in basis points (25 bps = 0.25%). Only applies after vest_duration has passed. */\nexport const TRADE_FEE_BPS = 25\n\n/** Allowed vest duration modes (in seconds). The program only accepts these values. */\nexport const VEST_DURATION = {\n ONE_MINUTE: 60,\n TEN_MINUTES: 600,\n} as const\n\nexport type VestDuration = typeof VEST_DURATION[keyof typeof VEST_DURATION]\n\nexport const LIMITS = {\n NAME: { min: 1, max: 32 },\n SYMBOL: { min: 1, max: 16 },\n URI: { min: 10, max: 100 },\n DESCRIPTION: { min: 0, max: 200 },\n} as const\n","import { PublicKey } from '@solana/web3.js'\nimport { SEEDS } from './constants'\n\nexport function getPoolStatePDA(mint: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.POOL, mint.toBuffer()], programId)\n}\n\nexport function getVaultAuthorityPDA(poolState: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.VAULT_AUTHORITY, poolState.toBuffer()], programId)\n}\n\nexport function getSolVaultPDA(poolState: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.SOL_VAULT, poolState.toBuffer()], programId)\n}\n\nexport function getPositionPDA(poolState: PublicKey, owner: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.POSITION, poolState.toBuffer(), owner.toBuffer()], programId)\n}\n\nexport function getProtocolFeesPDA(programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.PROTOCOL_FEES], programId)\n}\n\nexport function getEventAuthorityPDA(programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.EVENT_AUTHORITY], programId)\n}\n","{\n \"address\": \"hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG\",\n \"metadata\": {\n \"name\": \"hodl\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\"\n },\n \"instructions\": [\n {\n \"name\": \"buy\",\n \"docs\": [\n \"Buy tokens from the vAMM\",\n \"\",\n \"Tokens are split into tradable (immediate) and vaulted (accrue linearly).\",\n \"Allocation is based on token-amount range bands: 40/60 at 0-50M, +5% per 50M band, 100/0 at 600M+.\",\n \"After vest_duration passes, all buys are 100% tradable.\"\n ],\n \"discriminator\": [\n 102,\n 6,\n 61,\n 18,\n 1,\n 218,\n 235,\n 234\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"buyer_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n }\n ]\n }\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"sol_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_tokens_out\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"claim_accrued\",\n \"docs\": [\n \"Claim accrued tokens\",\n \"Transfers tokens that have accrued from vaulted to tradable from vault to wallet\"\n ],\n \"discriminator\": [\n 209,\n 92,\n 30,\n 216,\n 89,\n 249,\n 122,\n 243\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state.mint\",\n \"account\": \"PoolState\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"user_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"close_position\",\n \"docs\": [\n \"Close an empty position account and reclaim rent\"\n ],\n \"discriminator\": [\n 123,\n 134,\n 81,\n 0,\n 49,\n 68,\n 98,\n 98\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"user_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"create_token\",\n \"docs\": [\n \"Create a new token and initialize vAMM pool\"\n ],\n \"discriminator\": [\n 84,\n 52,\n 204,\n 228,\n 24,\n 140,\n 234,\n 75\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_authority\"\n },\n {\n \"name\": \"mint\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"metadata\",\n \"writable\": true\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true\n },\n {\n \"name\": \"protocol_fee_wallet\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n },\n {\n \"name\": \"metadata_program\"\n },\n {\n \"name\": \"sysvar_instructions\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"pool_description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n }\n ]\n },\n {\n \"name\": \"emergency_withdraw_sol\",\n \"docs\": [\n \"Emergency withdraw SOL from a pool's sol_vault\"\n ],\n \"discriminator\": [\n 219,\n 156,\n 123,\n 176,\n 91,\n 105,\n 30,\n 160\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\"\n },\n {\n \"name\": \"sol_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\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\": \"sell\",\n \"docs\": [\n \"Sell tokens back to the vAMM\",\n \"If sell_percentage is provided, it overrides token_amount\"\n ],\n \"discriminator\": [\n 51,\n 230,\n 133,\n 164,\n 1,\n 127,\n 131,\n 173\n ],\n \"accounts\": [\n {\n \"name\": \"seller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"seller\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"seller_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_sol_out\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sell_percentage\",\n \"type\": {\n \"option\": \"u8\"\n }\n }\n ]\n },\n {\n \"name\": \"withdraw_protocol_fees\",\n \"docs\": [\n \"Withdraw accumulated protocol fees\"\n ],\n \"discriminator\": [\n 11,\n 68,\n 165,\n 98,\n 18,\n 208,\n 134,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_fee_wallet\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\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\": \"PoolState\",\n \"discriminator\": [\n 247,\n 237,\n 227,\n 245,\n 215,\n 195,\n 222,\n 70\n ]\n },\n {\n \"name\": \"Position\",\n \"discriminator\": [\n 170,\n 188,\n 143,\n 228,\n 122,\n 64,\n 247,\n 208\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AccrualClaimed\",\n \"discriminator\": [\n 86,\n 99,\n 51,\n 211,\n 226,\n 48,\n 235,\n 238\n ]\n },\n {\n \"name\": \"PositionClosed\",\n \"discriminator\": [\n 157,\n 163,\n 227,\n 228,\n 13,\n 97,\n 138,\n 121\n ]\n },\n {\n \"name\": \"TokenCreated\",\n \"discriminator\": [\n 236,\n 19,\n 41,\n 255,\n 130,\n 78,\n 147,\n 172\n ]\n },\n {\n \"name\": \"TokenPurchased\",\n \"discriminator\": [\n 3,\n 73,\n 186,\n 50,\n 15,\n 181,\n 213,\n 37\n ]\n },\n {\n \"name\": \"TokenSold\",\n \"discriminator\": [\n 88,\n 61,\n 1,\n 247,\n 185,\n 6,\n 252,\n 86\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 7005,\n \"name\": \"InsufficientTokens\",\n \"msg\": \"Insufficient token reserves in vault\"\n },\n {\n \"code\": 7100,\n \"name\": \"ArithmeticOverflow\",\n \"msg\": \"Arithmetic overflow\"\n },\n {\n \"code\": 7102,\n \"name\": \"DivisionError\",\n \"msg\": \"Division by zero or invalid division\"\n },\n {\n \"code\": 7104,\n \"name\": \"TokenOverflow\",\n \"msg\": \"Token calculation overflow\"\n },\n {\n \"code\": 7105,\n \"name\": \"TokenUnderflow\",\n \"msg\": \"Token calculation underflow\"\n },\n {\n \"code\": 7200,\n \"name\": \"SlippageExceeded\",\n \"msg\": \"Slippage exceeded: output below minimum threshold\"\n },\n {\n \"code\": 7312,\n \"name\": \"AccrualCalculationOverflow\",\n \"msg\": \"Accrual calculation overflow\"\n },\n {\n \"code\": 7315,\n \"name\": \"PositionNotEmpty\",\n \"msg\": \"Position is not empty, must sell all tokens first\"\n },\n {\n \"code\": 7319,\n \"name\": \"InvalidProtocolAuthority\",\n \"msg\": \"Invalid protocol authority - must match PROTOCOL_AUTHORITY constant\"\n },\n {\n \"code\": 7321,\n \"name\": \"MustHaveUnlockedPortion\",\n \"msg\": \"Position must have tokens to perform this operation\"\n },\n {\n \"code\": 7500,\n \"name\": \"PositionNotOwnedBySigner\",\n \"msg\": \"Position not owned by signer\"\n },\n {\n \"code\": 7505,\n \"name\": \"InvalidSolVaultPDA\",\n \"msg\": \"SOL vault PDA derivation mismatch\"\n },\n {\n \"code\": 7601,\n \"name\": \"InvalidVestingType\",\n \"msg\": \"Invalid vesting type\"\n },\n {\n \"code\": 7604,\n \"name\": \"InvalidPercentage\",\n \"msg\": \"Invalid percentage value (must be 0-100)\"\n },\n {\n \"code\": 7901,\n \"name\": \"NotAuthorized\",\n \"msg\": \"Not authorized\"\n },\n {\n \"code\": 8014,\n \"name\": \"InsufficientLiquidity\",\n \"msg\": \"Insufficient liquidity\"\n },\n {\n \"code\": 8018,\n \"name\": \"VammNotActive\",\n \"msg\": \"vAMM is not active\"\n },\n {\n \"code\": 8020,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AccrualClaimed\",\n \"docs\": [\n \"Event emitted when accrued tokens are claimed\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"tokens_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_tradable_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"remaining_vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PoolMetadata\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"docs\": [\n \"Optional pool name\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"docs\": [\n \"Optional pool description\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"version\",\n \"docs\": [\n \"Pool version\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PoolState\",\n \"docs\": [\n \"Pool state account - main state for a vAMM pool\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Pool authority (creator)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"Token mint for this pool\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_vault\",\n \"docs\": [\n \"Token vault (holds unsold tokens)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_authority\",\n \"docs\": [\n \"Vault authority (PDA)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sol_vault\",\n \"docs\": [\n \"Pool SOL vault (holds raised SOL)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_positions\",\n \"docs\": [\n \"Total number of positions in this pool\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creation_timestamp\",\n \"docs\": [\n \"Pool creation timestamp (Unix timestamp)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"last_update_timestamp\",\n \"docs\": [\n \"Last update timestamp (Unix timestamp)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"metadata\",\n \"docs\": [\n \"Pool metadata\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"PoolMetadata\"\n }\n }\n },\n {\n \"name\": \"vest_duration\",\n \"docs\": [\n \"=== ACCRUAL SYSTEM FIELDS ===\",\n \"Dev-set unlock duration in seconds (applies to all traders)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"next_position_number\",\n \"docs\": [\n \"Next position number to assign (sequential counter for display/identity)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_active\",\n \"docs\": [\n \"=== VAMM STATE ===\",\n \"vAMM is active for trading\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"docs\": [\n \"Real SOL in the vAMM\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"docs\": [\n \"Real tokens in the vAMM\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_k\",\n \"docs\": [\n \"The invariant k (set at creation, never changes)\",\n \"k = (vamm_real_sol + VIRTUAL_SOL) * vamm_tokens\"\n ],\n \"type\": \"u128\"\n },\n {\n \"name\": \"tokens_sold\",\n \"docs\": [\n \"Cumulative tokens bought from vAMM (increases on buy, decreases on sell)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_reserved_for_claims\",\n \"docs\": [\n \"Vault tokens reserved for position claims (not available for vAMM liquidity)\",\n \"Incremented on buy (vaulted portion), decremented on claim_accrued\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump_vault_auth\",\n \"docs\": [\n \"Bump seeds for PDAs\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump_pool\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Position\",\n \"docs\": [\n \"Position in a vAMM pool\",\n \"Tokens split into tradable (immediate) and vaulted (accrue linearly over vest_duration)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner's public key\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"pool\",\n \"docs\": [\n \"Pool this position belongs to\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Tradable tokens (can be sold immediately)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"docs\": [\n \"Vaulted tokens (accruing linearly to tradable)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"docs\": [\n \"SOL spent on this position\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"docs\": [\n \"Cumulative tokens transferred to wallet (for claim_accrued tracking)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"entry_timestamp\",\n \"docs\": [\n \"Entry timestamp (for accrual calculation)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"docs\": [\n \"Cumulative initial vaulted tokens from all buys (for accrual calculation)\",\n \"This tracks the total vaulted amount at buy time, used to calculate accrual progress\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"position_number\",\n \"docs\": [\n \"Position number in the pool (sequential counter for display/identity)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_update_timestamp\",\n \"docs\": [\n \"Last update timestamp\"\n ],\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionClosed\",\n \"docs\": [\n \"Event emitted when a position account is closed\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"rent_reclaimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenCreated\",\n \"docs\": [\n \"Event emitted when a new token and vAMM pool is created\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"total_supply\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_k\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"creation_timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenPurchased\",\n \"docs\": [\n \"Event emitted when tokens are bought\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"buyer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sol_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_received\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_sold\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position_number\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"unlock_time_seconds\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Position state after buy\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenSold\",\n \"docs\": [\n \"Event emitted when tokens are sold\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"seller\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_received\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_sold\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position_number\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"unlock_time_seconds\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Position state after sell\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ]\n}","import { Connection, PublicKey } from '@solana/web3.js'\nimport { Program, AnchorProvider } from '@coral-xyz/anchor'\nimport type { Hodl } from './idl/hodl'\nimport IDL from './idl/hodl.json'\n\nconst DUMMY_WALLET = {\n publicKey: PublicKey.default,\n signTransaction: async <T>(tx: T): Promise<T> => tx,\n signAllTransactions: async <T>(txs: T[]): Promise<T[]> => txs,\n}\n\nexport function getProgram(connection: Connection): Program<Hodl> {\n const provider = new AnchorProvider(connection, DUMMY_WALLET as any, { commitment: 'confirmed' })\n return new Program<Hodl>(IDL as unknown as Hodl, provider)\n}\n","import { Connection, PublicKey } from '@solana/web3.js'\nimport type { PoolState, Position, SdkConfig } from './types'\nimport { getPoolStatePDA, getPositionPDA } from './pda'\nimport { getProgram } from './program'\n\nexport async function fetchPoolState(\n connection: Connection,\n mint: PublicKey,\n config: SdkConfig,\n): Promise<PoolState> {\n const program = getProgram(connection)\n const [poolStatePDA] = getPoolStatePDA(mint, config.programId)\n return program.account.poolState.fetch(poolStatePDA) as unknown as PoolState\n}\n\nexport async function fetchPosition(\n connection: Connection,\n poolState: PublicKey,\n owner: PublicKey,\n config: SdkConfig,\n): Promise<Position> {\n const program = getProgram(connection)\n const [positionPDA] = getPositionPDA(poolState, owner, config.programId)\n return program.account.position.fetch(positionPDA) as unknown as Position\n}\n\nexport async function fetchPoolStateByAddress(\n connection: Connection,\n poolStatePDA: PublicKey,\n): Promise<PoolState> {\n const program = getProgram(connection)\n return program.account.poolState.fetch(poolStatePDA) as unknown as PoolState\n}\n","import {\n Connection,\n PublicKey,\n TransactionInstruction,\n SystemProgram,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n} from '@solana/web3.js'\nimport { getAssociatedTokenAddressSync, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport type { SdkConfig, BuyParams, SellParams, CreateTokenParams } from './types'\n\nimport {\n getPoolStatePDA,\n getVaultAuthorityPDA,\n getSolVaultPDA,\n getPositionPDA,\n getEventAuthorityPDA,\n getProtocolFeesPDA,\n} from './pda'\nimport { getProgram } from './program'\n\nconst METADATA_PROGRAM_ID = new PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s')\n\nfunction getMetadataPDA(mint: PublicKey): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from('metadata'), METADATA_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n METADATA_PROGRAM_ID,\n )\n return pda\n}\n\nexport async function buildBuyInstruction(params: BuyParams & {\n buyer: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { buyer, mint, solAmount, minTokensOut, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const buyerTokenAccount = getAssociatedTokenAddressSync(mint, buyer)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [position] = getPositionPDA(poolState, buyer, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .buy(solAmount, minTokensOut)\n .accountsPartial({\n buyer,\n poolState,\n tokenVault,\n vaultAuthority,\n buyerTokenAccount,\n poolSolAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n position,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildSellInstruction(params: SellParams & {\n seller: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { seller, mint, tokenAmount, minSolOut, sellPercentage, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const sellerTokenAccount = getAssociatedTokenAddressSync(mint, seller)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [position] = getPositionPDA(poolState, seller, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .sell(tokenAmount, minSolOut, sellPercentage ?? null)\n .accountsPartial({\n seller,\n poolState,\n position,\n tokenVault,\n vaultAuthority,\n sellerTokenAccount,\n poolSolAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildCreateTokenInstruction(params: CreateTokenParams & {\n creator: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { creator, mint, name, symbol, uri, poolDescription, vestDuration, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const metadata = getMetadataPDA(mint)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [protocolFeeWallet] = getProtocolFeesPDA(config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .createToken(name, symbol, uri, poolDescription, vestDuration)\n .accountsPartial({\n creator,\n protocolAuthority: config.protocolAuthority,\n mint,\n poolState,\n tokenVault,\n vaultAuthority,\n metadata,\n poolSolAccount,\n protocolFeeWallet,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n metadataProgram: METADATA_PROGRAM_ID,\n sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildClaimAccruedInstruction(params: {\n owner: PublicKey\n poolState: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { owner, poolState, connection, config } = params\n const program = getProgram(connection)\n\n // Fetch pool state to get mint — needed for token vault and user ATA derivation\n const poolData = await program.account.poolState.fetch(poolState)\n const mint = poolData.mint\n\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const userTokenAccount = getAssociatedTokenAddressSync(mint, owner)\n const [position] = getPositionPDA(poolState, owner, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .claimAccrued()\n .accountsPartial({\n owner,\n poolState,\n position,\n tokenVault,\n vaultAuthority,\n userTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildClosePositionInstruction(params: {\n owner: PublicKey\n poolState: PublicKey\n mint: PublicKey\n userTokenAccount: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { owner, poolState, mint, userTokenAccount, connection, config } = params\n const program = getProgram(connection)\n\n const [position] = getPositionPDA(poolState, owner, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .closePosition()\n .accountsPartial({\n owner,\n poolState,\n position,\n userTokenAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n","import {\n Connection,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n ComputeBudgetProgram,\n} from '@solana/web3.js'\n\nexport interface TxOptions {\n priorityFee?: number // microlamports per CU\n computeUnits?: number\n skipPreflight?: boolean\n}\n\nexport async function buildTransaction(\n connection: Connection,\n instructions: TransactionInstruction[],\n payer: PublicKey,\n opts: TxOptions = {},\n): Promise<VersionedTransaction> {\n const cuLimit = opts.computeUnits ?? 200_000\n const priorityFee = opts.priorityFee ?? 1_000\n\n const computeIxs: TransactionInstruction[] = [\n ComputeBudgetProgram.setComputeUnitLimit({ units: cuLimit }),\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),\n ]\n\n const { blockhash } = await connection.getLatestBlockhash('confirmed')\n\n const message = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions: [...computeIxs, ...instructions],\n }).compileToV0Message()\n\n return new VersionedTransaction(message)\n}\n\nexport async function sendTransaction(\n connection: Connection,\n tx: VersionedTransaction,\n opts: TxOptions = {},\n): Promise<string> {\n const sig = await connection.sendTransaction(tx, {\n skipPreflight: opts.skipPreflight ?? false,\n maxRetries: 3,\n })\n const latestBlockhash = await connection.getLatestBlockhash('confirmed')\n await connection.confirmTransaction({\n signature: sig,\n ...latestBlockhash,\n }, 'confirmed')\n return sig\n}\n","import { Connection } from '@solana/web3.js'\nimport { BorshCoder, EventParser } from '@coral-xyz/anchor'\nimport type { VersionedTransactionResponse } from '@solana/web3.js'\nimport type {\n HodlEvent,\n SdkConfig,\n TokenPurchasedEvent,\n TokenSoldEvent,\n TokenCreatedEvent,\n AccrualClaimedEvent,\n PositionClosedEvent,\n} from './types'\nimport IDL from './idl/hodl.json'\n\nexport function parseTransactionEvents(tx: VersionedTransactionResponse | null, config: SdkConfig): HodlEvent[]\nexport function parseTransactionEvents(logs: string[], config: SdkConfig): HodlEvent[]\nexport function parseTransactionEvents(\n input: VersionedTransactionResponse | string[] | null,\n config: SdkConfig,\n): HodlEvent[] {\n if (!input) return []\n const logs = Array.isArray(input) ? input : (input.meta?.logMessages ?? [])\n if (logs.length === 0) return []\n const coder = new BorshCoder(IDL as any)\n const parser = new EventParser(config.programId, coder)\n const events: HodlEvent[] = []\n try {\n for (const event of parser.parseLogs(logs)) {\n events.push({ name: event.name, data: event.data } as HodlEvent)\n }\n } catch {\n // EventParser throws on malformed logs — return whatever was parsed\n }\n return events\n}\n\nexport async function fetchAndParseTransaction(\n connection: Connection,\n signature: string,\n config: SdkConfig,\n): Promise<HodlEvent[]> {\n const tx = await connection.getTransaction(signature, {\n commitment: 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n return parseTransactionEvents(tx, config)\n}\n\nexport interface SubscriptionOptions {\n commitment?: 'processed' | 'confirmed' | 'finalized'\n onError?: (err: Error) => void\n}\n\nexport function subscribeToEvents(\n connection: Connection,\n config: SdkConfig,\n onEvent: (event: HodlEvent, slot: number, signature: string) => void,\n opts: SubscriptionOptions = {},\n): number {\n const commitment = opts.commitment ?? 'confirmed'\n const coder = new BorshCoder(IDL as any)\n const parser = new EventParser(config.programId, coder)\n\n return connection.onLogs(\n config.programId,\n ({ logs, err, signature }, context) => {\n if (err) {\n opts.onError?.(new Error(`Log subscription error: ${JSON.stringify(err)}`))\n return\n }\n try {\n for (const event of parser.parseLogs(logs)) {\n onEvent(\n { name: event.name, data: event.data } as HodlEvent,\n context.slot,\n signature,\n )\n }\n } catch (e) {\n opts.onError?.(e instanceof Error ? e : new Error(String(e)))\n }\n },\n commitment,\n )\n}\n\nexport function unsubscribeFromEvents(\n connection: Connection,\n subscriptionId: number,\n): Promise<void> {\n return connection.removeOnLogsListener(subscriptionId)\n}\n\nexport function subscribeToTokenPurchased(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenPurchasedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenPurchased') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToTokenSold(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenSoldEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenSold') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToTokenCreated(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenCreatedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenCreated') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToAccrualClaimed(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: AccrualClaimedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'accrualClaimed') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToPositionClosed(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: PositionClosedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'positionClosed') onEvent(event.data, slot, sig)\n }, opts)\n}\n","import { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js'\nimport type { SdkConfig, BuyParams, SellParams, CreateTokenParams, PoolState, Position, HodlEvent } from './types'\nimport { MAINNET_CONFIG } from './constants'\nimport { fetchPoolState, fetchPosition } from './accounts'\nimport {\n buildBuyInstruction,\n buildSellInstruction,\n buildCreateTokenInstruction,\n buildClaimAccruedInstruction,\n buildClosePositionInstruction,\n} from './instructions'\nimport { buildTransaction, sendTransaction, type TxOptions } from './transaction'\nimport {\n subscribeToEvents as _subscribeToEvents,\n unsubscribeFromEvents,\n fetchAndParseTransaction as _fetchAndParseTransaction,\n type SubscriptionOptions,\n} from './events'\n\nexport class HodlClient {\n readonly connection: Connection\n readonly config: SdkConfig\n\n constructor({ connection, config }: { connection: Connection; config?: SdkConfig }) {\n this.connection = connection\n this.config = config ?? MAINNET_CONFIG\n }\n\n fetchPool(mint: PublicKey): Promise<PoolState> {\n return fetchPoolState(this.connection, mint, this.config)\n }\n\n fetchPosition(poolState: PublicKey, owner: PublicKey): Promise<Position> {\n return fetchPosition(this.connection, poolState, owner, this.config)\n }\n\n async buy(params: BuyParams & { mint: PublicKey; buyer: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildBuyInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.buyer, opts)\n }\n\n async sell(params: SellParams & { mint: PublicKey; seller: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildSellInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.seller, opts)\n }\n\n async createToken(params: CreateTokenParams & { creator: PublicKey; mint: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildCreateTokenInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.creator, opts)\n }\n\n async claimAccrued(params: { owner: PublicKey; poolState: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildClaimAccruedInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.owner, opts)\n }\n\n async closePosition(params: { owner: PublicKey; poolState: PublicKey; mint: PublicKey; userTokenAccount: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildClosePositionInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.owner, opts)\n }\n\n send(tx: VersionedTransaction, opts?: TxOptions): Promise<string> {\n return sendTransaction(this.connection, tx, opts)\n }\n\n subscribeToEvents(\n onEvent: (event: HodlEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n ): number {\n return _subscribeToEvents(this.connection, this.config, onEvent, opts)\n }\n\n unsubscribe(subscriptionId: number): Promise<void> {\n return unsubscribeFromEvents(this.connection, subscriptionId)\n }\n\n fetchAndParseTransaction(signature: string): Promise<HodlEvent[]> {\n return _fetchAndParseTransaction(this.connection, signature, this.config)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/safe-buffer/index.js","../node_modules/base-x/src/index.js","../node_modules/bs58/index.js","../src/constants.ts","../src/pda.ts","../src/idl/hodl.json","../src/program.ts","../src/accounts.ts","../src/instructions.ts","../src/transaction.ts","../src/events.ts","../src/client.ts"],"names":["exports","Buffer","i","j","PublicKey","BN","AnchorProvider","Program","getAssociatedTokenAddressSync","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","SystemProgram","SYSVAR_RENT_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","ComputeBudgetProgram","TransactionMessage","VersionedTransaction","BorshCoder","bs58","utils"],"mappings":"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","file":"client.cjs","sourcesContent":["/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import { PublicKey } from '@solana/web3.js'\nimport BN from 'bn.js'\n\nexport const BPS_DENOMINATOR = 10_000\n\nexport const PROGRAM_ID = new PublicKey('hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG')\nexport const PROTOCOL_AUTHORITY = new PublicKey('EFAquDGAHjkoPB6TGKVibD3BYhbFXNDjuXKpiBHdYzji')\n\nexport const VIRTUAL_SOL = new BN('30000000000')\nexport const TOTAL_SUPPLY = new BN('1000000000000000')\nexport const PROTOCOL_MINT_FEE = new BN('100000000')\nexport const DECIMALS = 6\n\nexport const SEEDS = {\n POOL: Buffer.from('pool'),\n VAULT_AUTHORITY: Buffer.from('vault_authority'),\n SOL_VAULT: Buffer.from('sol_vault'),\n POSITION: Buffer.from('position'),\n PROTOCOL_FEES: Buffer.from('protocol_fees'),\n EVENT_AUTHORITY: Buffer.from('__event_authority'),\n} as const\n\nexport const MAINNET_CONFIG = {\n programId: PROGRAM_ID,\n virtualSol: VIRTUAL_SOL,\n protocolAuthority: PROTOCOL_AUTHORITY,\n protocolMintFee: PROTOCOL_MINT_FEE,\n decimals: DECIMALS,\n totalSupply: TOTAL_SUPPLY,\n} as const\n\nexport const DEVNET_CONFIG = {\n programId: PROGRAM_ID,\n virtualSol: VIRTUAL_SOL,\n protocolAuthority: PROTOCOL_AUTHORITY,\n protocolMintFee: PROTOCOL_MINT_FEE,\n decimals: DECIMALS,\n totalSupply: TOTAL_SUPPLY,\n} as const\n\n/** Trade fee in basis points (25 bps = 0.25%). Only applies after migration threshold (85 SOL). */\nexport const TRADE_FEE_BPS = 25\n\n/** SOL threshold in lamports that triggers migration and fee activation (85 SOL). */\nexport const MIGRATION_SOL_THRESHOLD = new BN('85000000000')\n\n/** Allowed vest duration modes (in seconds). The program only accepts these values. */\nexport const VEST_DURATION = {\n ONE_MINUTE: 60,\n THIRTY_MINUTES: 1800,\n} as const\n\nexport type VestDuration = typeof VEST_DURATION[keyof typeof VEST_DURATION]\n\nexport const LIMITS = {\n NAME: { min: 1, max: 32 },\n SYMBOL: { min: 1, max: 16 },\n URI: { min: 10, max: 100 },\n DESCRIPTION: { min: 0, max: 200 },\n} as const\n","import { PublicKey } from '@solana/web3.js'\nimport { SEEDS } from './constants'\n\nexport function getPoolStatePDA(mint: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.POOL, mint.toBuffer()], programId)\n}\n\nexport function getVaultAuthorityPDA(poolState: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.VAULT_AUTHORITY, poolState.toBuffer()], programId)\n}\n\nexport function getSolVaultPDA(poolState: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.SOL_VAULT, poolState.toBuffer()], programId)\n}\n\nexport function getPositionPDA(poolState: PublicKey, owner: PublicKey, programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.POSITION, poolState.toBuffer(), owner.toBuffer()], programId)\n}\n\nexport function getProtocolFeesPDA(programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.PROTOCOL_FEES], programId)\n}\n\nexport function getEventAuthorityPDA(programId: PublicKey): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([SEEDS.EVENT_AUTHORITY], programId)\n}\n","{\n \"address\": \"hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG\",\n \"metadata\": {\n \"name\": \"hodl\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\"\n },\n \"instructions\": [\n {\n \"name\": \"buy\",\n \"docs\": [\n \"Buy tokens from the vAMM\",\n \"\",\n \"Tokens are split into tradable (immediate) and vaulted (accrue linearly).\",\n \"Allocation is based on token-amount range bands: 40/60 at 0-50M, +5% per 50M band, 100/0 at 600M+.\",\n \"After vest_duration passes, all buys are 100% tradable.\"\n ],\n \"discriminator\": [\n 102,\n 6,\n 61,\n 18,\n 1,\n 218,\n 235,\n 234\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"buyer_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n }\n ]\n }\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"sol_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_tokens_out\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"claim_accrued\",\n \"docs\": [\n \"Claim accrued tokens\",\n \"Transfers tokens that have accrued from vaulted to tradable from vault to wallet\"\n ],\n \"discriminator\": [\n 209,\n 92,\n 30,\n 216,\n 89,\n 249,\n 122,\n 243\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state.mint\",\n \"account\": \"PoolState\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"user_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"close_position\",\n \"docs\": [\n \"Close an empty position account and reclaim rent\"\n ],\n \"discriminator\": [\n 123,\n 134,\n 81,\n 0,\n 49,\n 68,\n 98,\n 98\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"user_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"create_token\",\n \"docs\": [\n \"Create a new token and initialize vAMM pool\"\n ],\n \"discriminator\": [\n 84,\n 52,\n 204,\n 228,\n 24,\n 140,\n 234,\n 75\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_authority\"\n },\n {\n \"name\": \"mint\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"metadata\",\n \"writable\": true\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true\n },\n {\n \"name\": \"protocol_fee_wallet\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n },\n {\n \"name\": \"metadata_program\"\n },\n {\n \"name\": \"sysvar_instructions\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"pool_description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n }\n ]\n },\n {\n \"name\": \"emergency_withdraw_sol\",\n \"docs\": [\n \"Emergency withdraw SOL from a pool's sol_vault\"\n ],\n \"discriminator\": [\n 219,\n 156,\n 123,\n 176,\n 91,\n 105,\n 30,\n 160\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\"\n },\n {\n \"name\": \"sol_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\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\": \"sell\",\n \"docs\": [\n \"Sell tokens back to the vAMM\",\n \"If sell_percentage is provided, it overrides token_amount\"\n ],\n \"discriminator\": [\n 51,\n 230,\n 133,\n 164,\n 1,\n 127,\n 131,\n 173\n ],\n \"accounts\": [\n {\n \"name\": \"seller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"pool_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 111,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 115,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"seller\"\n }\n ]\n }\n },\n {\n \"name\": \"token_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"seller_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"pool_sol_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 111,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"pool_state\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_sol_out\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sell_percentage\",\n \"type\": {\n \"option\": \"u8\"\n }\n }\n ]\n },\n {\n \"name\": \"withdraw_protocol_fees\",\n \"docs\": [\n \"Withdraw accumulated protocol fees\"\n ],\n \"discriminator\": [\n 11,\n 68,\n 165,\n 98,\n 18,\n 208,\n 134,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_fee_wallet\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\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\": \"PoolState\",\n \"discriminator\": [\n 247,\n 237,\n 227,\n 245,\n 215,\n 195,\n 222,\n 70\n ]\n },\n {\n \"name\": \"Position\",\n \"discriminator\": [\n 170,\n 188,\n 143,\n 228,\n 122,\n 64,\n 247,\n 208\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AccrualClaimed\",\n \"discriminator\": [\n 86,\n 99,\n 51,\n 211,\n 226,\n 48,\n 235,\n 238\n ]\n },\n {\n \"name\": \"PositionClosed\",\n \"discriminator\": [\n 157,\n 163,\n 227,\n 228,\n 13,\n 97,\n 138,\n 121\n ]\n },\n {\n \"name\": \"TokenCreated\",\n \"discriminator\": [\n 236,\n 19,\n 41,\n 255,\n 130,\n 78,\n 147,\n 172\n ]\n },\n {\n \"name\": \"TokenPurchased\",\n \"discriminator\": [\n 3,\n 73,\n 186,\n 50,\n 15,\n 181,\n 213,\n 37\n ]\n },\n {\n \"name\": \"TokenSold\",\n \"discriminator\": [\n 88,\n 61,\n 1,\n 247,\n 185,\n 6,\n 252,\n 86\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 7005,\n \"name\": \"InsufficientTokens\",\n \"msg\": \"Insufficient token reserves in vault\"\n },\n {\n \"code\": 7100,\n \"name\": \"ArithmeticOverflow\",\n \"msg\": \"Arithmetic overflow\"\n },\n {\n \"code\": 7102,\n \"name\": \"DivisionError\",\n \"msg\": \"Division by zero or invalid division\"\n },\n {\n \"code\": 7104,\n \"name\": \"TokenOverflow\",\n \"msg\": \"Token calculation overflow\"\n },\n {\n \"code\": 7105,\n \"name\": \"TokenUnderflow\",\n \"msg\": \"Token calculation underflow\"\n },\n {\n \"code\": 7200,\n \"name\": \"SlippageExceeded\",\n \"msg\": \"Slippage exceeded: output below minimum threshold\"\n },\n {\n \"code\": 7312,\n \"name\": \"AccrualCalculationOverflow\",\n \"msg\": \"Accrual calculation overflow\"\n },\n {\n \"code\": 7315,\n \"name\": \"PositionNotEmpty\",\n \"msg\": \"Position is not empty, must sell all tokens first\"\n },\n {\n \"code\": 7319,\n \"name\": \"InvalidProtocolAuthority\",\n \"msg\": \"Invalid protocol authority - must match PROTOCOL_AUTHORITY constant\"\n },\n {\n \"code\": 7321,\n \"name\": \"MustHaveUnlockedPortion\",\n \"msg\": \"Position must have tokens to perform this operation\"\n },\n {\n \"code\": 7500,\n \"name\": \"PositionNotOwnedBySigner\",\n \"msg\": \"Position not owned by signer\"\n },\n {\n \"code\": 7505,\n \"name\": \"InvalidSolVaultPDA\",\n \"msg\": \"SOL vault PDA derivation mismatch\"\n },\n {\n \"code\": 7601,\n \"name\": \"InvalidVestingType\",\n \"msg\": \"Invalid vesting type\"\n },\n {\n \"code\": 7604,\n \"name\": \"InvalidPercentage\",\n \"msg\": \"Invalid percentage value (must be 0-100)\"\n },\n {\n \"code\": 7901,\n \"name\": \"NotAuthorized\",\n \"msg\": \"Not authorized\"\n },\n {\n \"code\": 8014,\n \"name\": \"InsufficientLiquidity\",\n \"msg\": \"Insufficient liquidity\"\n },\n {\n \"code\": 8018,\n \"name\": \"VammNotActive\",\n \"msg\": \"vAMM is not active\"\n },\n {\n \"code\": 8020,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AccrualClaimed\",\n \"docs\": [\n \"Event emitted when accrued tokens are claimed\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"tokens_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_tradable_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"remaining_vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PoolMetadata\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"docs\": [\n \"Optional pool name\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"docs\": [\n \"Optional pool description\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"version\",\n \"docs\": [\n \"Pool version\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PoolState\",\n \"docs\": [\n \"Pool state account - main state for a vAMM pool\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Pool authority (creator)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"Token mint for this pool\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_vault\",\n \"docs\": [\n \"Token vault (holds unsold tokens)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_authority\",\n \"docs\": [\n \"Vault authority (PDA)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sol_vault\",\n \"docs\": [\n \"Pool SOL vault (holds raised SOL)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_positions\",\n \"docs\": [\n \"Total number of positions in this pool\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creation_timestamp\",\n \"docs\": [\n \"Pool creation timestamp (Unix timestamp)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"last_update_timestamp\",\n \"docs\": [\n \"Last update timestamp (Unix timestamp)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"metadata\",\n \"docs\": [\n \"Pool metadata\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"PoolMetadata\"\n }\n }\n },\n {\n \"name\": \"vest_duration\",\n \"docs\": [\n \"=== ACCRUAL SYSTEM FIELDS ===\",\n \"Dev-set unlock duration in seconds (applies to all traders)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"next_position_number\",\n \"docs\": [\n \"Next position number to assign (sequential counter for display/identity)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_active\",\n \"docs\": [\n \"=== VAMM STATE ===\",\n \"vAMM is active for trading\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"docs\": [\n \"Real SOL in the vAMM\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"docs\": [\n \"Real tokens in the vAMM\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_k\",\n \"docs\": [\n \"The invariant k (set at creation, never changes)\",\n \"k = (vamm_real_sol + VIRTUAL_SOL) * vamm_tokens\"\n ],\n \"type\": \"u128\"\n },\n {\n \"name\": \"tokens_sold\",\n \"docs\": [\n \"Cumulative tokens bought from vAMM (increases on buy, decreases on sell)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_reserved_for_claims\",\n \"docs\": [\n \"Vault tokens reserved for position claims (not available for vAMM liquidity)\",\n \"Incremented on buy (vaulted portion), decremented on claim_accrued\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"migration_complete\",\n \"docs\": [\n \"One-way flag: set to true once vamm_real_sol >= MIGRATION_SOL_THRESHOLD, never reverts\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"total_fees_sol\",\n \"docs\": [\n \"Cumulative SOL fees collected from buys (lamports)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_fees_tokens\",\n \"docs\": [\n \"Cumulative token fees collected from sells\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump_vault_auth\",\n \"docs\": [\n \"Bump seeds for PDAs\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump_pool\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Position\",\n \"docs\": [\n \"Position in a vAMM pool\",\n \"Tokens split into tradable (immediate) and vaulted (accrue linearly over vest_duration)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner's public key\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"pool\",\n \"docs\": [\n \"Pool this position belongs to\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Tradable tokens (can be sold immediately)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"docs\": [\n \"Vaulted tokens (accruing linearly to tradable)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"docs\": [\n \"SOL spent on this position\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"docs\": [\n \"Cumulative tokens transferred to wallet (for claim_accrued tracking)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"entry_timestamp\",\n \"docs\": [\n \"Entry timestamp (for accrual calculation)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"docs\": [\n \"Cumulative initial vaulted tokens from all buys (for accrual calculation)\",\n \"This tracks the total vaulted amount at buy time, used to calculate accrual progress\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"position_number\",\n \"docs\": [\n \"Position number in the pool (sequential counter for display/identity)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_update_timestamp\",\n \"docs\": [\n \"Last update timestamp\"\n ],\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionClosed\",\n \"docs\": [\n \"Event emitted when a position account is closed\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"rent_reclaimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenCreated\",\n \"docs\": [\n \"Event emitted when a new token and vAMM pool is created\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"total_supply\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_k\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"creation_timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenPurchased\",\n \"docs\": [\n \"Event emitted when tokens are bought\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"buyer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sol_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_received\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_sold\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position_number\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"unlock_time_seconds\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Position state after buy\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenSold\",\n \"docs\": [\n \"Event emitted when tokens are sold\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"seller\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_received\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_real_sol\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vamm_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_sold\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"position\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"position_number\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"vest_duration\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"unlock_time_seconds\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tradable_tokens\",\n \"docs\": [\n \"Position state after sell\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"vaulted_tokens\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sol_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_transferred\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_vaulted\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ]\n}","import { Connection, PublicKey } from '@solana/web3.js'\nimport { Program, AnchorProvider } from '@coral-xyz/anchor'\nimport type { Hodl } from './idl/hodl'\nimport IDL from './idl/hodl.json'\n\nconst DUMMY_WALLET = {\n publicKey: PublicKey.default,\n signTransaction: async <T>(tx: T): Promise<T> => tx,\n signAllTransactions: async <T>(txs: T[]): Promise<T[]> => txs,\n}\n\nexport function getProgram(connection: Connection): Program<Hodl> {\n const provider = new AnchorProvider(connection, DUMMY_WALLET as any, { commitment: 'confirmed' })\n return new Program<Hodl>(IDL as unknown as Hodl, provider)\n}\n","import { Connection, PublicKey } from '@solana/web3.js'\nimport type { PoolState, Position, SdkConfig } from './types'\nimport { getPoolStatePDA, getPositionPDA } from './pda'\nimport { getProgram } from './program'\n\nexport async function fetchPoolState(\n connection: Connection,\n mint: PublicKey,\n config: SdkConfig,\n): Promise<PoolState> {\n const program = getProgram(connection)\n const [poolStatePDA] = getPoolStatePDA(mint, config.programId)\n return program.account.poolState.fetch(poolStatePDA) as unknown as PoolState\n}\n\nexport async function fetchPosition(\n connection: Connection,\n poolState: PublicKey,\n owner: PublicKey,\n config: SdkConfig,\n): Promise<Position> {\n const program = getProgram(connection)\n const [positionPDA] = getPositionPDA(poolState, owner, config.programId)\n return program.account.position.fetch(positionPDA) as unknown as Position\n}\n\nexport async function fetchPoolStateByAddress(\n connection: Connection,\n poolStatePDA: PublicKey,\n): Promise<PoolState> {\n const program = getProgram(connection)\n return program.account.poolState.fetch(poolStatePDA) as unknown as PoolState\n}\n","import {\n Connection,\n PublicKey,\n TransactionInstruction,\n SystemProgram,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n} from '@solana/web3.js'\nimport { getAssociatedTokenAddressSync, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport type { SdkConfig, BuyParams, SellParams, CreateTokenParams } from './types'\n\nimport {\n getPoolStatePDA,\n getVaultAuthorityPDA,\n getSolVaultPDA,\n getPositionPDA,\n getEventAuthorityPDA,\n getProtocolFeesPDA,\n} from './pda'\nimport { getProgram } from './program'\n\nconst METADATA_PROGRAM_ID = new PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s')\n\nfunction getMetadataPDA(mint: PublicKey): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from('metadata'), METADATA_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n METADATA_PROGRAM_ID,\n )\n return pda\n}\n\nexport async function buildBuyInstruction(params: BuyParams & {\n buyer: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { buyer, mint, solAmount, minTokensOut, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const buyerTokenAccount = getAssociatedTokenAddressSync(mint, buyer)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [position] = getPositionPDA(poolState, buyer, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .buy(solAmount, minTokensOut)\n .accountsPartial({\n buyer,\n poolState,\n tokenVault,\n vaultAuthority,\n buyerTokenAccount,\n poolSolAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n position,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildSellInstruction(params: SellParams & {\n seller: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { seller, mint, tokenAmount, minSolOut, sellPercentage, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const sellerTokenAccount = getAssociatedTokenAddressSync(mint, seller)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [position] = getPositionPDA(poolState, seller, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .sell(tokenAmount, minSolOut, sellPercentage ?? null)\n .accountsPartial({\n seller,\n poolState,\n position,\n tokenVault,\n vaultAuthority,\n sellerTokenAccount,\n poolSolAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildCreateTokenInstruction(params: CreateTokenParams & {\n creator: PublicKey\n mint: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { creator, mint, name, symbol, uri, poolDescription, vestDuration, connection, config } = params\n const program = getProgram(connection)\n\n const [poolState] = getPoolStatePDA(mint, config.programId)\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const metadata = getMetadataPDA(mint)\n const [poolSolAccount] = getSolVaultPDA(poolState, config.programId)\n const [protocolFeeWallet] = getProtocolFeesPDA(config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .createToken(name, symbol, uri, poolDescription, vestDuration)\n .accountsPartial({\n creator,\n protocolAuthority: config.protocolAuthority,\n mint,\n poolState,\n tokenVault,\n vaultAuthority,\n metadata,\n poolSolAccount,\n protocolFeeWallet,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n metadataProgram: METADATA_PROGRAM_ID,\n sysvarInstructions: SYSVAR_INSTRUCTIONS_PUBKEY,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildClaimAccruedInstruction(params: {\n owner: PublicKey\n poolState: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { owner, poolState, connection, config } = params\n const program = getProgram(connection)\n\n // Fetch pool state to get mint — needed for token vault and user ATA derivation\n const poolData = await program.account.poolState.fetch(poolState)\n const mint = poolData.mint\n\n const [vaultAuthority] = getVaultAuthorityPDA(poolState, config.programId)\n const tokenVault = getAssociatedTokenAddressSync(mint, vaultAuthority, true)\n const userTokenAccount = getAssociatedTokenAddressSync(mint, owner)\n const [position] = getPositionPDA(poolState, owner, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .claimAccrued()\n .accountsPartial({\n owner,\n poolState,\n position,\n tokenVault,\n vaultAuthority,\n userTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n\nexport async function buildClosePositionInstruction(params: {\n owner: PublicKey\n poolState: PublicKey\n mint: PublicKey\n userTokenAccount: PublicKey\n connection: Connection\n config: SdkConfig\n}): Promise<TransactionInstruction> {\n const { owner, poolState, mint, userTokenAccount, connection, config } = params\n const program = getProgram(connection)\n\n const [position] = getPositionPDA(poolState, owner, config.programId)\n const [eventAuthority] = getEventAuthorityPDA(config.programId)\n\n return program.methods\n .closePosition()\n .accountsPartial({\n owner,\n poolState,\n position,\n userTokenAccount,\n mint,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n eventAuthority,\n program: config.programId,\n })\n .instruction()\n}\n","import {\n Connection,\n PublicKey,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n ComputeBudgetProgram,\n} from '@solana/web3.js'\n\nexport interface TxOptions {\n priorityFee?: number // microlamports per CU\n computeUnits?: number\n}\n\n/**\n * Build a versioned transaction with a fresh blockhash.\n * Returns an unsigned VersionedTransaction — caller signs and sends.\n */\nexport async function buildTransaction(\n connection: Connection,\n instructions: TransactionInstruction[],\n payer: PublicKey,\n opts: TxOptions = {},\n): Promise<VersionedTransaction> {\n const cuLimit = opts.computeUnits ?? 200_000\n const priorityFee = opts.priorityFee ?? 1_000\n\n const computeIxs: TransactionInstruction[] = [\n ComputeBudgetProgram.setComputeUnitLimit({ units: cuLimit }),\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),\n ]\n\n const { blockhash } = await connection.getLatestBlockhash('confirmed')\n\n const message = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions: [...computeIxs, ...instructions],\n }).compileToV0Message()\n\n return new VersionedTransaction(message)\n}\n","import { Connection } from '@solana/web3.js'\nimport { BorshCoder, utils } from '@coral-xyz/anchor'\nimport bs58 from 'bs58'\nimport type { VersionedTransactionResponse } from '@solana/web3.js'\nimport type {\n HodlEvent,\n SdkConfig,\n TokenPurchasedEvent,\n TokenSoldEvent,\n TokenCreatedEvent,\n AccrualClaimedEvent,\n PositionClosedEvent,\n} from './types'\nimport IDL from './idl/hodl.json'\n\nconst PROGRAM_DATA_PREFIX = 'Program data: '\n\n/** Convert PascalCase IDL event name to camelCase for SDK types */\nfunction toCamelCase(name: string): string {\n return name.charAt(0).toLowerCase() + name.slice(1)\n}\n\n/** Convert snake_case keys to camelCase (one level deep) */\nfunction snakeToCamelKeys(obj: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = {}\n for (const [key, value] of Object.entries(obj)) {\n const camelKey = key.replace(/_([a-z])/g, (_, c) => c.toUpperCase())\n result[camelKey] = value\n }\n return result\n}\n\nfunction tryDecodeEvent(coder: BorshCoder, data: string): HodlEvent | null {\n try {\n const event = coder.events.decode(data)\n if (event) {\n return {\n name: toCamelCase(event.name),\n data: snakeToCamelKeys(event.data),\n } as HodlEvent\n }\n } catch {\n // Not one of our events\n }\n return null\n}\n\n/**\n * Parse events from a full transaction response.\n *\n * Handles two event emission patterns:\n * 1. emit!() — event data appears as \"Program data: <base64>\" in log messages\n * 2. emit_cpi!() — event data is the instruction data of a self-CPI (inner instruction)\n *\n * Anchor's EventParser only handles #1 and fails on #2 due to CPI depth tracking.\n */\nexport function parseTransactionEvents(tx: VersionedTransactionResponse | null, config: SdkConfig): HodlEvent[]\nexport function parseTransactionEvents(logs: string[], config: SdkConfig): HodlEvent[]\nexport function parseTransactionEvents(\n input: VersionedTransactionResponse | string[] | null,\n config: SdkConfig,\n): HodlEvent[] {\n if (!input) return []\n\n const coder = new BorshCoder(IDL as any)\n const events: HodlEvent[] = []\n\n // If given raw logs (string[]), can only parse emit!() events\n if (Array.isArray(input)) {\n for (const log of input) {\n if (!log.startsWith(PROGRAM_DATA_PREFIX)) continue\n const b64 = log.slice(PROGRAM_DATA_PREFIX.length)\n const event = tryDecodeEvent(coder, b64)\n if (event) events.push(event)\n }\n return events\n }\n\n // Full transaction response — parse both emit!() and emit_cpi!() events\n const tx = input\n\n // 1. Parse emit!() events from log messages\n const logs = tx.meta?.logMessages ?? []\n for (const log of logs) {\n if (!log.startsWith(PROGRAM_DATA_PREFIX)) continue\n const b64 = log.slice(PROGRAM_DATA_PREFIX.length)\n const event = tryDecodeEvent(coder, b64)\n if (event) events.push(event)\n }\n\n // 2. Parse emit_cpi!() events from inner instructions\n // These are self-CPI calls where the instruction data IS the event (discriminator + borsh data)\n const programId = config.programId.toBase58()\n\n // Build full account key list (static + loaded addresses for v0 txs)\n const staticKeys = tx.transaction.message.staticAccountKeys\n const loadedWritable = tx.meta?.loadedAddresses?.writable ?? []\n const loadedReadonly = tx.meta?.loadedAddresses?.readonly ?? []\n const allKeys = [...staticKeys, ...loadedWritable, ...loadedReadonly]\n\n for (const inner of tx.meta?.innerInstructions ?? []) {\n for (const ix of inner.instructions) {\n // Check if this inner instruction targets our program\n const ixProgramKey = allKeys[ix.programIdIndex]\n if (!ixProgramKey || ixProgramKey.toBase58() !== programId) continue\n\n // Try to decode the instruction data as an event\n // CPI event data may have an 8-byte Anchor instruction prefix before the event discriminator\n try {\n const bytes = bs58.decode(ix.data)\n\n // Try full data first (event discriminator at offset 0)\n const b64Full = utils.bytes.base64.encode(Buffer.from(bytes))\n const eventFull = tryDecodeEvent(coder, b64Full)\n if (eventFull) { events.push(eventFull); continue }\n\n // Try skipping 8-byte Anchor instruction prefix\n if (bytes.length > 8) {\n const b64Skip = utils.bytes.base64.encode(Buffer.from(bytes.slice(8)))\n const eventSkip = tryDecodeEvent(coder, b64Skip)\n if (eventSkip) events.push(eventSkip)\n }\n } catch {\n // Not an event instruction\n }\n }\n }\n\n return events\n}\n\nexport async function fetchAndParseTransaction(\n connection: Connection,\n signature: string,\n config: SdkConfig,\n): Promise<HodlEvent[]> {\n const tx = await connection.getTransaction(signature, {\n commitment: 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n return parseTransactionEvents(tx, config)\n}\n\nexport interface SubscriptionOptions {\n commitment?: 'processed' | 'confirmed' | 'finalized'\n onError?: (err: Error) => void\n}\n\nexport function subscribeToEvents(\n connection: Connection,\n config: SdkConfig,\n onEvent: (event: HodlEvent, slot: number, signature: string) => void,\n opts: SubscriptionOptions = {},\n): number {\n const commitment = opts.commitment ?? 'confirmed'\n const coder = new BorshCoder(IDL as any)\n\n return connection.onLogs(\n config.programId,\n ({ logs, err, signature }, context) => {\n if (err) {\n opts.onError?.(new Error(`Log subscription error: ${JSON.stringify(err)}`))\n return\n }\n // Real-time subscriptions only get log messages, not inner instructions.\n // This means only emit!() events are available via subscriptions.\n // emit_cpi!() events require fetching the full transaction.\n try {\n for (const log of logs) {\n if (!log.startsWith(PROGRAM_DATA_PREFIX)) continue\n const b64 = log.slice(PROGRAM_DATA_PREFIX.length)\n const event = tryDecodeEvent(coder, b64)\n if (event) {\n onEvent(event, context.slot, signature)\n }\n }\n } catch (e) {\n opts.onError?.(e instanceof Error ? e : new Error(String(e)))\n }\n },\n commitment,\n )\n}\n\nexport function unsubscribeFromEvents(\n connection: Connection,\n subscriptionId: number,\n): Promise<void> {\n return connection.removeOnLogsListener(subscriptionId)\n}\n\nexport function subscribeToTokenPurchased(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenPurchasedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenPurchased') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToTokenSold(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenSoldEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenSold') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToTokenCreated(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: TokenCreatedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'tokenCreated') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToAccrualClaimed(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: AccrualClaimedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'accrualClaimed') onEvent(event.data, slot, sig)\n }, opts)\n}\n\nexport function subscribeToPositionClosed(\n connection: Connection,\n config: SdkConfig,\n onEvent: (data: PositionClosedEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n): number {\n return subscribeToEvents(connection, config, (event, slot, sig) => {\n if (event.name === 'positionClosed') onEvent(event.data, slot, sig)\n }, opts)\n}\n","import { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js'\nimport type { SdkConfig, BuyParams, SellParams, CreateTokenParams, PoolState, Position, HodlEvent } from './types'\nimport { MAINNET_CONFIG } from './constants'\nimport { fetchPoolState, fetchPosition } from './accounts'\nimport {\n buildBuyInstruction,\n buildSellInstruction,\n buildCreateTokenInstruction,\n buildClaimAccruedInstruction,\n buildClosePositionInstruction,\n} from './instructions'\nimport { buildTransaction, type TxOptions } from './transaction'\nimport {\n subscribeToEvents as _subscribeToEvents,\n unsubscribeFromEvents,\n fetchAndParseTransaction as _fetchAndParseTransaction,\n type SubscriptionOptions,\n} from './events'\n\nexport class HodlClient {\n readonly connection: Connection\n readonly config: SdkConfig\n\n constructor({ connection, config }: { connection: Connection; config?: SdkConfig }) {\n this.connection = connection\n this.config = config ?? MAINNET_CONFIG\n }\n\n fetchPool(mint: PublicKey): Promise<PoolState> {\n return fetchPoolState(this.connection, mint, this.config)\n }\n\n fetchPosition(poolState: PublicKey, owner: PublicKey): Promise<Position> {\n return fetchPosition(this.connection, poolState, owner, this.config)\n }\n\n async buy(params: BuyParams & { mint: PublicKey; buyer: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildBuyInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.buyer, opts)\n }\n\n async sell(params: SellParams & { mint: PublicKey; seller: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildSellInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.seller, opts)\n }\n\n async createToken(params: CreateTokenParams & { creator: PublicKey; mint: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildCreateTokenInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.creator, opts)\n }\n\n async claimAccrued(params: { owner: PublicKey; poolState: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildClaimAccruedInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.owner, opts)\n }\n\n async closePosition(params: { owner: PublicKey; poolState: PublicKey; mint: PublicKey; userTokenAccount: PublicKey }, opts?: TxOptions): Promise<VersionedTransaction> {\n const ix = await buildClosePositionInstruction({ ...params, connection: this.connection, config: this.config })\n return buildTransaction(this.connection, [ix], params.owner, opts)\n }\n\n /**\n * Build a transaction from raw instructions. Fetches a fresh blockhash.\n * Sign the returned transaction, then send via connection.sendRawTransaction.\n */\n buildTransaction(instructions: Parameters<typeof buildTransaction>[1], payer: PublicKey, opts?: TxOptions): Promise<VersionedTransaction> {\n return buildTransaction(this.connection, instructions, payer, opts)\n }\n\n subscribeToEvents(\n onEvent: (event: HodlEvent, slot: number, signature: string) => void,\n opts?: SubscriptionOptions,\n ): number {\n return _subscribeToEvents(this.connection, this.config, onEvent, opts)\n }\n\n unsubscribe(subscriptionId: number): Promise<void> {\n return unsubscribeFromEvents(this.connection, subscriptionId)\n }\n\n fetchAndParseTransaction(signature: string): Promise<HodlEvent[]> {\n return _fetchAndParseTransaction(this.connection, signature, this.config)\n }\n}\n"]}
|