@hodlmarkets/sdk 0.1.0

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.
Files changed (68) hide show
  1. package/README.md +121 -0
  2. package/dist/accounts.cjs +1893 -0
  3. package/dist/accounts.cjs.map +1 -0
  4. package/dist/accounts.d.cts +9 -0
  5. package/dist/accounts.d.ts +9 -0
  6. package/dist/accounts.js +1885 -0
  7. package/dist/accounts.js.map +1 -0
  8. package/dist/client.cjs +2161 -0
  9. package/dist/client.cjs.map +1 -0
  10. package/dist/client.d.cts +44 -0
  11. package/dist/client.d.ts +44 -0
  12. package/dist/client.js +2155 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/constants.cjs +68 -0
  15. package/dist/constants.cjs.map +1 -0
  16. package/dist/constants.d.cts +62 -0
  17. package/dist/constants.d.ts +62 -0
  18. package/dist/constants.js +50 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/errors.cjs +43 -0
  21. package/dist/errors.cjs.map +1 -0
  22. package/dist/errors.d.cts +8 -0
  23. package/dist/errors.d.ts +8 -0
  24. package/dist/errors.js +39 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/events.cjs +1923 -0
  27. package/dist/events.cjs.map +1 -0
  28. package/dist/events.d.cts +20 -0
  29. package/dist/events.d.ts +20 -0
  30. package/dist/events.js +1913 -0
  31. package/dist/events.js.map +1 -0
  32. package/dist/index.cjs +2357 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.cts +12 -0
  35. package/dist/index.d.ts +12 -0
  36. package/dist/index.js +2302 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/instructions.cjs +2022 -0
  39. package/dist/instructions.cjs.map +1 -0
  40. package/dist/instructions.d.cts +38 -0
  41. package/dist/instructions.d.ts +38 -0
  42. package/dist/instructions.js +2012 -0
  43. package/dist/instructions.js.map +1 -0
  44. package/dist/math.cjs +98 -0
  45. package/dist/math.cjs.map +1 -0
  46. package/dist/math.d.cts +58 -0
  47. package/dist/math.d.ts +58 -0
  48. package/dist/math.js +85 -0
  49. package/dist/math.js.map +1 -0
  50. package/dist/pda.cjs +52 -0
  51. package/dist/pda.cjs.map +1 -0
  52. package/dist/pda.d.cts +10 -0
  53. package/dist/pda.d.ts +10 -0
  54. package/dist/pda.js +41 -0
  55. package/dist/pda.js.map +1 -0
  56. package/dist/transaction.cjs +37 -0
  57. package/dist/transaction.cjs.map +1 -0
  58. package/dist/transaction.d.cts +11 -0
  59. package/dist/transaction.d.ts +11 -0
  60. package/dist/transaction.js +34 -0
  61. package/dist/transaction.js.map +1 -0
  62. package/dist/types.cjs +4 -0
  63. package/dist/types.cjs.map +1 -0
  64. package/dist/types.d.cts +153 -0
  65. package/dist/types.d.ts +153 -0
  66. package/dist/types.js +3 -0
  67. package/dist/types.js.map +1 -0
  68. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts","../src/errors.ts","../src/pda.ts","../src/math.ts","../src/idl/hodl.json","../src/program.ts","../src/accounts.ts","../src/instructions.ts","../src/events.ts","../src/transaction.ts","../src/client.ts"],"names":["PublicKey","BN","AnchorProvider","Program","getAssociatedTokenAddressSync","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","SystemProgram","SYSVAR_RENT_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","BorshCoder","EventParser","ComputeBudgetProgram","TransactionMessage","VersionedTransaction"],"mappings":"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","file":"index.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","export class HodlError extends Error {\n constructor(public readonly code: number, message: string) {\n super(message)\n this.name = 'HodlError'\n }\n}\n\nexport const HODL_ERRORS: Record<number, string> = {\n 7005: 'Insufficient token reserves in vault',\n 7100: 'Arithmetic overflow',\n 7102: 'Division by zero or invalid division',\n 7104: 'Token calculation overflow',\n 7105: 'Token calculation underflow',\n 7200: 'Slippage exceeded: output below minimum threshold',\n 7312: 'Accrual calculation overflow',\n 7315: 'Position is not empty, must sell all tokens first',\n 7319: 'Invalid protocol authority',\n 7321: 'Position must have tokens to perform this operation',\n 7500: 'Position not owned by signer',\n 7505: 'SOL vault PDA derivation mismatch',\n 7601: 'Invalid vesting type',\n 7604: 'Invalid percentage value (must be 0-100)',\n 7901: 'Not authorized',\n 8014: 'Insufficient liquidity',\n 8018: 'vAMM is not active',\n 8020: 'Invalid amount',\n}\n\nexport function parseHodlError(err: unknown): HodlError | null {\n if (err && typeof err === 'object' && 'code' in err) {\n const code = (err as { code: number }).code\n if (code in HODL_ERRORS) return new HodlError(code, HODL_ERRORS[code])\n }\n return null\n}\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","import BN from 'bn.js'\nimport { VIRTUAL_SOL } from './constants'\n\nconst ZERO = new BN(0)\nconst BPS = new BN(10_000)\n\n// Band logic from the program:\n// 40% tradable at 0-50M tokens sold, +5% per 50M band, 100% at 600M+\nconst BASE_TRADABLE_PCT = 40\nconst PCT_PER_BAND = 5\nconst BAND_SIZE = new BN('50000000000000') // 50M tokens × 10^6 decimals\nconst MAX_TRADABLE_PCT = 100\n\n/**\n * Calculate tokens out for a given SOL input using the vAMM constant product formula.\n * k = (vammRealSol + VIRTUAL_SOL) * vammTokens\n */\nexport function calculateBuyAmount(\n solIn: BN,\n vammRealSol: BN,\n vammTokens: BN,\n vammK: BN,\n): BN {\n if (solIn.isZero() || solIn.isNeg()) return ZERO\n const currentSolSide = vammRealSol.add(VIRTUAL_SOL)\n const newSolSide = currentSolSide.add(solIn)\n const newTokenSide = vammK.div(newSolSide)\n return vammTokens.sub(newTokenSide)\n}\n\n/**\n * Calculate SOL out for a given token input.\n */\nexport function calculateSellAmount(\n tokensIn: BN,\n vammRealSol: BN,\n vammTokens: BN,\n vammK: BN,\n): BN {\n if (tokensIn.isZero() || tokensIn.isNeg()) return ZERO\n const newTokenSide = vammTokens.add(tokensIn)\n const newRealSol = vammK.div(newTokenSide).sub(VIRTUAL_SOL)\n return vammRealSol.sub(newRealSol)\n}\n\n/**\n * Calculate SOL required to buy an exact number of tokens.\n * Inverse of calculateBuyAmount.\n */\nexport function calculateSolForExactTokens(\n tokensOut: BN,\n vammRealSol: BN,\n vammTokens: BN,\n vammK: BN,\n): BN {\n if (tokensOut.isZero() || tokensOut.isNeg()) return ZERO\n if (tokensOut.gte(vammTokens)) throw new Error('tokensOut exceeds available vAMM liquidity')\n const newTokenSide = vammTokens.sub(tokensOut)\n const newSolSide = vammK.div(newTokenSide)\n const currentSolSide = vammRealSol.add(VIRTUAL_SOL)\n return newSolSide.sub(currentSolSide)\n}\n\n/**\n * Apply slippage tolerance to a minimum output amount.\n * slippageBps: basis points, e.g. 100 = 1%\n */\nexport function applySlippage(amount: BN, slippageBps: number): BN {\n return amount.mul(new BN(10_000 - slippageBps)).div(BPS)\n}\n\n/**\n * Calculate the tradable/vaulted split for newly purchased tokens.\n *\n * Band logic (from the on-chain program):\n * 0–50M tokens sold: 40% tradable / 60% vaulted\n * each additional 50M band: +5% tradable\n * 600M+ tokens sold: 100% tradable / 0% vaulted\n *\n * After vest_duration has fully elapsed, all buys are 100% tradable.\n *\n * @param tokensOut tokens received from this buy\n * @param tokensSold cumulative tokens sold in the pool (before this buy)\n * @param bandSize band width in base token units (default 50M)\n */\nexport function calculateTradableVaultedSplit(\n tokensOut: BN,\n tokensSold: BN,\n bandSize: BN = BAND_SIZE,\n): { tradable: BN; vaulted: BN; tradablePct: number } {\n if (tokensOut.isZero()) return { tradable: ZERO, vaulted: ZERO, tradablePct: 0 }\n\n const bandIndex = bandSize.isZero() ? 0 : tokensSold.div(bandSize).toNumber()\n const tradablePct = Math.min(BASE_TRADABLE_PCT + PCT_PER_BAND * bandIndex, MAX_TRADABLE_PCT)\n const tradable = tokensOut.mul(new BN(tradablePct)).div(new BN(100))\n const vaulted = tokensOut.sub(tradable)\n\n return { tradable, vaulted, tradablePct }\n}\n\n/**\n * Calculate accrued (claimable) tokens for a position at a given timestamp.\n * Linear vesting: accrued = initialVaulted * elapsed / vestDuration\n * Capped at initialVaulted. Already-transferred tokens subtracted.\n */\nexport function calculateAccruedTokens(\n initialVaulted: BN,\n tokensTransferred: BN,\n entryTimestamp: BN,\n vestDuration: BN,\n currentTimestamp: BN,\n): BN {\n if (initialVaulted.isZero()) return ZERO\n const remaining = initialVaulted.sub(tokensTransferred)\n if (vestDuration.isZero()) return remaining\n const elapsed = currentTimestamp.sub(entryTimestamp)\n if (elapsed.isNeg()) return ZERO\n if (elapsed.gte(vestDuration)) return remaining\n const totalAccrued = initialVaulted.mul(elapsed).div(vestDuration)\n const claimable = totalAccrued.sub(tokensTransferred)\n return claimable.isNeg() ? ZERO : claimable\n}\n\n/**\n * Spot price: how much SOL (in lamports) one whole token costs at the current curve position.\n * Returns price scaled by 1e6 for precision (i.e. micro-lamports per base token unit).\n */\nexport function calculateSpotPrice(\n vammRealSol: BN,\n vammTokens: BN,\n): BN {\n if (vammTokens.isZero()) return ZERO\n return vammRealSol.add(VIRTUAL_SOL).mul(new BN(1_000_000)).div(vammTokens)\n}\n\n/**\n * Price impact of a buy, in basis points.\n * Compares the effective price of the trade to the current spot price.\n */\nexport function calculatePriceImpact(\n solIn: BN,\n tokensOut: BN,\n vammRealSol: BN,\n vammTokens: BN,\n): number {\n if (solIn.isZero() || tokensOut.isZero() || vammTokens.isZero()) return 0\n const solSide = vammRealSol.add(VIRTUAL_SOL)\n const numerator = solIn.mul(vammTokens).mul(BPS)\n const denominator = tokensOut.mul(solSide)\n if (denominator.isZero()) return 0\n const ratioBps = numerator.div(denominator)\n return ratioBps.sub(BPS).toNumber()\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 { 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 {\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, 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"]}
