@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/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"],"mappings":"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","file":"client.js","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"]}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var web3_js = require('@solana/web3.js');
4
+ var BN = require('bn.js');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var BN__default = /*#__PURE__*/_interopDefault(BN);
9
+
10
+ // src/constants.ts
11
+ var BPS_DENOMINATOR = 1e4;
12
+ var PROGRAM_ID = new web3_js.PublicKey("hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG");
13
+ var PROTOCOL_AUTHORITY = new web3_js.PublicKey("EFAquDGAHjkoPB6TGKVibD3BYhbFXNDjuXKpiBHdYzji");
14
+ var VIRTUAL_SOL = new BN__default.default("30000000000");
15
+ var TOTAL_SUPPLY = new BN__default.default("1000000000000000");
16
+ var PROTOCOL_MINT_FEE = new BN__default.default("100000000");
17
+ var DECIMALS = 6;
18
+ var SEEDS = {
19
+ POOL: Buffer.from("pool"),
20
+ VAULT_AUTHORITY: Buffer.from("vault_authority"),
21
+ SOL_VAULT: Buffer.from("sol_vault"),
22
+ POSITION: Buffer.from("position"),
23
+ PROTOCOL_FEES: Buffer.from("protocol_fees"),
24
+ EVENT_AUTHORITY: Buffer.from("__event_authority")
25
+ };
26
+ var MAINNET_CONFIG = {
27
+ programId: PROGRAM_ID,
28
+ virtualSol: VIRTUAL_SOL,
29
+ protocolAuthority: PROTOCOL_AUTHORITY,
30
+ protocolMintFee: PROTOCOL_MINT_FEE,
31
+ decimals: DECIMALS,
32
+ totalSupply: TOTAL_SUPPLY
33
+ };
34
+ var DEVNET_CONFIG = {
35
+ programId: PROGRAM_ID,
36
+ virtualSol: VIRTUAL_SOL,
37
+ protocolAuthority: PROTOCOL_AUTHORITY,
38
+ protocolMintFee: PROTOCOL_MINT_FEE,
39
+ decimals: DECIMALS,
40
+ totalSupply: TOTAL_SUPPLY
41
+ };
42
+ var TRADE_FEE_BPS = 25;
43
+ var VEST_DURATION = {
44
+ ONE_MINUTE: 60,
45
+ TEN_MINUTES: 600
46
+ };
47
+ var LIMITS = {
48
+ NAME: { min: 1, max: 32 },
49
+ SYMBOL: { min: 1, max: 16 },
50
+ URI: { min: 10, max: 100 },
51
+ DESCRIPTION: { min: 0, max: 200 }
52
+ };
53
+
54
+ exports.BPS_DENOMINATOR = BPS_DENOMINATOR;
55
+ exports.DECIMALS = DECIMALS;
56
+ exports.DEVNET_CONFIG = DEVNET_CONFIG;
57
+ exports.LIMITS = LIMITS;
58
+ exports.MAINNET_CONFIG = MAINNET_CONFIG;
59
+ exports.PROGRAM_ID = PROGRAM_ID;
60
+ exports.PROTOCOL_AUTHORITY = PROTOCOL_AUTHORITY;
61
+ exports.PROTOCOL_MINT_FEE = PROTOCOL_MINT_FEE;
62
+ exports.SEEDS = SEEDS;
63
+ exports.TOTAL_SUPPLY = TOTAL_SUPPLY;
64
+ exports.TRADE_FEE_BPS = TRADE_FEE_BPS;
65
+ exports.VEST_DURATION = VEST_DURATION;
66
+ exports.VIRTUAL_SOL = VIRTUAL_SOL;
67
+ //# sourceMappingURL=constants.cjs.map
68
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"names":["PublicKey","BN"],"mappings":";;;;;;;;;;AAGO,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa,IAAIA,iBAAA,CAAU,6CAA6C;AAC9E,IAAM,kBAAA,GAAqB,IAAIA,iBAAA,CAAU,8CAA8C;AAEvF,IAAM,WAAA,GAAc,IAAIC,mBAAA,CAAG,aAAa;AACxC,IAAM,YAAA,GAAe,IAAIA,mBAAA,CAAG,kBAAkB;AAC9C,IAAM,iBAAA,GAAoB,IAAIA,mBAAA,CAAG,WAAW;AAC5C,IAAM,QAAA,GAAW;AAEjB,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EACxB,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA;AAAA,EAC9C,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAAA,EAClC,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AAAA,EAChC,aAAA,EAAe,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA;AAAA,EAC1C,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,mBAAmB;AAClD;AAEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,SAAA,EAAW,UAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,iBAAA,EAAmB,kBAAA;AAAA,EACnB,eAAA,EAAiB,iBAAA;AAAA,EACjB,QAAA,EAAU,QAAA;AAAA,EACV,WAAA,EAAa;AACf;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,SAAA,EAAW,UAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,iBAAA,EAAmB,kBAAA;AAAA,EACnB,eAAA,EAAiB,iBAAA;AAAA,EACjB,QAAA,EAAU,QAAA;AAAA,EACV,WAAA,EAAa;AACf;AAGO,IAAM,aAAA,GAAgB;AAGtB,IAAM,aAAA,GAAgB;AAAA,EAC3B,UAAA,EAAY,EAAA;AAAA,EACZ,WAAA,EAAa;AACf;AAIO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAA,EAAM,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,EAAA,EAAG;AAAA,EACxB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,EAAA,EAAG;AAAA,EAC1B,GAAA,EAAK,EAAE,GAAA,EAAK,EAAA,EAAI,KAAK,GAAA,EAAI;AAAA,EACzB,WAAA,EAAa,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA;AAC9B","file":"constants.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"]}
@@ -0,0 +1,62 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import BN from 'bn.js';
3
+
4
+ declare const BPS_DENOMINATOR = 10000;
5
+ declare const PROGRAM_ID: PublicKey;
6
+ declare const PROTOCOL_AUTHORITY: PublicKey;
7
+ declare const VIRTUAL_SOL: BN;
8
+ declare const TOTAL_SUPPLY: BN;
9
+ declare const PROTOCOL_MINT_FEE: BN;
10
+ declare const DECIMALS = 6;
11
+ declare const SEEDS: {
12
+ readonly POOL: Buffer<ArrayBuffer>;
13
+ readonly VAULT_AUTHORITY: Buffer<ArrayBuffer>;
14
+ readonly SOL_VAULT: Buffer<ArrayBuffer>;
15
+ readonly POSITION: Buffer<ArrayBuffer>;
16
+ readonly PROTOCOL_FEES: Buffer<ArrayBuffer>;
17
+ readonly EVENT_AUTHORITY: Buffer<ArrayBuffer>;
18
+ };
19
+ declare const MAINNET_CONFIG: {
20
+ readonly programId: PublicKey;
21
+ readonly virtualSol: BN;
22
+ readonly protocolAuthority: PublicKey;
23
+ readonly protocolMintFee: BN;
24
+ readonly decimals: 6;
25
+ readonly totalSupply: BN;
26
+ };
27
+ declare const DEVNET_CONFIG: {
28
+ readonly programId: PublicKey;
29
+ readonly virtualSol: BN;
30
+ readonly protocolAuthority: PublicKey;
31
+ readonly protocolMintFee: BN;
32
+ readonly decimals: 6;
33
+ readonly totalSupply: BN;
34
+ };
35
+ /** Trade fee in basis points (25 bps = 0.25%). Only applies after vest_duration has passed. */
36
+ declare const TRADE_FEE_BPS = 25;
37
+ /** Allowed vest duration modes (in seconds). The program only accepts these values. */
38
+ declare const VEST_DURATION: {
39
+ readonly ONE_MINUTE: 60;
40
+ readonly TEN_MINUTES: 600;
41
+ };
42
+ type VestDuration = typeof VEST_DURATION[keyof typeof VEST_DURATION];
43
+ declare const LIMITS: {
44
+ readonly NAME: {
45
+ readonly min: 1;
46
+ readonly max: 32;
47
+ };
48
+ readonly SYMBOL: {
49
+ readonly min: 1;
50
+ readonly max: 16;
51
+ };
52
+ readonly URI: {
53
+ readonly min: 10;
54
+ readonly max: 100;
55
+ };
56
+ readonly DESCRIPTION: {
57
+ readonly min: 0;
58
+ readonly max: 200;
59
+ };
60
+ };
61
+
62
+ 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, type VestDuration };
@@ -0,0 +1,62 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import BN from 'bn.js';
3
+
4
+ declare const BPS_DENOMINATOR = 10000;
5
+ declare const PROGRAM_ID: PublicKey;
6
+ declare const PROTOCOL_AUTHORITY: PublicKey;
7
+ declare const VIRTUAL_SOL: BN;
8
+ declare const TOTAL_SUPPLY: BN;
9
+ declare const PROTOCOL_MINT_FEE: BN;
10
+ declare const DECIMALS = 6;
11
+ declare const SEEDS: {
12
+ readonly POOL: Buffer<ArrayBuffer>;
13
+ readonly VAULT_AUTHORITY: Buffer<ArrayBuffer>;
14
+ readonly SOL_VAULT: Buffer<ArrayBuffer>;
15
+ readonly POSITION: Buffer<ArrayBuffer>;
16
+ readonly PROTOCOL_FEES: Buffer<ArrayBuffer>;
17
+ readonly EVENT_AUTHORITY: Buffer<ArrayBuffer>;
18
+ };
19
+ declare const MAINNET_CONFIG: {
20
+ readonly programId: PublicKey;
21
+ readonly virtualSol: BN;
22
+ readonly protocolAuthority: PublicKey;
23
+ readonly protocolMintFee: BN;
24
+ readonly decimals: 6;
25
+ readonly totalSupply: BN;
26
+ };
27
+ declare const DEVNET_CONFIG: {
28
+ readonly programId: PublicKey;
29
+ readonly virtualSol: BN;
30
+ readonly protocolAuthority: PublicKey;
31
+ readonly protocolMintFee: BN;
32
+ readonly decimals: 6;
33
+ readonly totalSupply: BN;
34
+ };
35
+ /** Trade fee in basis points (25 bps = 0.25%). Only applies after vest_duration has passed. */
36
+ declare const TRADE_FEE_BPS = 25;
37
+ /** Allowed vest duration modes (in seconds). The program only accepts these values. */
38
+ declare const VEST_DURATION: {
39
+ readonly ONE_MINUTE: 60;
40
+ readonly TEN_MINUTES: 600;
41
+ };
42
+ type VestDuration = typeof VEST_DURATION[keyof typeof VEST_DURATION];
43
+ declare const LIMITS: {
44
+ readonly NAME: {
45
+ readonly min: 1;
46
+ readonly max: 32;
47
+ };
48
+ readonly SYMBOL: {
49
+ readonly min: 1;
50
+ readonly max: 16;
51
+ };
52
+ readonly URI: {
53
+ readonly min: 10;
54
+ readonly max: 100;
55
+ };
56
+ readonly DESCRIPTION: {
57
+ readonly min: 0;
58
+ readonly max: 200;
59
+ };
60
+ };
61
+
62
+ 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, type VestDuration };
@@ -0,0 +1,50 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import BN from 'bn.js';
3
+
4
+ // src/constants.ts
5
+ var BPS_DENOMINATOR = 1e4;
6
+ var PROGRAM_ID = new PublicKey("hodLrUfwyK3Z7Td5hdZhyojyznG1rqbHVex11y5s4yG");
7
+ var PROTOCOL_AUTHORITY = new PublicKey("EFAquDGAHjkoPB6TGKVibD3BYhbFXNDjuXKpiBHdYzji");
8
+ var VIRTUAL_SOL = new BN("30000000000");
9
+ var TOTAL_SUPPLY = new BN("1000000000000000");
10
+ var PROTOCOL_MINT_FEE = new BN("100000000");
11
+ var DECIMALS = 6;
12
+ var SEEDS = {
13
+ POOL: Buffer.from("pool"),
14
+ VAULT_AUTHORITY: Buffer.from("vault_authority"),
15
+ SOL_VAULT: Buffer.from("sol_vault"),
16
+ POSITION: Buffer.from("position"),
17
+ PROTOCOL_FEES: Buffer.from("protocol_fees"),
18
+ EVENT_AUTHORITY: Buffer.from("__event_authority")
19
+ };
20
+ var MAINNET_CONFIG = {
21
+ programId: PROGRAM_ID,
22
+ virtualSol: VIRTUAL_SOL,
23
+ protocolAuthority: PROTOCOL_AUTHORITY,
24
+ protocolMintFee: PROTOCOL_MINT_FEE,
25
+ decimals: DECIMALS,
26
+ totalSupply: TOTAL_SUPPLY
27
+ };
28
+ var DEVNET_CONFIG = {
29
+ programId: PROGRAM_ID,
30
+ virtualSol: VIRTUAL_SOL,
31
+ protocolAuthority: PROTOCOL_AUTHORITY,
32
+ protocolMintFee: PROTOCOL_MINT_FEE,
33
+ decimals: DECIMALS,
34
+ totalSupply: TOTAL_SUPPLY
35
+ };
36
+ var TRADE_FEE_BPS = 25;
37
+ var VEST_DURATION = {
38
+ ONE_MINUTE: 60,
39
+ TEN_MINUTES: 600
40
+ };
41
+ var LIMITS = {
42
+ NAME: { min: 1, max: 32 },
43
+ SYMBOL: { min: 1, max: 16 },
44
+ URI: { min: 10, max: 100 },
45
+ DESCRIPTION: { min: 0, max: 200 }
46
+ };
47
+
48
+ 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 };
49
+ //# sourceMappingURL=constants.js.map
50
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";;;;AAGO,IAAM,eAAA,GAAkB;AAExB,IAAM,UAAA,GAAa,IAAI,SAAA,CAAU,6CAA6C;AAC9E,IAAM,kBAAA,GAAqB,IAAI,SAAA,CAAU,8CAA8C;AAEvF,IAAM,WAAA,GAAc,IAAI,EAAA,CAAG,aAAa;AACxC,IAAM,YAAA,GAAe,IAAI,EAAA,CAAG,kBAAkB;AAC9C,IAAM,iBAAA,GAAoB,IAAI,EAAA,CAAG,WAAW;AAC5C,IAAM,QAAA,GAAW;AAEjB,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EACxB,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA;AAAA,EAC9C,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAAA,EAClC,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AAAA,EAChC,aAAA,EAAe,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA;AAAA,EAC1C,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,mBAAmB;AAClD;AAEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,SAAA,EAAW,UAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,iBAAA,EAAmB,kBAAA;AAAA,EACnB,eAAA,EAAiB,iBAAA;AAAA,EACjB,QAAA,EAAU,QAAA;AAAA,EACV,WAAA,EAAa;AACf;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,SAAA,EAAW,UAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,iBAAA,EAAmB,kBAAA;AAAA,EACnB,eAAA,EAAiB,iBAAA;AAAA,EACjB,QAAA,EAAU,QAAA;AAAA,EACV,WAAA,EAAa;AACf;AAGO,IAAM,aAAA,GAAgB;AAGtB,IAAM,aAAA,GAAgB;AAAA,EAC3B,UAAA,EAAY,EAAA;AAAA,EACZ,WAAA,EAAa;AACf;AAIO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAA,EAAM,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,EAAA,EAAG;AAAA,EACxB,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,EAAA,EAAG;AAAA,EAC1B,GAAA,EAAK,EAAE,GAAA,EAAK,EAAA,EAAI,KAAK,GAAA,EAAI;AAAA,EACzB,WAAA,EAAa,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA;AAC9B","file":"constants.js","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"]}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ // src/errors.ts
4
+ var HodlError = class extends Error {
5
+ constructor(code, message) {
6
+ super(message);
7
+ this.code = code;
8
+ this.name = "HodlError";
9
+ }
10
+ };
11
+ var HODL_ERRORS = {
12
+ 7005: "Insufficient token reserves in vault",
13
+ 7100: "Arithmetic overflow",
14
+ 7102: "Division by zero or invalid division",
15
+ 7104: "Token calculation overflow",
16
+ 7105: "Token calculation underflow",
17
+ 7200: "Slippage exceeded: output below minimum threshold",
18
+ 7312: "Accrual calculation overflow",
19
+ 7315: "Position is not empty, must sell all tokens first",
20
+ 7319: "Invalid protocol authority",
21
+ 7321: "Position must have tokens to perform this operation",
22
+ 7500: "Position not owned by signer",
23
+ 7505: "SOL vault PDA derivation mismatch",
24
+ 7601: "Invalid vesting type",
25
+ 7604: "Invalid percentage value (must be 0-100)",
26
+ 7901: "Not authorized",
27
+ 8014: "Insufficient liquidity",
28
+ 8018: "vAMM is not active",
29
+ 8020: "Invalid amount"
30
+ };
31
+ function parseHodlError(err) {
32
+ if (err && typeof err === "object" && "code" in err) {
33
+ const code = err.code;
34
+ if (code in HODL_ERRORS) return new HodlError(code, HODL_ERRORS[code]);
35
+ }
36
+ return null;
37
+ }
38
+
39
+ exports.HODL_ERRORS = HODL_ERRORS;
40
+ exports.HodlError = HodlError;
41
+ exports.parseHodlError = parseHodlError;
42
+ //# sourceMappingURL=errors.cjs.map
43
+ //# sourceMappingURL=errors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAO,IAAM,SAAA,GAAN,cAAwB,KAAA,CAAM;AAAA,EACnC,WAAA,CAA4B,MAAc,OAAA,EAAiB;AACzD,IAAA,KAAA,CAAM,OAAO,CAAA;AADa,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAE1B,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AAAA,EACd;AACF;AAEO,IAAM,WAAA,GAAsC;AAAA,EACjD,IAAA,EAAM,sCAAA;AAAA,EACN,IAAA,EAAM,qBAAA;AAAA,EACN,IAAA,EAAM,sCAAA;AAAA,EACN,IAAA,EAAM,4BAAA;AAAA,EACN,IAAA,EAAM,6BAAA;AAAA,EACN,IAAA,EAAM,mDAAA;AAAA,EACN,IAAA,EAAM,8BAAA;AAAA,EACN,IAAA,EAAM,mDAAA;AAAA,EACN,IAAA,EAAM,4BAAA;AAAA,EACN,IAAA,EAAM,qDAAA;AAAA,EACN,IAAA,EAAM,8BAAA;AAAA,EACN,IAAA,EAAM,mCAAA;AAAA,EACN,IAAA,EAAM,sBAAA;AAAA,EACN,IAAA,EAAM,0CAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM,wBAAA;AAAA,EACN,IAAA,EAAM,oBAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,SAAS,eAAe,GAAA,EAAgC;AAC7D,EAAA,IAAI,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,UAAU,GAAA,EAAK;AACnD,IAAA,MAAM,OAAQ,GAAA,CAAyB,IAAA;AACvC,IAAA,IAAI,IAAA,IAAQ,aAAa,OAAO,IAAI,UAAU,IAAA,EAAM,WAAA,CAAY,IAAI,CAAC,CAAA;AAAA,EACvE;AACA,EAAA,OAAO,IAAA;AACT","file":"errors.cjs","sourcesContent":["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"]}
@@ -0,0 +1,8 @@
1
+ declare class HodlError extends Error {
2
+ readonly code: number;
3
+ constructor(code: number, message: string);
4
+ }
5
+ declare const HODL_ERRORS: Record<number, string>;
6
+ declare function parseHodlError(err: unknown): HodlError | null;
7
+
8
+ export { HODL_ERRORS, HodlError, parseHodlError };
@@ -0,0 +1,8 @@
1
+ declare class HodlError extends Error {
2
+ readonly code: number;
3
+ constructor(code: number, message: string);
4
+ }
5
+ declare const HODL_ERRORS: Record<number, string>;
6
+ declare function parseHodlError(err: unknown): HodlError | null;
7
+
8
+ export { HODL_ERRORS, HodlError, parseHodlError };