@ghostspeak/sdk 2.0.5 → 2.0.7

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 (121) hide show
  1. package/README.md +152 -30
  2. package/dist/GhostSpeakClient-CWmGaM9Q.d.ts +1007 -0
  3. package/dist/StakingModule-C5rzuOWb.d.ts +2526 -0
  4. package/dist/{agent-M74TCRON.js → agent-5YLZ7DAC.js} +4 -4
  5. package/dist/{agent-M74TCRON.js.map → agent-5YLZ7DAC.js.map} +1 -1
  6. package/dist/batch-operations-45CQFEID.js +4 -0
  7. package/dist/batch-operations-45CQFEID.js.map +1 -0
  8. package/dist/browser.d.ts +45 -554
  9. package/dist/browser.js +15 -842
  10. package/dist/browser.js.map +1 -1
  11. package/dist/chunk-AL3HQN73.js +754 -0
  12. package/dist/chunk-AL3HQN73.js.map +1 -0
  13. package/dist/chunk-BF3IQ35I.js +284 -0
  14. package/dist/chunk-BF3IQ35I.js.map +1 -0
  15. package/dist/chunk-BQDGRTVP.js +168 -0
  16. package/dist/chunk-BQDGRTVP.js.map +1 -0
  17. package/dist/chunk-C5CDA3WX.js +7314 -0
  18. package/dist/chunk-C5CDA3WX.js.map +1 -0
  19. package/dist/chunk-E3FD2CNY.js +1869 -0
  20. package/dist/chunk-E3FD2CNY.js.map +1 -0
  21. package/dist/{chunk-V3SOFUAZ.js → chunk-G7S6B6WB.js} +327 -493
  22. package/dist/chunk-G7S6B6WB.js.map +1 -0
  23. package/dist/chunk-IHVDQ4YI.js +4231 -0
  24. package/dist/chunk-IHVDQ4YI.js.map +1 -0
  25. package/dist/chunk-JV2SWONF.js +98 -0
  26. package/dist/chunk-JV2SWONF.js.map +1 -0
  27. package/dist/chunk-KB6CKIUK.js +231 -0
  28. package/dist/chunk-KB6CKIUK.js.map +1 -0
  29. package/dist/chunk-RIZZPLLB.js +343 -0
  30. package/dist/chunk-RIZZPLLB.js.map +1 -0
  31. package/dist/chunk-S74EH3KD.js +7890 -0
  32. package/dist/chunk-S74EH3KD.js.map +1 -0
  33. package/dist/chunk-SFTSZ3LC.js +156 -0
  34. package/dist/chunk-SFTSZ3LC.js.map +1 -0
  35. package/dist/chunk-SKMJJ3Q6.js +125 -0
  36. package/dist/chunk-SKMJJ3Q6.js.map +1 -0
  37. package/dist/chunk-SZGFSCNU.js +3682 -0
  38. package/dist/chunk-SZGFSCNU.js.map +1 -0
  39. package/dist/chunk-TTB4OS2D.js +69 -0
  40. package/dist/chunk-TTB4OS2D.js.map +1 -0
  41. package/dist/chunk-UP2VWCW5.js +33 -0
  42. package/dist/{chunk-NSBPE2FW.js.map → chunk-UP2VWCW5.js.map} +1 -1
  43. package/dist/{chunk-UJUGGLMT.js → chunk-VQZQCHUT.js} +5 -5
  44. package/dist/{chunk-UJUGGLMT.js.map → chunk-VQZQCHUT.js.map} +1 -1
  45. package/dist/client.d.ts +6 -4
  46. package/dist/client.js +12 -10
  47. package/dist/createAgentAuthorization-ULG47ZJI.js +5 -0
  48. package/dist/createAgentAuthorization-ULG47ZJI.js.map +1 -0
  49. package/dist/credentials.d.ts +155 -0
  50. package/dist/credentials.js +4 -0
  51. package/dist/credentials.js.map +1 -0
  52. package/dist/crypto.js +2 -2
  53. package/dist/errors.js +1 -1
  54. package/dist/feature-flags-B1g0DCPe.d.ts +1181 -0
  55. package/dist/generated-EG5USUFG.js +9 -0
  56. package/dist/{generated-VNLHMR6Y.js.map → generated-EG5USUFG.js.map} +1 -1
  57. package/dist/{ghostspeak_wasm-SB2RPJ3D.js → ghostspeak_wasm-F227HOSM.js} +3 -3
  58. package/dist/{ghostspeak_wasm-SB2RPJ3D.js.map → ghostspeak_wasm-F227HOSM.js.map} +1 -1
  59. package/dist/index.d.ts +1210 -1506
  60. package/dist/index.js +601 -3532
  61. package/dist/index.js.map +1 -1
  62. package/dist/metafile-esm.json +1 -1
  63. package/dist/minimal/core-minimal.d.ts +2383 -1264
  64. package/dist/minimal/core-minimal.js +9 -9
  65. package/dist/minimal/core-minimal.js.map +1 -1
  66. package/dist/nacl-fast-W5BJ3KZ2.js +2229 -0
  67. package/dist/nacl-fast-W5BJ3KZ2.js.map +1 -0
  68. package/dist/pda-4KP7CURF.js +4 -0
  69. package/dist/pda-4KP7CURF.js.map +1 -0
  70. package/dist/pda-Ce7VYg4T.d.ts +25 -0
  71. package/dist/reputation-types-Yebf0Rm_.d.ts +1071 -0
  72. package/dist/revokeAuthorization-OK7E7OK3.js +5 -0
  73. package/dist/revokeAuthorization-OK7E7OK3.js.map +1 -0
  74. package/dist/signature-verification-DGxR4aYQ.d.ts +448 -0
  75. package/dist/types.js +1 -1
  76. package/dist/updateReputationWithAuth-Y4ONEVSP.js +5 -0
  77. package/dist/updateReputationWithAuth-Y4ONEVSP.js.map +1 -0
  78. package/dist/utils.d.ts +69 -203
  79. package/dist/utils.js +15 -153
  80. package/dist/utils.js.map +1 -1
  81. package/package.json +28 -31
  82. package/dist/.tsbuildinfo +0 -1
  83. package/dist/GhostSpeakClient-hsGuGg__.d.ts +0 -860
  84. package/dist/GovernanceModule-DQYYys-H.d.ts +0 -1766
  85. package/dist/chunk-ASQXX4IT.js +0 -572
  86. package/dist/chunk-ASQXX4IT.js.map +0 -1
  87. package/dist/chunk-COGZFWOT.js +0 -19657
  88. package/dist/chunk-COGZFWOT.js.map +0 -1
  89. package/dist/chunk-FKRN4PW5.js +0 -1667
  90. package/dist/chunk-FKRN4PW5.js.map +0 -1
  91. package/dist/chunk-GMHIUK2R.js +0 -7526
  92. package/dist/chunk-GMHIUK2R.js.map +0 -1
  93. package/dist/chunk-IAWBZYPE.js +0 -356
  94. package/dist/chunk-IAWBZYPE.js.map +0 -1
  95. package/dist/chunk-NSBPE2FW.js +0 -15
  96. package/dist/chunk-OWYHJG6H.js +0 -13311
  97. package/dist/chunk-OWYHJG6H.js.map +0 -1
  98. package/dist/chunk-RDDPOFR5.js +0 -3
  99. package/dist/chunk-RDDPOFR5.js.map +0 -1
  100. package/dist/chunk-RERCHKZP.js +0 -35
  101. package/dist/chunk-RERCHKZP.js.map +0 -1
  102. package/dist/chunk-TVVGXYCI.js +0 -2887
  103. package/dist/chunk-TVVGXYCI.js.map +0 -1
  104. package/dist/chunk-V3SOFUAZ.js.map +0 -1
  105. package/dist/chunk-ZGP5552B.js +0 -377
  106. package/dist/chunk-ZGP5552B.js.map +0 -1
  107. package/dist/chunk-ZWOYNHVK.js +0 -196
  108. package/dist/chunk-ZWOYNHVK.js.map +0 -1
  109. package/dist/dist/.tsbuildinfo +0 -1
  110. package/dist/elgamal-VZLWB3XK.js +0 -5
  111. package/dist/elgamal-VZLWB3XK.js.map +0 -1
  112. package/dist/feature-flags-V722ZuXO.d.ts +0 -3512
  113. package/dist/generated-VNLHMR6Y.js +0 -5
  114. package/dist/ipfs-types-BOt9ZNg4.d.ts +0 -592
  115. package/dist/multisigConfig-BzEhy6jy.d.ts +0 -58
  116. package/dist/pda-B_nS8SbD.d.ts +0 -114
  117. package/dist/pda-S4BFJVGE.js +0 -4
  118. package/dist/pda-S4BFJVGE.js.map +0 -1
  119. package/dist/system-addresses-BFNLEbFx.d.ts +0 -857
  120. package/dist/token-2022-rpc-RALH4RK7.js +0 -593
  121. package/dist/token-2022-rpc-RALH4RK7.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/token-2022-rpc.ts"],"names":[],"mappings":"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","file":"token-2022-rpc-RALH4RK7.js","sourcesContent":["/**\n * Token-2022 RPC Module\n * \n * Functions to query Token-2022 mint and account data with extensions\n * Includes parsers for all Token-2022 extension types\n */\n\nimport './text-encoder-polyfill.js'\nimport type { Address } from '@solana/addresses'\nimport {\n getAddressDecoder,\n getAddressEncoder,\n // Import codecs from @solana/kit instead of @solana/codecs\n getU8Decoder,\n getU16Decoder,\n getU32Decoder,\n getU64Decoder,\n getBooleanDecoder,\n getUtf8Decoder\n} from '@solana/kit'\nimport { \n type Commitment\n} from '../types/rpc-types.js'\nimport {\n createTypedRpcClient\n} from '../types/rpc-client-types.js'\nimport {\n type MintWithExtensions,\n type TokenAccountWithExtensions,\n ExtensionType,\n type ExtensionTLV,\n type ParsedExtensions,\n type TransferFeeConfig,\n type InterestBearingConfig,\n type MintCloseAuthority,\n type PermanentDelegate,\n type DefaultAccountState,\n type TransferHook,\n type MetadataPointer,\n type GroupPointer,\n type GroupMemberPointer,\n type ConfidentialTransferMint,\n type TransferFeeAmount,\n type ImmutableOwner,\n type NonTransferable,\n type MemoTransfer,\n type CpiGuard,\n type ConfidentialTransferAccount,\n type TransferHookAccount,\n type TokenMetadata,\n type TokenGroup,\n type TokenGroupMember,\n type AccountState\n} from '../types/token-2022-types.js'\n\n// =====================================================\n// CONSTANTS\n// =====================================================\n\n/** Token-2022 program ID */\nexport const TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address\n\n/** Mint account size without extensions */\nconst MINT_SIZE = 82\n\n/** Token account size without extensions */\nconst ACCOUNT_SIZE = 165\n\n/** Extension discriminator size */\nconst EXTENSION_TYPE_SIZE = 2\n\n/** Extension length size */\nconst EXTENSION_LENGTH_SIZE = 2\n\n// =====================================================\n// EXTENSION PARSERS\n// =====================================================\n\n/**\n * Parse TLV (Type-Length-Value) extensions from account data\n */\nfunction parseExtensions(data: Uint8Array, baseSize: number): ParsedExtensions {\n const extensions: ExtensionTLV[] = []\n let offset = baseSize\n\n while (offset + EXTENSION_TYPE_SIZE + EXTENSION_LENGTH_SIZE <= data.length) {\n // Read extension type (2 bytes, little-endian)\n const extensionType = getU16Decoder().decode(data.slice(offset, offset + 2)) as ExtensionType\n offset += EXTENSION_TYPE_SIZE\n\n // Check for account type discriminator (indicates end of extensions)\n const maxExtensionType = Object.values(ExtensionType).filter(val => typeof val === 'number').pop() as number\n const extensionTypeNumber = extensionType as number\n if (extensionTypeNumber === 0 || extensionTypeNumber > maxExtensionType) {\n break\n }\n\n // Read extension length (2 bytes, little-endian)\n const length = getU16Decoder().decode(data.slice(offset, offset + 2))\n offset += EXTENSION_LENGTH_SIZE\n\n // Read extension data\n const extensionData = data.slice(offset, offset + length)\n offset += length\n\n extensions.push({\n extensionType,\n length,\n data: extensionData\n })\n }\n\n return {\n extensions,\n remainingData: data.slice(offset)\n }\n}\n\n/**\n * Parse transfer fee configuration\n */\nfunction parseTransferFeeConfig(data: Uint8Array): TransferFeeConfig {\n let offset = 0\n \n // Transfer fee config authority (32 bytes, optional)\n const transferFeeConfigAuthority = data.slice(offset, offset + 32)\n const hasAuthority = transferFeeConfigAuthority.some(b => b !== 0)\n offset += 32\n\n // Withdraw withheld authority (32 bytes, optional)\n const withdrawWithheldAuthority = data.slice(offset, offset + 32)\n const hasWithdrawAuthority = withdrawWithheldAuthority.some(b => b !== 0)\n offset += 32\n\n // Withheld amount (8 bytes)\n const withheldAmount = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Older transfer fee\n const olderEpoch = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n const olderMaximumFee = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n const olderTransferFeeBasisPoints = getU16Decoder().decode(data.slice(offset, offset + 2))\n offset += 2\n\n // Newer transfer fee\n const newerEpoch = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n const newerMaximumFee = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n const newerTransferFeeBasisPoints = getU16Decoder().decode(data.slice(offset, offset + 2))\n\n return {\n transferFeeConfigAuthority: hasAuthority ? getAddressDecoder().decode(transferFeeConfigAuthority) : null,\n withdrawWithheldAuthority: hasWithdrawAuthority ? getAddressDecoder().decode(withdrawWithheldAuthority) : null,\n withheldAmount,\n olderTransferFee: {\n epoch: olderEpoch,\n maximumFee: olderMaximumFee,\n transferFeeBasisPoints: olderTransferFeeBasisPoints\n },\n newerTransferFee: {\n epoch: newerEpoch,\n maximumFee: newerMaximumFee,\n transferFeeBasisPoints: newerTransferFeeBasisPoints\n }\n }\n}\n\n/**\n * Parse interest-bearing configuration\n */\nfunction parseInterestBearingConfig(data: Uint8Array): InterestBearingConfig {\n let offset = 0\n\n // Rate authority (32 bytes, optional)\n const rateAuthority = data.slice(offset, offset + 32)\n const hasAuthority = rateAuthority.some(b => b !== 0)\n offset += 32\n\n // Initialization timestamp (8 bytes)\n const initializationTimestamp = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Pre-update average rate (2 bytes)\n const preUpdateAverageRate = getU16Decoder().decode(data.slice(offset, offset + 2))\n offset += 2\n\n // Last update timestamp (8 bytes)\n const lastUpdateTimestamp = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Current rate (2 bytes)\n const currentRate = getU16Decoder().decode(data.slice(offset, offset + 2))\n\n return {\n rateAuthority: hasAuthority ? getAddressDecoder().decode(rateAuthority) : null,\n initializationTimestamp,\n preUpdateAverageRate,\n lastUpdateTimestamp,\n currentRate\n }\n}\n\n/**\n * Parse confidential transfer mint configuration\n */\nfunction parseConfidentialTransferMint(data: Uint8Array): ConfidentialTransferMint {\n let offset = 0\n\n // Authority (32 bytes, optional)\n const authority = data.slice(offset, offset + 32)\n const hasAuthority = authority.some(b => b !== 0)\n offset += 32\n\n // Auto-approve new accounts (1 byte)\n const autoApproveNewAccounts = getBooleanDecoder().decode(data.slice(offset, offset + 1))\n offset += 1\n\n // Auditor ElGamal pubkey (32 bytes, optional)\n const auditorElgamalPubkey = data.slice(offset, offset + 32)\n const hasAuditor = auditorElgamalPubkey.some(b => b !== 0)\n\n return {\n authority: hasAuthority ? getAddressDecoder().decode(authority) : null,\n autoApproveNewAccounts,\n auditorElgamalPubkey: hasAuditor ? auditorElgamalPubkey : null\n }\n}\n\n/**\n * Parse confidential transfer account configuration\n */\nfunction parseConfidentialTransferAccount(data: Uint8Array): ConfidentialTransferAccount {\n let offset = 0\n\n // Approved (1 byte)\n const approved = getBooleanDecoder().decode(data.slice(offset, offset + 1))\n offset += 1\n\n // ElGamal pubkey (32 bytes)\n const elgamalPubkey = data.slice(offset, offset + 32)\n offset += 32\n\n // Pending balance low (64 bytes - ElGamal ciphertext)\n const pendingBalanceLo = data.slice(offset, offset + 64)\n offset += 64\n\n // Pending balance high (64 bytes - ElGamal ciphertext)\n const pendingBalanceHi = data.slice(offset, offset + 64)\n offset += 64\n\n // Available balance low (64 bytes - ElGamal ciphertext)\n const availableBalanceLo = data.slice(offset, offset + 64)\n offset += 64\n\n // Available balance high (64 bytes - ElGamal ciphertext)\n const availableBalanceHi = data.slice(offset, offset + 64)\n offset += 64\n\n // Decryptable available balance (8 bytes)\n const decryptableAvailableBalance = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Allow confidential credits (1 byte)\n const allowConfidentialCredits = getBooleanDecoder().decode(data.slice(offset, offset + 1))\n offset += 1\n\n // Allow non-confidential credits (1 byte)\n const allowNonConfidentialCredits = getBooleanDecoder().decode(data.slice(offset, offset + 1))\n offset += 1\n\n // Pending balance credit counter low (8 bytes)\n const pendingBalanceCreditCounterLo = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Pending balance credit counter high (8 bytes)\n const pendingBalanceCreditCounterHi = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Maximum pending balance credit counter (8 bytes)\n const maximumPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Expected pending balance credit counter (8 bytes)\n const expectedPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Actual pending balance credit counter (8 bytes)\n const actualPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8))\n\n return {\n approved,\n elgamalPubkey,\n pendingBalanceLo,\n pendingBalanceHi,\n availableBalanceLo,\n availableBalanceHi,\n decryptableAvailableBalance,\n allowConfidentialCredits,\n allowNonConfidentialCredits,\n pendingBalanceCreditCounterLo,\n pendingBalanceCreditCounterHi,\n maximumPendingBalanceCreditCounter,\n expectedPendingBalanceCreditCounter,\n actualPendingBalanceCreditCounter\n }\n}\n\n/**\n * Parse token metadata\n */\nfunction parseTokenMetadata(data: Uint8Array): TokenMetadata {\n let offset = 0\n\n // Update authority (33 bytes - 1 byte option + 32 bytes pubkey)\n const hasUpdateAuthority = data[offset] === 1\n offset += 1\n const updateAuthority = hasUpdateAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null\n offset += 32\n\n // Mint (32 bytes)\n const mint = getAddressDecoder().decode(data.slice(offset, offset + 32))\n offset += 32\n\n // Name length (4 bytes) and name\n const nameLength = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n const name = getUtf8Decoder().decode(data.slice(offset, offset + nameLength))\n offset += nameLength\n\n // Symbol length (4 bytes) and symbol\n const symbolLength = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n const symbol = getUtf8Decoder().decode(data.slice(offset, offset + symbolLength))\n offset += symbolLength\n\n // URI length (4 bytes) and URI\n const uriLength = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n const uri = getUtf8Decoder().decode(data.slice(offset, offset + uriLength))\n offset += uriLength\n\n // Additional metadata count (4 bytes)\n const additionalMetadataCount = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n\n const additionalMetadata = []\n for (let i = 0; i < additionalMetadataCount; i++) {\n // Key length and key\n const keyLength = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n const key = getUtf8Decoder().decode(data.slice(offset, offset + keyLength))\n offset += keyLength\n\n // Value length and value\n const valueLength = getU32Decoder().decode(data.slice(offset, offset + 4))\n offset += 4\n const value = getUtf8Decoder().decode(data.slice(offset, offset + valueLength))\n offset += valueLength\n\n additionalMetadata.push({ key, value })\n }\n\n return {\n updateAuthority,\n mint,\n name,\n symbol,\n uri,\n additionalMetadata\n }\n}\n\n/**\n * Parse extension based on type\n */\nfunction parseExtension(extensionType: ExtensionType, data: Uint8Array): unknown {\n switch (extensionType) {\n case ExtensionType.TransferFeeConfig:\n return parseTransferFeeConfig(data)\n \n case ExtensionType.TransferFeeAmount:\n return { withheldAmount: getU64Decoder().decode(data) }\n \n case ExtensionType.MintCloseAuthority: {\n const closeAuthority = data.some(b => b !== 0) ? getAddressDecoder().decode(data) : null\n return { closeAuthority }\n }\n \n case ExtensionType.ConfidentialTransferMint:\n return parseConfidentialTransferMint(data)\n \n case ExtensionType.ConfidentialTransferAccount:\n return parseConfidentialTransferAccount(data)\n \n case ExtensionType.DefaultAccountState:\n return { state: getU8Decoder().decode(data) as AccountState }\n \n case ExtensionType.ImmutableOwner:\n return {} // No additional data\n \n case ExtensionType.MemoTransfer:\n return { requireIncomingTransferMemos: getBooleanDecoder().decode(data) }\n \n case ExtensionType.NonTransferable:\n case ExtensionType.NonTransferableAccount:\n return {} // No additional data\n \n case ExtensionType.InterestBearingConfig:\n return parseInterestBearingConfig(data)\n \n case ExtensionType.CpiGuard:\n return { lockCpi: getBooleanDecoder().decode(data) }\n \n case ExtensionType.PermanentDelegate: {\n const delegate = data.some(b => b !== 0) ? getAddressDecoder().decode(data) : null\n return { delegate }\n }\n \n case ExtensionType.TransferHook: {\n const authority = data.slice(0, 32).some(b => b !== 0) ? getAddressDecoder().decode(data.slice(0, 32)) : null\n const programId = data.slice(32, 64).some(b => b !== 0) ? getAddressDecoder().decode(data.slice(32, 64)) : null\n return { authority, programId }\n }\n \n case ExtensionType.TransferHookAccount:\n return { transferring: getBooleanDecoder().decode(data) }\n \n case ExtensionType.MetadataPointer:\n case ExtensionType.GroupPointer:\n case ExtensionType.GroupMemberPointer: {\n const pointerAuthority = data.slice(0, 32).some(b => b !== 0) ? getAddressDecoder().decode(data.slice(0, 32)) : null\n const pointerAddress = data.slice(32, 64).some(b => b !== 0) ? getAddressDecoder().decode(data.slice(32, 64)) : null\n return { authority: pointerAuthority, [`${extensionType === ExtensionType.MetadataPointer ? 'metadata' : extensionType === ExtensionType.GroupPointer ? 'group' : 'member'}Address`]: pointerAddress }\n }\n \n case ExtensionType.TokenMetadata:\n return parseTokenMetadata(data)\n \n case ExtensionType.TokenGroup:\n case ExtensionType.TokenGroupMember:\n // Complex parsing for group extensions - simplified for now\n return {}\n \n default:\n return {}\n }\n}\n\n// =====================================================\n// MINT QUERIES\n// =====================================================\n\n/**\n * Get mint account with extensions\n */\nexport async function getMintWithExtensions(\n rpc: unknown,\n mint: Address,\n commitment?: Commitment\n): Promise<MintWithExtensions | null> {\n // Get account info\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getAccountInfo(mint, { commitment, encoding: 'base64' })\n const accountInfo = response.value\n \n if (!accountInfo?.data) {\n return null\n }\n\n // Decode account data\n let data: Uint8Array\n if (Array.isArray(accountInfo.data)) {\n data = new Uint8Array(Buffer.from(accountInfo.data[0], 'base64'))\n } else if (typeof accountInfo.data === 'string') {\n data = new Uint8Array(Buffer.from(accountInfo.data, 'base64'))\n } else {\n throw new Error('Unexpected data format')\n }\n \n // Check if this is a Token-2022 mint\n if (accountInfo.owner !== TOKEN_2022_PROGRAM_ID) {\n throw new Error('Not a Token-2022 mint')\n }\n\n // Parse basic mint data\n let offset = 0\n \n // COption<Pubkey> for mint authority (1 + 32 bytes)\n const hasMintAuthority = data[offset] === 1\n offset += 1\n const mintAuthority = hasMintAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null\n offset += 32\n\n // Supply (8 bytes)\n const supply = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // Decimals (1 byte)\n const decimals = data[offset]\n offset += 1\n\n // Is initialized (1 byte)\n const isInitialized = data[offset] === 1\n offset += 1\n\n // COption<Pubkey> for freeze authority (1 + 32 bytes)\n const hasFreezeAuthority = data[offset] === 1\n offset += 1\n const freezeAuthority = hasFreezeAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null\n\n // Parse extensions if present\n const extensions: MintWithExtensions['extensions'] = {}\n \n if (data.length > MINT_SIZE) {\n const parsed = parseExtensions(data, MINT_SIZE)\n \n for (const ext of parsed.extensions) {\n const extensionData = parseExtension(ext.extensionType, ext.data)\n \n switch (ext.extensionType) {\n case ExtensionType.TransferFeeConfig:\n extensions.transferFeeConfig = extensionData as TransferFeeConfig\n break\n case ExtensionType.MintCloseAuthority:\n extensions.mintCloseAuthority = extensionData as MintCloseAuthority\n break\n case ExtensionType.ConfidentialTransferMint:\n extensions.confidentialTransferMint = extensionData as ConfidentialTransferMint\n break\n case ExtensionType.DefaultAccountState:\n extensions.defaultAccountState = extensionData as DefaultAccountState\n break\n case ExtensionType.NonTransferable:\n extensions.nonTransferable = extensionData as NonTransferable\n break\n case ExtensionType.InterestBearingConfig:\n extensions.interestBearingConfig = extensionData as InterestBearingConfig\n break\n case ExtensionType.PermanentDelegate:\n extensions.permanentDelegate = extensionData as PermanentDelegate\n break\n case ExtensionType.TransferHook:\n extensions.transferHook = extensionData as TransferHook\n break\n case ExtensionType.MetadataPointer:\n extensions.metadataPointer = extensionData as MetadataPointer\n break\n case ExtensionType.TokenMetadata:\n extensions.tokenMetadata = extensionData as TokenMetadata\n break\n case ExtensionType.GroupPointer:\n extensions.groupPointer = extensionData as GroupPointer\n break\n case ExtensionType.TokenGroup:\n extensions.tokenGroup = extensionData as TokenGroup\n break\n }\n }\n }\n\n return {\n address: mint,\n mintAuthority,\n supply,\n decimals,\n isInitialized,\n freezeAuthority,\n extensions\n }\n}\n\n/**\n * Get multiple mints with extensions\n */\nexport async function getMultipleMintsWithExtensions(\n rpc: unknown,\n mints: Address[],\n commitment?: Commitment\n): Promise<(MintWithExtensions | null)[]> {\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getMultipleAccounts(mints, { commitment, encoding: 'base64' })\n const accountInfos = response.value\n \n return Promise.all(accountInfos.map(async (info, index) => {\n if (!info?.data) return null\n \n try {\n // Process each account info\n return await getMintWithExtensions(rpc, mints[index], commitment)\n } catch {\n return null\n }\n }))\n}\n\n/**\n * Check if a mint has a specific extension\n */\nexport async function mintHasExtension(\n rpc: unknown,\n mint: Address,\n extensionType: ExtensionType,\n commitment?: Commitment\n): Promise<boolean> {\n const mintData = await getMintWithExtensions(rpc, mint, commitment)\n if (!mintData) return false\n\n switch (extensionType) {\n case ExtensionType.TransferFeeConfig:\n return Boolean(mintData.extensions.transferFeeConfig)\n case ExtensionType.MintCloseAuthority:\n return Boolean(mintData.extensions.mintCloseAuthority)\n case ExtensionType.ConfidentialTransferMint:\n return Boolean(mintData.extensions.confidentialTransferMint)\n case ExtensionType.DefaultAccountState:\n return Boolean(mintData.extensions.defaultAccountState)\n case ExtensionType.NonTransferable:\n return Boolean(mintData.extensions.nonTransferable)\n case ExtensionType.InterestBearingConfig:\n return Boolean(mintData.extensions.interestBearingConfig)\n case ExtensionType.PermanentDelegate:\n return Boolean(mintData.extensions.permanentDelegate)\n case ExtensionType.TransferHook:\n return Boolean(mintData.extensions.transferHook)\n case ExtensionType.MetadataPointer:\n return Boolean(mintData.extensions.metadataPointer)\n case ExtensionType.TokenMetadata:\n return Boolean(mintData.extensions.tokenMetadata)\n case ExtensionType.GroupPointer:\n return Boolean(mintData.extensions.groupPointer)\n case ExtensionType.TokenGroup:\n return Boolean(mintData.extensions.tokenGroup)\n default:\n return false\n }\n}\n\n// =====================================================\n// ACCOUNT QUERIES\n// =====================================================\n\n/**\n * Get token account with extensions\n */\nexport async function getTokenAccountWithExtensions(\n rpc: unknown,\n account: Address,\n commitment?: Commitment\n): Promise<TokenAccountWithExtensions | null> {\n // Get account info\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getAccountInfo(account, { commitment, encoding: 'base64' })\n const accountInfo = response.value\n \n if (!accountInfo?.data) {\n return null\n }\n\n // Decode account data\n let data: Uint8Array\n if (Array.isArray(accountInfo.data)) {\n data = new Uint8Array(Buffer.from(accountInfo.data[0], 'base64'))\n } else if (typeof accountInfo.data === 'string') {\n data = new Uint8Array(Buffer.from(accountInfo.data, 'base64'))\n } else {\n throw new Error('Unexpected data format')\n }\n \n // Check if this is a Token-2022 account\n if (accountInfo.owner !== TOKEN_2022_PROGRAM_ID) {\n throw new Error('Not a Token-2022 account')\n }\n\n // Parse basic account data\n let offset = 0\n \n // Mint (32 bytes)\n const mint = getAddressDecoder().decode(data.slice(offset, offset + 32))\n offset += 32\n\n // Owner (32 bytes)\n const owner = getAddressDecoder().decode(data.slice(offset, offset + 32))\n offset += 32\n\n // Amount (8 bytes)\n const amount = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // COption<Pubkey> for delegate (1 + 32 bytes)\n const hasDelegate = data[offset] === 1\n offset += 1\n const delegate = hasDelegate ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null\n offset += 32\n\n // State (1 byte)\n const state = data[offset] as AccountState\n offset += 1\n\n // COption<u64> for is_native (1 + 8 bytes)\n const isNative = data[offset] === 1\n offset += 1\n offset += 8 // Skip native amount if present\n\n // Delegated amount (8 bytes)\n const delegatedAmount = getU64Decoder().decode(data.slice(offset, offset + 8))\n offset += 8\n\n // COption<Pubkey> for close authority (1 + 32 bytes)\n const hasCloseAuthority = data[offset] === 1\n offset += 1\n const closeAuthority = hasCloseAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null\n\n // Parse extensions if present\n const extensions: TokenAccountWithExtensions['extensions'] = {}\n \n if (data.length > ACCOUNT_SIZE) {\n const parsed = parseExtensions(data, ACCOUNT_SIZE)\n \n for (const ext of parsed.extensions) {\n const extensionData = parseExtension(ext.extensionType, ext.data)\n \n switch (ext.extensionType) {\n case ExtensionType.TransferFeeAmount:\n extensions.transferFeeAmount = extensionData as TransferFeeAmount\n break\n case ExtensionType.ConfidentialTransferAccount:\n extensions.confidentialTransferAccount = extensionData as ConfidentialTransferAccount\n break\n case ExtensionType.ImmutableOwner:\n extensions.immutableOwner = extensionData as ImmutableOwner\n break\n case ExtensionType.MemoTransfer:\n extensions.memoTransfer = extensionData as MemoTransfer\n break\n case ExtensionType.NonTransferableAccount:\n extensions.nonTransferableAccount = extensionData as NonTransferable\n break\n case ExtensionType.CpiGuard:\n extensions.cpiGuard = extensionData as CpiGuard\n break\n case ExtensionType.TransferHookAccount:\n extensions.transferHookAccount = extensionData as TransferHookAccount\n break\n case ExtensionType.GroupMemberPointer:\n extensions.groupMemberPointer = extensionData as GroupMemberPointer\n break\n case ExtensionType.TokenGroupMember:\n extensions.tokenGroupMember = extensionData as TokenGroupMember\n break\n }\n }\n }\n\n return {\n address: account,\n mint,\n owner,\n amount,\n delegate,\n state,\n isNative,\n delegatedAmount,\n closeAuthority,\n extensions\n }\n}\n\n/**\n * Get all token accounts for a wallet with extensions\n */\nexport async function getTokenAccountsByOwnerWithExtensions(\n rpc: unknown,\n owner: Address,\n mint?: Address,\n commitment?: Commitment\n): Promise<TokenAccountWithExtensions[]> {\n const filters = [\n {\n dataSize: 165 // Minimum Token-2022 account size\n },\n {\n memcmp: {\n offset: 32, // Owner offset\n bytes: Buffer.from(getAddressEncoder().encode(owner)).toString('base64')\n }\n }\n ]\n\n if (mint) {\n filters.push({\n memcmp: {\n offset: 0, // Mint offset\n bytes: Buffer.from(getAddressEncoder().encode(mint)).toString('base64')\n }\n })\n }\n\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getProgramAccounts(TOKEN_2022_PROGRAM_ID, {\n commitment,\n encoding: 'base64',\n filters\n })\n const accounts = response.value\n\n const results: TokenAccountWithExtensions[] = []\n \n for (const account of accounts) {\n try {\n const parsed = await getTokenAccountWithExtensions(rpc, account.pubkey, commitment)\n if (parsed) {\n results.push(parsed)\n }\n } catch {\n // Skip invalid accounts\n }\n }\n\n return results\n}\n\n// =====================================================\n// UTILITY FUNCTIONS\n// =====================================================\n\n/**\n * Calculate required account size for extensions\n */\nexport function getAccountSizeForExtensions(\n baseSize: number,\n extensions: ExtensionType[]\n): number {\n let size = baseSize\n\n for (const extension of extensions) {\n size += EXTENSION_TYPE_SIZE + EXTENSION_LENGTH_SIZE\n\n // Add extension-specific sizes\n switch (extension) {\n case ExtensionType.TransferFeeConfig:\n size += 108 // 32 + 32 + 8 + 18 + 18\n break\n case ExtensionType.TransferFeeAmount:\n size += 8\n break\n case ExtensionType.MintCloseAuthority:\n case ExtensionType.PermanentDelegate:\n size += 32\n break\n case ExtensionType.ConfidentialTransferMint:\n size += 65 // 32 + 1 + 32\n break\n case ExtensionType.ConfidentialTransferAccount:\n size += 402 // Large extension with ciphertexts\n break\n case ExtensionType.DefaultAccountState:\n case ExtensionType.MemoTransfer:\n case ExtensionType.CpiGuard:\n case ExtensionType.TransferHookAccount:\n size += 1\n break\n case ExtensionType.ImmutableOwner:\n case ExtensionType.NonTransferable:\n case ExtensionType.NonTransferableAccount:\n size += 0 // No additional data\n break\n case ExtensionType.InterestBearingConfig:\n size += 52 // 32 + 8 + 2 + 8 + 2\n break\n case ExtensionType.TransferHook:\n case ExtensionType.MetadataPointer:\n case ExtensionType.GroupPointer:\n case ExtensionType.GroupMemberPointer:\n size += 64 // 32 + 32\n break\n case ExtensionType.TokenMetadata:\n size += 256 // Variable, using reasonable default\n break\n case ExtensionType.TokenGroup:\n case ExtensionType.TokenGroupMember:\n size += 128 // Variable, using reasonable default\n break\n }\n }\n\n // Add account type discriminator\n size += 1\n\n return size\n}\n\n/**\n * Check if a token is Token-2022\n */\nexport async function isToken2022(\n rpc: unknown,\n mint: Address,\n commitment?: Commitment\n): Promise<boolean> {\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getAccountInfo(mint, { commitment })\n const accountInfo = response.value\n return accountInfo?.owner === TOKEN_2022_PROGRAM_ID\n}\n\n/**\n * Get token program for a mint (Token or Token-2022)\n */\nexport async function getTokenProgramForMint(\n rpc: unknown,\n mint: Address,\n commitment?: Commitment\n): Promise<Address> {\n const typedRpc = createTypedRpcClient(rpc)\n const response = await typedRpc.getAccountInfo(mint, { commitment })\n const accountInfo = response.value\n \n if (!accountInfo) {\n throw new Error('Mint account not found')\n }\n\n // Check if it's Token-2022\n if (accountInfo.owner === TOKEN_2022_PROGRAM_ID) {\n return TOKEN_2022_PROGRAM_ID\n }\n\n // Check if it's legacy Token program\n if (accountInfo.owner === 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address) {\n return 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address\n }\n\n throw new Error('Unknown token program')\n}"]}