@ghostspeak/sdk 2.0.6 → 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 (117) 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-F3DZMBUA.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-S74EH3KD.js +7890 -0
  30. package/dist/chunk-S74EH3KD.js.map +1 -0
  31. package/dist/chunk-SFTSZ3LC.js +156 -0
  32. package/dist/chunk-SFTSZ3LC.js.map +1 -0
  33. package/dist/chunk-SKMJJ3Q6.js +125 -0
  34. package/dist/chunk-SKMJJ3Q6.js.map +1 -0
  35. package/dist/chunk-SZGFSCNU.js +3682 -0
  36. package/dist/chunk-SZGFSCNU.js.map +1 -0
  37. package/dist/chunk-TTB4OS2D.js +69 -0
  38. package/dist/chunk-TTB4OS2D.js.map +1 -0
  39. package/dist/chunk-UP2VWCW5.js +33 -0
  40. package/dist/{chunk-NSBPE2FW.js.map → chunk-UP2VWCW5.js.map} +1 -1
  41. package/dist/{chunk-UJUGGLMT.js → chunk-VQZQCHUT.js} +5 -5
  42. package/dist/{chunk-UJUGGLMT.js.map → chunk-VQZQCHUT.js.map} +1 -1
  43. package/dist/client.d.ts +5 -4
  44. package/dist/client.js +11 -10
  45. package/dist/createAgentAuthorization-ULG47ZJI.js +5 -0
  46. package/dist/createAgentAuthorization-ULG47ZJI.js.map +1 -0
  47. package/dist/credentials.js +1 -1
  48. package/dist/crypto.js +2 -2
  49. package/dist/errors.js +1 -1
  50. package/dist/feature-flags-B1g0DCPe.d.ts +1181 -0
  51. package/dist/generated-EG5USUFG.js +9 -0
  52. package/dist/{generated-VNLHMR6Y.js.map → generated-EG5USUFG.js.map} +1 -1
  53. package/dist/{ghostspeak_wasm-SB2RPJ3D.js → ghostspeak_wasm-F227HOSM.js} +3 -3
  54. package/dist/{ghostspeak_wasm-SB2RPJ3D.js.map → ghostspeak_wasm-F227HOSM.js.map} +1 -1
  55. package/dist/index.d.ts +1209 -1506
  56. package/dist/index.js +600 -3532
  57. package/dist/index.js.map +1 -1
  58. package/dist/metafile-esm.json +1 -1
  59. package/dist/minimal/core-minimal.d.ts +2383 -1264
  60. package/dist/minimal/core-minimal.js +9 -9
  61. package/dist/minimal/core-minimal.js.map +1 -1
  62. package/dist/nacl-fast-W5BJ3KZ2.js +2229 -0
  63. package/dist/nacl-fast-W5BJ3KZ2.js.map +1 -0
  64. package/dist/pda-4KP7CURF.js +4 -0
  65. package/dist/pda-4KP7CURF.js.map +1 -0
  66. package/dist/pda-Ce7VYg4T.d.ts +25 -0
  67. package/dist/reputation-types-Yebf0Rm_.d.ts +1071 -0
  68. package/dist/revokeAuthorization-OK7E7OK3.js +5 -0
  69. package/dist/revokeAuthorization-OK7E7OK3.js.map +1 -0
  70. package/dist/signature-verification-DGxR4aYQ.d.ts +448 -0
  71. package/dist/types.js +1 -1
  72. package/dist/updateReputationWithAuth-Y4ONEVSP.js +5 -0
  73. package/dist/updateReputationWithAuth-Y4ONEVSP.js.map +1 -0
  74. package/dist/utils.d.ts +69 -203
  75. package/dist/utils.js +15 -153
  76. package/dist/utils.js.map +1 -1
  77. package/package.json +24 -31
  78. package/dist/.tsbuildinfo +0 -1
  79. package/dist/GhostSpeakClient-D_66Uzsf.d.ts +0 -707
  80. package/dist/GovernanceModule-DQYYys-H.d.ts +0 -1766
  81. package/dist/chunk-APCKGD23.js +0 -1328
  82. package/dist/chunk-APCKGD23.js.map +0 -1
  83. package/dist/chunk-ASQXX4IT.js +0 -572
  84. package/dist/chunk-ASQXX4IT.js.map +0 -1
  85. package/dist/chunk-COGZFWOT.js +0 -19657
  86. package/dist/chunk-COGZFWOT.js.map +0 -1
  87. package/dist/chunk-F3DZMBUA.js.map +0 -1
  88. package/dist/chunk-GMHIUK2R.js +0 -7526
  89. package/dist/chunk-GMHIUK2R.js.map +0 -1
  90. package/dist/chunk-IAWBZYPE.js +0 -356
  91. package/dist/chunk-IAWBZYPE.js.map +0 -1
  92. package/dist/chunk-NSBPE2FW.js +0 -15
  93. package/dist/chunk-OWYHJG6H.js +0 -13311
  94. package/dist/chunk-OWYHJG6H.js.map +0 -1
  95. package/dist/chunk-RDDPOFR5.js +0 -3
  96. package/dist/chunk-RDDPOFR5.js.map +0 -1
  97. package/dist/chunk-RERCHKZP.js +0 -35
  98. package/dist/chunk-RERCHKZP.js.map +0 -1
  99. package/dist/chunk-TVVGXYCI.js +0 -2887
  100. package/dist/chunk-TVVGXYCI.js.map +0 -1
  101. package/dist/chunk-ZGP5552B.js +0 -377
  102. package/dist/chunk-ZGP5552B.js.map +0 -1
  103. package/dist/chunk-ZWOYNHVK.js +0 -196
  104. package/dist/chunk-ZWOYNHVK.js.map +0 -1
  105. package/dist/dist/.tsbuildinfo +0 -1
  106. package/dist/elgamal-VZLWB3XK.js +0 -5
  107. package/dist/elgamal-VZLWB3XK.js.map +0 -1
  108. package/dist/feature-flags-V722ZuXO.d.ts +0 -3512
  109. package/dist/generated-VNLHMR6Y.js +0 -5
  110. package/dist/ipfs-types-BOt9ZNg4.d.ts +0 -592
  111. package/dist/multisigConfig-BzEhy6jy.d.ts +0 -58
  112. package/dist/pda-B_nS8SbD.d.ts +0 -114
  113. package/dist/pda-S4BFJVGE.js +0 -4
  114. package/dist/pda-S4BFJVGE.js.map +0 -1
  115. package/dist/system-addresses-BFNLEbFx.d.ts +0 -857
  116. package/dist/token-2022-rpc-RALH4RK7.js +0 -593
  117. 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