@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,593 +0,0 @@
1
- import { createTypedRpcClient, ExtensionType } from './chunk-RERCHKZP.js';
2
- import './chunk-RDDPOFR5.js';
3
- import './chunk-NSBPE2FW.js';
4
- import { getAddressDecoder, getU64Decoder, getAddressEncoder, getU16Decoder, getBooleanDecoder, getU8Decoder, getU32Decoder, getUtf8Decoder } from '@solana/kit';
5
-
6
- var TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
7
- var MINT_SIZE = 82;
8
- var ACCOUNT_SIZE = 165;
9
- var EXTENSION_TYPE_SIZE = 2;
10
- var EXTENSION_LENGTH_SIZE = 2;
11
- function parseExtensions(data, baseSize) {
12
- const extensions = [];
13
- let offset = baseSize;
14
- while (offset + EXTENSION_TYPE_SIZE + EXTENSION_LENGTH_SIZE <= data.length) {
15
- const extensionType = getU16Decoder().decode(data.slice(offset, offset + 2));
16
- offset += EXTENSION_TYPE_SIZE;
17
- const maxExtensionType = Object.values(ExtensionType).filter((val) => typeof val === "number").pop();
18
- const extensionTypeNumber = extensionType;
19
- if (extensionTypeNumber === 0 || extensionTypeNumber > maxExtensionType) {
20
- break;
21
- }
22
- const length = getU16Decoder().decode(data.slice(offset, offset + 2));
23
- offset += EXTENSION_LENGTH_SIZE;
24
- const extensionData = data.slice(offset, offset + length);
25
- offset += length;
26
- extensions.push({
27
- extensionType,
28
- length,
29
- data: extensionData
30
- });
31
- }
32
- return {
33
- extensions,
34
- remainingData: data.slice(offset)
35
- };
36
- }
37
- function parseTransferFeeConfig(data) {
38
- let offset = 0;
39
- const transferFeeConfigAuthority = data.slice(offset, offset + 32);
40
- const hasAuthority = transferFeeConfigAuthority.some((b) => b !== 0);
41
- offset += 32;
42
- const withdrawWithheldAuthority = data.slice(offset, offset + 32);
43
- const hasWithdrawAuthority = withdrawWithheldAuthority.some((b) => b !== 0);
44
- offset += 32;
45
- const withheldAmount = getU64Decoder().decode(data.slice(offset, offset + 8));
46
- offset += 8;
47
- const olderEpoch = getU64Decoder().decode(data.slice(offset, offset + 8));
48
- offset += 8;
49
- const olderMaximumFee = getU64Decoder().decode(data.slice(offset, offset + 8));
50
- offset += 8;
51
- const olderTransferFeeBasisPoints = getU16Decoder().decode(data.slice(offset, offset + 2));
52
- offset += 2;
53
- const newerEpoch = getU64Decoder().decode(data.slice(offset, offset + 8));
54
- offset += 8;
55
- const newerMaximumFee = getU64Decoder().decode(data.slice(offset, offset + 8));
56
- offset += 8;
57
- const newerTransferFeeBasisPoints = getU16Decoder().decode(data.slice(offset, offset + 2));
58
- return {
59
- transferFeeConfigAuthority: hasAuthority ? getAddressDecoder().decode(transferFeeConfigAuthority) : null,
60
- withdrawWithheldAuthority: hasWithdrawAuthority ? getAddressDecoder().decode(withdrawWithheldAuthority) : null,
61
- withheldAmount,
62
- olderTransferFee: {
63
- epoch: olderEpoch,
64
- maximumFee: olderMaximumFee,
65
- transferFeeBasisPoints: olderTransferFeeBasisPoints
66
- },
67
- newerTransferFee: {
68
- epoch: newerEpoch,
69
- maximumFee: newerMaximumFee,
70
- transferFeeBasisPoints: newerTransferFeeBasisPoints
71
- }
72
- };
73
- }
74
- function parseInterestBearingConfig(data) {
75
- let offset = 0;
76
- const rateAuthority = data.slice(offset, offset + 32);
77
- const hasAuthority = rateAuthority.some((b) => b !== 0);
78
- offset += 32;
79
- const initializationTimestamp = getU64Decoder().decode(data.slice(offset, offset + 8));
80
- offset += 8;
81
- const preUpdateAverageRate = getU16Decoder().decode(data.slice(offset, offset + 2));
82
- offset += 2;
83
- const lastUpdateTimestamp = getU64Decoder().decode(data.slice(offset, offset + 8));
84
- offset += 8;
85
- const currentRate = getU16Decoder().decode(data.slice(offset, offset + 2));
86
- return {
87
- rateAuthority: hasAuthority ? getAddressDecoder().decode(rateAuthority) : null,
88
- initializationTimestamp,
89
- preUpdateAverageRate,
90
- lastUpdateTimestamp,
91
- currentRate
92
- };
93
- }
94
- function parseConfidentialTransferMint(data) {
95
- let offset = 0;
96
- const authority = data.slice(offset, offset + 32);
97
- const hasAuthority = authority.some((b) => b !== 0);
98
- offset += 32;
99
- const autoApproveNewAccounts = getBooleanDecoder().decode(data.slice(offset, offset + 1));
100
- offset += 1;
101
- const auditorElgamalPubkey = data.slice(offset, offset + 32);
102
- const hasAuditor = auditorElgamalPubkey.some((b) => b !== 0);
103
- return {
104
- authority: hasAuthority ? getAddressDecoder().decode(authority) : null,
105
- autoApproveNewAccounts,
106
- auditorElgamalPubkey: hasAuditor ? auditorElgamalPubkey : null
107
- };
108
- }
109
- function parseConfidentialTransferAccount(data) {
110
- let offset = 0;
111
- const approved = getBooleanDecoder().decode(data.slice(offset, offset + 1));
112
- offset += 1;
113
- const elgamalPubkey = data.slice(offset, offset + 32);
114
- offset += 32;
115
- const pendingBalanceLo = data.slice(offset, offset + 64);
116
- offset += 64;
117
- const pendingBalanceHi = data.slice(offset, offset + 64);
118
- offset += 64;
119
- const availableBalanceLo = data.slice(offset, offset + 64);
120
- offset += 64;
121
- const availableBalanceHi = data.slice(offset, offset + 64);
122
- offset += 64;
123
- const decryptableAvailableBalance = getU64Decoder().decode(data.slice(offset, offset + 8));
124
- offset += 8;
125
- const allowConfidentialCredits = getBooleanDecoder().decode(data.slice(offset, offset + 1));
126
- offset += 1;
127
- const allowNonConfidentialCredits = getBooleanDecoder().decode(data.slice(offset, offset + 1));
128
- offset += 1;
129
- const pendingBalanceCreditCounterLo = getU64Decoder().decode(data.slice(offset, offset + 8));
130
- offset += 8;
131
- const pendingBalanceCreditCounterHi = getU64Decoder().decode(data.slice(offset, offset + 8));
132
- offset += 8;
133
- const maximumPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8));
134
- offset += 8;
135
- const expectedPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8));
136
- offset += 8;
137
- const actualPendingBalanceCreditCounter = getU64Decoder().decode(data.slice(offset, offset + 8));
138
- return {
139
- approved,
140
- elgamalPubkey,
141
- pendingBalanceLo,
142
- pendingBalanceHi,
143
- availableBalanceLo,
144
- availableBalanceHi,
145
- decryptableAvailableBalance,
146
- allowConfidentialCredits,
147
- allowNonConfidentialCredits,
148
- pendingBalanceCreditCounterLo,
149
- pendingBalanceCreditCounterHi,
150
- maximumPendingBalanceCreditCounter,
151
- expectedPendingBalanceCreditCounter,
152
- actualPendingBalanceCreditCounter
153
- };
154
- }
155
- function parseTokenMetadata(data) {
156
- let offset = 0;
157
- const hasUpdateAuthority = data[offset] === 1;
158
- offset += 1;
159
- const updateAuthority = hasUpdateAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null;
160
- offset += 32;
161
- const mint = getAddressDecoder().decode(data.slice(offset, offset + 32));
162
- offset += 32;
163
- const nameLength = getU32Decoder().decode(data.slice(offset, offset + 4));
164
- offset += 4;
165
- const name = getUtf8Decoder().decode(data.slice(offset, offset + nameLength));
166
- offset += nameLength;
167
- const symbolLength = getU32Decoder().decode(data.slice(offset, offset + 4));
168
- offset += 4;
169
- const symbol = getUtf8Decoder().decode(data.slice(offset, offset + symbolLength));
170
- offset += symbolLength;
171
- const uriLength = getU32Decoder().decode(data.slice(offset, offset + 4));
172
- offset += 4;
173
- const uri = getUtf8Decoder().decode(data.slice(offset, offset + uriLength));
174
- offset += uriLength;
175
- const additionalMetadataCount = getU32Decoder().decode(data.slice(offset, offset + 4));
176
- offset += 4;
177
- const additionalMetadata = [];
178
- for (let i = 0; i < additionalMetadataCount; i++) {
179
- const keyLength = getU32Decoder().decode(data.slice(offset, offset + 4));
180
- offset += 4;
181
- const key = getUtf8Decoder().decode(data.slice(offset, offset + keyLength));
182
- offset += keyLength;
183
- const valueLength = getU32Decoder().decode(data.slice(offset, offset + 4));
184
- offset += 4;
185
- const value = getUtf8Decoder().decode(data.slice(offset, offset + valueLength));
186
- offset += valueLength;
187
- additionalMetadata.push({ key, value });
188
- }
189
- return {
190
- updateAuthority,
191
- mint,
192
- name,
193
- symbol,
194
- uri,
195
- additionalMetadata
196
- };
197
- }
198
- function parseExtension(extensionType, data) {
199
- switch (extensionType) {
200
- case 1 /* TransferFeeConfig */:
201
- return parseTransferFeeConfig(data);
202
- case 2 /* TransferFeeAmount */:
203
- return { withheldAmount: getU64Decoder().decode(data) };
204
- case 3 /* MintCloseAuthority */: {
205
- const closeAuthority = data.some((b) => b !== 0) ? getAddressDecoder().decode(data) : null;
206
- return { closeAuthority };
207
- }
208
- case 4 /* ConfidentialTransferMint */:
209
- return parseConfidentialTransferMint(data);
210
- case 5 /* ConfidentialTransferAccount */:
211
- return parseConfidentialTransferAccount(data);
212
- case 6 /* DefaultAccountState */:
213
- return { state: getU8Decoder().decode(data) };
214
- case 7 /* ImmutableOwner */:
215
- return {};
216
- // No additional data
217
- case 8 /* MemoTransfer */:
218
- return { requireIncomingTransferMemos: getBooleanDecoder().decode(data) };
219
- case 9 /* NonTransferable */:
220
- case 13 /* NonTransferableAccount */:
221
- return {};
222
- // No additional data
223
- case 10 /* InterestBearingConfig */:
224
- return parseInterestBearingConfig(data);
225
- case 11 /* CpiGuard */:
226
- return { lockCpi: getBooleanDecoder().decode(data) };
227
- case 12 /* PermanentDelegate */: {
228
- const delegate = data.some((b) => b !== 0) ? getAddressDecoder().decode(data) : null;
229
- return { delegate };
230
- }
231
- case 14 /* TransferHook */: {
232
- const authority = data.slice(0, 32).some((b) => b !== 0) ? getAddressDecoder().decode(data.slice(0, 32)) : null;
233
- const programId = data.slice(32, 64).some((b) => b !== 0) ? getAddressDecoder().decode(data.slice(32, 64)) : null;
234
- return { authority, programId };
235
- }
236
- case 15 /* TransferHookAccount */:
237
- return { transferring: getBooleanDecoder().decode(data) };
238
- case 16 /* MetadataPointer */:
239
- case 18 /* GroupPointer */:
240
- case 19 /* GroupMemberPointer */: {
241
- const pointerAuthority = data.slice(0, 32).some((b) => b !== 0) ? getAddressDecoder().decode(data.slice(0, 32)) : null;
242
- const pointerAddress = data.slice(32, 64).some((b) => b !== 0) ? getAddressDecoder().decode(data.slice(32, 64)) : null;
243
- return { authority: pointerAuthority, [`${extensionType === 16 /* MetadataPointer */ ? "metadata" : extensionType === 18 /* GroupPointer */ ? "group" : "member"}Address`]: pointerAddress };
244
- }
245
- case 17 /* TokenMetadata */:
246
- return parseTokenMetadata(data);
247
- case 20 /* TokenGroup */:
248
- case 21 /* TokenGroupMember */:
249
- return {};
250
- default:
251
- return {};
252
- }
253
- }
254
- async function getMintWithExtensions(rpc, mint, commitment) {
255
- const typedRpc = createTypedRpcClient(rpc);
256
- const response = await typedRpc.getAccountInfo(mint, { commitment, encoding: "base64" });
257
- const accountInfo = response.value;
258
- if (!accountInfo?.data) {
259
- return null;
260
- }
261
- let data;
262
- if (Array.isArray(accountInfo.data)) {
263
- data = new Uint8Array(Buffer.from(accountInfo.data[0], "base64"));
264
- } else if (typeof accountInfo.data === "string") {
265
- data = new Uint8Array(Buffer.from(accountInfo.data, "base64"));
266
- } else {
267
- throw new Error("Unexpected data format");
268
- }
269
- if (accountInfo.owner !== TOKEN_2022_PROGRAM_ID) {
270
- throw new Error("Not a Token-2022 mint");
271
- }
272
- let offset = 0;
273
- const hasMintAuthority = data[offset] === 1;
274
- offset += 1;
275
- const mintAuthority = hasMintAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null;
276
- offset += 32;
277
- const supply = getU64Decoder().decode(data.slice(offset, offset + 8));
278
- offset += 8;
279
- const decimals = data[offset];
280
- offset += 1;
281
- const isInitialized = data[offset] === 1;
282
- offset += 1;
283
- const hasFreezeAuthority = data[offset] === 1;
284
- offset += 1;
285
- const freezeAuthority = hasFreezeAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null;
286
- const extensions = {};
287
- if (data.length > MINT_SIZE) {
288
- const parsed = parseExtensions(data, MINT_SIZE);
289
- for (const ext of parsed.extensions) {
290
- const extensionData = parseExtension(ext.extensionType, ext.data);
291
- switch (ext.extensionType) {
292
- case 1 /* TransferFeeConfig */:
293
- extensions.transferFeeConfig = extensionData;
294
- break;
295
- case 3 /* MintCloseAuthority */:
296
- extensions.mintCloseAuthority = extensionData;
297
- break;
298
- case 4 /* ConfidentialTransferMint */:
299
- extensions.confidentialTransferMint = extensionData;
300
- break;
301
- case 6 /* DefaultAccountState */:
302
- extensions.defaultAccountState = extensionData;
303
- break;
304
- case 9 /* NonTransferable */:
305
- extensions.nonTransferable = extensionData;
306
- break;
307
- case 10 /* InterestBearingConfig */:
308
- extensions.interestBearingConfig = extensionData;
309
- break;
310
- case 12 /* PermanentDelegate */:
311
- extensions.permanentDelegate = extensionData;
312
- break;
313
- case 14 /* TransferHook */:
314
- extensions.transferHook = extensionData;
315
- break;
316
- case 16 /* MetadataPointer */:
317
- extensions.metadataPointer = extensionData;
318
- break;
319
- case 17 /* TokenMetadata */:
320
- extensions.tokenMetadata = extensionData;
321
- break;
322
- case 18 /* GroupPointer */:
323
- extensions.groupPointer = extensionData;
324
- break;
325
- case 20 /* TokenGroup */:
326
- extensions.tokenGroup = extensionData;
327
- break;
328
- }
329
- }
330
- }
331
- return {
332
- address: mint,
333
- mintAuthority,
334
- supply,
335
- decimals,
336
- isInitialized,
337
- freezeAuthority,
338
- extensions
339
- };
340
- }
341
- async function getMultipleMintsWithExtensions(rpc, mints, commitment) {
342
- const typedRpc = createTypedRpcClient(rpc);
343
- const response = await typedRpc.getMultipleAccounts(mints, { commitment, encoding: "base64" });
344
- const accountInfos = response.value;
345
- return Promise.all(accountInfos.map(async (info, index) => {
346
- if (!info?.data) return null;
347
- try {
348
- return await getMintWithExtensions(rpc, mints[index], commitment);
349
- } catch {
350
- return null;
351
- }
352
- }));
353
- }
354
- async function mintHasExtension(rpc, mint, extensionType, commitment) {
355
- const mintData = await getMintWithExtensions(rpc, mint, commitment);
356
- if (!mintData) return false;
357
- switch (extensionType) {
358
- case 1 /* TransferFeeConfig */:
359
- return Boolean(mintData.extensions.transferFeeConfig);
360
- case 3 /* MintCloseAuthority */:
361
- return Boolean(mintData.extensions.mintCloseAuthority);
362
- case 4 /* ConfidentialTransferMint */:
363
- return Boolean(mintData.extensions.confidentialTransferMint);
364
- case 6 /* DefaultAccountState */:
365
- return Boolean(mintData.extensions.defaultAccountState);
366
- case 9 /* NonTransferable */:
367
- return Boolean(mintData.extensions.nonTransferable);
368
- case 10 /* InterestBearingConfig */:
369
- return Boolean(mintData.extensions.interestBearingConfig);
370
- case 12 /* PermanentDelegate */:
371
- return Boolean(mintData.extensions.permanentDelegate);
372
- case 14 /* TransferHook */:
373
- return Boolean(mintData.extensions.transferHook);
374
- case 16 /* MetadataPointer */:
375
- return Boolean(mintData.extensions.metadataPointer);
376
- case 17 /* TokenMetadata */:
377
- return Boolean(mintData.extensions.tokenMetadata);
378
- case 18 /* GroupPointer */:
379
- return Boolean(mintData.extensions.groupPointer);
380
- case 20 /* TokenGroup */:
381
- return Boolean(mintData.extensions.tokenGroup);
382
- default:
383
- return false;
384
- }
385
- }
386
- async function getTokenAccountWithExtensions(rpc, account, commitment) {
387
- const typedRpc = createTypedRpcClient(rpc);
388
- const response = await typedRpc.getAccountInfo(account, { commitment, encoding: "base64" });
389
- const accountInfo = response.value;
390
- if (!accountInfo?.data) {
391
- return null;
392
- }
393
- let data;
394
- if (Array.isArray(accountInfo.data)) {
395
- data = new Uint8Array(Buffer.from(accountInfo.data[0], "base64"));
396
- } else if (typeof accountInfo.data === "string") {
397
- data = new Uint8Array(Buffer.from(accountInfo.data, "base64"));
398
- } else {
399
- throw new Error("Unexpected data format");
400
- }
401
- if (accountInfo.owner !== TOKEN_2022_PROGRAM_ID) {
402
- throw new Error("Not a Token-2022 account");
403
- }
404
- let offset = 0;
405
- const mint = getAddressDecoder().decode(data.slice(offset, offset + 32));
406
- offset += 32;
407
- const owner = getAddressDecoder().decode(data.slice(offset, offset + 32));
408
- offset += 32;
409
- const amount = getU64Decoder().decode(data.slice(offset, offset + 8));
410
- offset += 8;
411
- const hasDelegate = data[offset] === 1;
412
- offset += 1;
413
- const delegate = hasDelegate ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null;
414
- offset += 32;
415
- const state = data[offset];
416
- offset += 1;
417
- const isNative = data[offset] === 1;
418
- offset += 1;
419
- offset += 8;
420
- const delegatedAmount = getU64Decoder().decode(data.slice(offset, offset + 8));
421
- offset += 8;
422
- const hasCloseAuthority = data[offset] === 1;
423
- offset += 1;
424
- const closeAuthority = hasCloseAuthority ? getAddressDecoder().decode(data.slice(offset, offset + 32)) : null;
425
- const extensions = {};
426
- if (data.length > ACCOUNT_SIZE) {
427
- const parsed = parseExtensions(data, ACCOUNT_SIZE);
428
- for (const ext of parsed.extensions) {
429
- const extensionData = parseExtension(ext.extensionType, ext.data);
430
- switch (ext.extensionType) {
431
- case 2 /* TransferFeeAmount */:
432
- extensions.transferFeeAmount = extensionData;
433
- break;
434
- case 5 /* ConfidentialTransferAccount */:
435
- extensions.confidentialTransferAccount = extensionData;
436
- break;
437
- case 7 /* ImmutableOwner */:
438
- extensions.immutableOwner = extensionData;
439
- break;
440
- case 8 /* MemoTransfer */:
441
- extensions.memoTransfer = extensionData;
442
- break;
443
- case 13 /* NonTransferableAccount */:
444
- extensions.nonTransferableAccount = extensionData;
445
- break;
446
- case 11 /* CpiGuard */:
447
- extensions.cpiGuard = extensionData;
448
- break;
449
- case 15 /* TransferHookAccount */:
450
- extensions.transferHookAccount = extensionData;
451
- break;
452
- case 19 /* GroupMemberPointer */:
453
- extensions.groupMemberPointer = extensionData;
454
- break;
455
- case 21 /* TokenGroupMember */:
456
- extensions.tokenGroupMember = extensionData;
457
- break;
458
- }
459
- }
460
- }
461
- return {
462
- address: account,
463
- mint,
464
- owner,
465
- amount,
466
- delegate,
467
- state,
468
- isNative,
469
- delegatedAmount,
470
- closeAuthority,
471
- extensions
472
- };
473
- }
474
- async function getTokenAccountsByOwnerWithExtensions(rpc, owner, mint, commitment) {
475
- const filters = [
476
- {
477
- dataSize: 165
478
- // Minimum Token-2022 account size
479
- },
480
- {
481
- memcmp: {
482
- offset: 32,
483
- // Owner offset
484
- bytes: Buffer.from(getAddressEncoder().encode(owner)).toString("base64")
485
- }
486
- }
487
- ];
488
- if (mint) {
489
- filters.push({
490
- memcmp: {
491
- offset: 0,
492
- // Mint offset
493
- bytes: Buffer.from(getAddressEncoder().encode(mint)).toString("base64")
494
- }
495
- });
496
- }
497
- const typedRpc = createTypedRpcClient(rpc);
498
- const response = await typedRpc.getProgramAccounts(TOKEN_2022_PROGRAM_ID, {
499
- commitment,
500
- encoding: "base64",
501
- filters
502
- });
503
- const accounts = response.value;
504
- const results = [];
505
- for (const account of accounts) {
506
- try {
507
- const parsed = await getTokenAccountWithExtensions(rpc, account.pubkey, commitment);
508
- if (parsed) {
509
- results.push(parsed);
510
- }
511
- } catch {
512
- }
513
- }
514
- return results;
515
- }
516
- function getAccountSizeForExtensions(baseSize, extensions) {
517
- let size = baseSize;
518
- for (const extension of extensions) {
519
- size += EXTENSION_TYPE_SIZE + EXTENSION_LENGTH_SIZE;
520
- switch (extension) {
521
- case 1 /* TransferFeeConfig */:
522
- size += 108;
523
- break;
524
- case 2 /* TransferFeeAmount */:
525
- size += 8;
526
- break;
527
- case 3 /* MintCloseAuthority */:
528
- case 12 /* PermanentDelegate */:
529
- size += 32;
530
- break;
531
- case 4 /* ConfidentialTransferMint */:
532
- size += 65;
533
- break;
534
- case 5 /* ConfidentialTransferAccount */:
535
- size += 402;
536
- break;
537
- case 6 /* DefaultAccountState */:
538
- case 8 /* MemoTransfer */:
539
- case 11 /* CpiGuard */:
540
- case 15 /* TransferHookAccount */:
541
- size += 1;
542
- break;
543
- case 7 /* ImmutableOwner */:
544
- case 9 /* NonTransferable */:
545
- case 13 /* NonTransferableAccount */:
546
- size += 0;
547
- break;
548
- case 10 /* InterestBearingConfig */:
549
- size += 52;
550
- break;
551
- case 14 /* TransferHook */:
552
- case 16 /* MetadataPointer */:
553
- case 18 /* GroupPointer */:
554
- case 19 /* GroupMemberPointer */:
555
- size += 64;
556
- break;
557
- case 17 /* TokenMetadata */:
558
- size += 256;
559
- break;
560
- case 20 /* TokenGroup */:
561
- case 21 /* TokenGroupMember */:
562
- size += 128;
563
- break;
564
- }
565
- }
566
- size += 1;
567
- return size;
568
- }
569
- async function isToken2022(rpc, mint, commitment) {
570
- const typedRpc = createTypedRpcClient(rpc);
571
- const response = await typedRpc.getAccountInfo(mint, { commitment });
572
- const accountInfo = response.value;
573
- return accountInfo?.owner === TOKEN_2022_PROGRAM_ID;
574
- }
575
- async function getTokenProgramForMint(rpc, mint, commitment) {
576
- const typedRpc = createTypedRpcClient(rpc);
577
- const response = await typedRpc.getAccountInfo(mint, { commitment });
578
- const accountInfo = response.value;
579
- if (!accountInfo) {
580
- throw new Error("Mint account not found");
581
- }
582
- if (accountInfo.owner === TOKEN_2022_PROGRAM_ID) {
583
- return TOKEN_2022_PROGRAM_ID;
584
- }
585
- if (accountInfo.owner === "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") {
586
- return "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
587
- }
588
- throw new Error("Unknown token program");
589
- }
590
-
591
- export { TOKEN_2022_PROGRAM_ID, getAccountSizeForExtensions, getMintWithExtensions, getMultipleMintsWithExtensions, getTokenAccountWithExtensions, getTokenAccountsByOwnerWithExtensions, getTokenProgramForMint, isToken2022, mintHasExtension };
592
- //# sourceMappingURL=token-2022-rpc-RALH4RK7.js.map
593
- //# sourceMappingURL=token-2022-rpc-RALH4RK7.js.map