@@ -0,0 +1,12 @@
1
+ export { BPS_DENOMINATOR, DECIMALS, DEVNET_CONFIG, LIMITS, MAINNET_CONFIG, PROGRAM_ID, PROTOCOL_AUTHORITY, PROTOCOL_MINT_FEE, SEEDS, TOTAL_SUPPLY, TRADE_FEE_BPS, VEST_DURATION, VIRTUAL_SOL, VestDuration } from './constants.cjs';
2
+ export { HODL_ERRORS, HodlError, parseHodlError } from './errors.cjs';
3
+ export { AccrualClaimedEvent, BuyParams, CreateTokenParams, HodlEvent, PoolMetadata, PoolState, Position, PositionClosedEvent, SdkConfig, SellParams, TokenCreatedEvent, TokenPurchasedEvent, TokenSoldEvent } from './types.cjs';
4
+ export { getEventAuthorityPDA, getPoolStatePDA, getPositionPDA, getProtocolFeesPDA, getSolVaultPDA, getVaultAuthorityPDA } from './pda.cjs';
5
+ export { applySlippage, calculateAccruedTokens, calculateBuyAmount, calculatePriceImpact, calculateSellAmount, calculateSolForExactTokens, calculateSpotPrice, calculateTradableVaultedSplit } from './math.cjs';
6
+ export { fetchPoolState, fetchPoolStateByAddress, fetchPosition } from './accounts.cjs';
7
+ export { buildBuyInstruction, buildClaimAccruedInstruction, buildClosePositionInstruction, buildCreateTokenInstruction, buildSellInstruction } from './instructions.cjs';
8
+ export { SubscriptionOptions, fetchAndParseTransaction, parseTransactionEvents, subscribeToAccrualClaimed, subscribeToEvents, subscribeToPositionClosed, subscribeToTokenCreated, subscribeToTokenPurchased, subscribeToTokenSold, unsubscribeFromEvents } from './events.cjs';
9
+ export { TxOptions, buildTransaction, sendTransaction } from './transaction.cjs';
10
+ export { HodlClient } from './client.cjs';
11
+ import '@solana/web3.js';
12
+ import 'bn.js';
@@ -0,0 +1,12 @@
1
+ export { BPS_DENOMINATOR, DECIMALS, DEVNET_CONFIG, LIMITS, MAINNET_CONFIG, PROGRAM_ID, PROTOCOL_AUTHORITY, PROTOCOL_MINT_FEE, SEEDS, TOTAL_SUPPLY, TRADE_FEE_BPS, VEST_DURATION, VIRTUAL_SOL, VestDuration } from './constants.js';
2
+ export { HODL_ERRORS, HodlError, parseHodlError } from './errors.js';
3
+ export { AccrualClaimedEvent, BuyParams, CreateTokenParams, HodlEvent, PoolMetadata, PoolState, Position, PositionClosedEvent, SdkConfig, SellParams, TokenCreatedEvent, TokenPurchasedEvent, TokenSoldEvent } from './types.js';
4
+ export { getEventAuthorityPDA, getPoolStatePDA, getPositionPDA, getProtocolFeesPDA, getSolVaultPDA, getVaultAuthorityPDA } from './pda.js';
5
+ export { applySlippage, calculateAccruedTokens, calculateBuyAmount, calculatePriceImpact, calculateSellAmount, calculateSolForExactTokens, calculateSpotPrice, calculateTradableVaultedSplit } from './math.js';
6
+ export { fetchPoolState, fetchPoolStateByAddress, fetchPosition } from './accounts.js';
7
+ export { buildBuyInstruction, buildClaimAccruedInstruction, buildClosePositionInstruction, buildCreateTokenInstruction, buildSellInstruction } from './instructions.js';
8
+ export { SubscriptionOptions, fetchAndParseTransaction, parseTransactionEvents, subscribeToAccrualClaimed, subscribeToEvents, subscribeToPositionClosed, subscribeToTokenCreated, subscribeToTokenPurchased, subscribeToTokenSold, unsubscribeFromEvents } from './events.js';
9
+ export { TxOptions, buildTransaction, sendTransaction } from './transaction.js';
10
+ export { HodlClient } from './client.js';
11
+ import '@solana/web3.js';
12
+ import 'bn.js';