@solana/web3.js 2.0.0-experimental.b927e84 → 2.0.0-experimental.bac4a66

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.
@@ -1,3 +1,4 @@
1
+ export * from '@solana/addresses';
1
2
  export * from '@solana/instructions';
2
3
  export * from '@solana/keys';
3
4
  export * from '@solana/transactions';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var addresses = require('@solana/addresses');
3
4
  var instructions = require('@solana/instructions');
4
5
  var keys = require('@solana/keys');
5
6
  var transactions = require('@solana/transactions');
@@ -143,20 +144,26 @@ function createDefaultRpcTransport(config) {
143
144
 
144
145
  exports.createDefaultRpcTransport = createDefaultRpcTransport;
145
146
  exports.createSolanaRpc = createSolanaRpc;
147
+ Object.keys(addresses).forEach(function (k) {
148
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
149
+ enumerable: true,
150
+ get: function () { return addresses[k]; }
151
+ });
152
+ });
146
153
  Object.keys(instructions).forEach(function (k) {
147
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
154
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
148
155
  enumerable: true,
149
156
  get: function () { return instructions[k]; }
150
157
  });
151
158
  });
152
159
  Object.keys(keys).forEach(function (k) {
153
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
160
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
154
161
  enumerable: true,
155
162
  get: function () { return keys[k]; }
156
163
  });
157
164
  });
158
165
  Object.keys(transactions).forEach(function (k) {
159
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
166
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
160
167
  enumerable: true,
161
168
  get: function () { return transactions[k]; }
162
169
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ export * from '@solana/addresses';
1
2
  export * from '@solana/instructions';
2
3
  export * from '@solana/keys';
3
4
  export * from '@solana/transactions';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
@@ -2,39 +2,40 @@ this.globalThis = this.globalThis || {};
2
2
  this.globalThis.solanaWeb3 = (function (exports) {
3
3
  'use strict';
4
4
 
5
- var Pe=Object.create;var Q=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var Me=(e,r,t)=>r in e?Q(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var We=(e,r)=>()=>(e&&(r=e(e=0)),r);var He=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Ge=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of je(r))!Ke.call(e,o)&&o!==t&&Q(e,o,{get:()=>r[o],enumerable:!(n=Ue(r,o))||n.enumerable});return e};var Ve=(e,r,t)=>(t=e!=null?Pe(Fe(e)):{},Ge(r||!e||!e.__esModule?Q(t,"default",{value:e,enumerable:!0}):t,e));var b=(e,r,t)=>(Me(e,typeof r!="symbol"?r+"":r,t),t);var a=We(()=>{});var Oe=He((Uo,ke)=>{a();var Gr=Object.prototype.toString,Vr=Object.keys||function(e){var r=[];for(var t in e)r.push(t);return r};function D(e,r){var t,n,o,s,i,c,u;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return D(e.toJSON(),r);if(u=Gr.call(e),u==="[object Array]"){for(o="[",n=e.length-1,t=0;t<n;t++)o+=D(e[t],!0)+",";return n>-1&&(o+=D(e[t],!0)),o+"]"}else if(u==="[object Object]"){for(s=Vr(e).sort(),n=s.length,o="",t=0;t<n;)i=s[t],c=D(e[i],!1),c!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+c),t++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return r?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}ke.exports=function(e){var r=D(e,!1);if(r!==void 0)return ""+r};});a();a();var qe=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(qe||{}),ce=2,ee=1;function Zr(e){return e&~ce}function Qr(e){return e&~ee}function et(e){return e>=2}function rt(e){return (e&ee)!==0}function tt(e,r){return e|r}function nt(e){return e|ce}function ot(e){return e|ee}a();a();a();a();var E=e=>{let r=e.reduce((o,s)=>o+s.length,0),t=new Uint8Array(r),n=0;return e.forEach(o=>{t.set(o,n),n+=o.length;}),t},ue=(e,r)=>{if(e.length>=r)return e;let t=new Uint8Array(r).fill(0);return t.set(e),t},P=(e,r)=>ue(e.slice(0,r),r);a();var w=class extends Error{constructor(t){super(`Serializer [${t}] cannot deserialize empty buffers.`);b(this,"name","DeserializingEmptyBufferError");}},y=class extends Error{constructor(t,n,o){super(`Serializer [${t}] expected ${n} bytes, got ${o}.`);b(this,"name","NotEnoughBytesError");}},I=class extends Error{constructor(t){t??(t="Expected a fixed-size serializer, got a variable-size one.");super(t);b(this,"name","ExpectedFixedSizeSerializerError");}};a();function B(e,r,t){return {description:t??`fixed(${r}, ${e.description})`,fixedSize:r,maxSize:r,serialize:n=>P(e.serialize(n),r),deserialize:(n,o=0)=>{if(n=n.slice(o,o+r),n.length<r)throw new y("fixSerializer",r,n.length);e.fixedSize!==null&&(n=P(n,e.fixedSize));let[s]=e.deserialize(n,0);return [s,o+r]}}}a();function U(e,r,t){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(r(n)),deserialize:(n,o=0)=>{let[s,i]=e.deserialize(n,o);return t?[t(s,n,o),i]:[s,i]}}}a();a();a();var j=class extends Error{constructor(t,n,o){let s=`Expected a string of base ${n}, got [${t}].`;super(s);b(this,"name","InvalidBaseStringError");this.cause=o;}};var le=e=>{let r=e.length,t=BigInt(r);return {description:`base${r}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new j(n,r);if(n==="")return new Uint8Array;let o=[...n],s=o.findIndex(h=>h!==e[0]);s=s===-1?o.length:s;let i=Array(s).fill(0);if(s===o.length)return Uint8Array.from(i);let c=o.slice(s),u=0n,l=1n;for(let h=c.length-1;h>=0;h-=1)u+=l*BigInt(e.indexOf(c[h])),l*=t;let p=[];for(;u>0n;)p.unshift(Number(u%256n)),u/=256n;return Uint8Array.from(i.concat(p))},deserialize(n,o=0){if(n.length===0)return ["",0];let s=n.slice(o),i=s.findIndex(p=>p!==0);i=i===-1?s.length:i;let c=e[0].repeat(i);if(i===s.length)return [c,n.length];let u=s.slice(i).reduce((p,h)=>p*256n+BigInt(h),0n),l=[];for(;u>0n;)l.unshift(e[Number(u%t)]),u/=t;return [c+l.join(""),n.length]}}};a();var R=le("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");a();var de=e=>e.replace(/\u0000/g,"");a();var re={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,r=0){let t=new TextDecoder().decode(e.slice(r));return [de(t),e.length]}};a();a();var F;(function(e){e.Little="le",e.Big="be";})(F||(F={}));a();var K=class extends RangeError{constructor(t,n,o,s){super(`Serializer [${t}] expected number to be between ${n} and ${o}, got ${s}.`);b(this,"name","NumberOutOfRangeError");}};a();function M(e){let r,t=e.name;return e.size>1&&(r=!("endian"in e.options)||e.options.endian===F.Little,t+=r?"(le)":"(be)"),{description:e.options.description??t,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&te(e.name,e.range[0],e.range[1],n);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),n,r),new Uint8Array(o)},deserialize(n,o=0){let s=n.slice(o,o+e.size);Xe("i8",s,e.size);let i=Je(s);return [e.get(i,r),o+e.size]}}}var Ye=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),Je=e=>new DataView(Ye(e)),te=(e,r,t,n)=>{if(n<r||n>t)throw new K(e,r,t,n)},Xe=(e,r,t)=>{if(r.length===0)throw new w(e);if(r.length<t)throw new y(e,t,r.length)};a();var z=(e={})=>M({name:"u8",size:1,range:[0,+"0xff"],set:(r,t)=>r.setUint8(0,Number(t)),get:r=>r.getUint8(0),options:e});a();var k=(e={})=>M({name:"u32",size:4,range:[0,+"0xffffffff"],set:(r,t,n)=>r.setUint32(0,Number(t),n),get:(r,t)=>r.getUint32(0,t),options:e});a();var S=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:r=>{te("shortU16",0,65535,r);let t=[0];for(let n=0;;n+=1){let o=r>>n*7;if(o===0)break;let s=127&o;t[n]=s,n>0&&(t[n-1]|=128);}return new Uint8Array(t)},deserialize:(r,t=0)=>{let n=0,o=0;for(;++o;){let s=o-1,i=r[t+s],c=127&i;if(n|=c<<s*7,!(i&128))break}return [n,t+o]}});a();a();var W=class extends Error{constructor(t,n,o){super(`Expected [${t}] to have ${n} items, got ${o}.`);b(this,"name","InvalidNumberOfItemsError");}},H=class extends Error{constructor(t,n){super(`The remainder of the buffer (${t} bytes) cannot be split into chunks of ${n} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${t} modulo ${n} should be equal to zero.`);b(this,"name","InvalidArrayLikeRemainderSizeError");}},G=class extends Error{constructor(t){super(`Unrecognized array-like serializer size: ${JSON.stringify(t)}`);b(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};a();a();function v(e){return e.reduce((r,t)=>r===null||t===null?null:r+t,0)}function pe(e,r,t,n){if(typeof e=="number")return [e,n];if(typeof e=="object")return e.deserialize(t,n);if(e==="remainder"){let o=v(r);if(o===null)throw new I('Serializers of "remainder" size must have fixed-size items.');let s=t.slice(n).length;if(s%o!==0)throw new H(s,o);return [s/o,n]}throw new G(e)}function C(e){return typeof e=="object"?e.description:`${e}`}function ne(e,r){if(typeof e!="number")return null;if(e===0)return 0;let t=v(r);return t===null?null:t*e}function fe(e,r){return typeof e=="object"?e.serialize(r):new Uint8Array}function A(e,r={}){let t=r.size??k();if(t==="remainder"&&e.fixedSize===null)throw new I('Serializers of "remainder" size must have fixed-size items.');return {description:r.description??`array(${e.description}; ${C(t)})`,fixedSize:ne(t,[e.fixedSize]),maxSize:ne(t,[e.maxSize]),serialize:n=>{if(typeof t=="number"&&n.length!==t)throw new W("array",t,n.length);return E([fe(t,n.length),...n.map(o=>e.serialize(o))])},deserialize:(n,o=0)=>{if(typeof t=="object"&&n.slice(o).length===0)return [[],o];let[s,i]=pe(t,[e.fixedSize],n,o);o=i;let c=[];for(let u=0;u<s;u+=1){let[l,p]=e.deserialize(n,o);c.push(l),o=p;}return [c,o]}}}a();function V(e={}){let r=e.size??"variable",t=e.description??`bytes(${C(r)})`,n={description:t,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,s=0)=>{let i=o.slice(s);return [i,s+i.length]}};return r==="variable"?n:typeof r=="number"?B(n,r,t):{description:t,fixedSize:null,maxSize:null,serialize:o=>{let s=n.serialize(o),i=r.serialize(s.length);return E([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new w("bytes");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let l=o.slice(s,s+u);if(l.length<u)throw new y("bytes",u,l.length);let[p,h]=n.deserialize(l);return s+=h,[p,s]}}}a();function O(e={}){let r=e.size??k(),t=e.encoding??re,n=e.description??`string(${t.description}; ${C(r)})`;return r==="variable"?{...t,description:n}:typeof r=="number"?B(t,r,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let s=t.serialize(o),i=r.serialize(s.length);return E([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new w("string");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let l=o.slice(s,s+u);if(l.length<u)throw new y("string",u,l.length);let[p,h]=t.deserialize(l);return s+=h,[p,s]}}}a();function T(e,r={}){let t=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:r.description??`struct(${t})`,fixedSize:v(e.map(([,n])=>n.fixedSize)),maxSize:v(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([s,i])=>i.serialize(n[s]));return E(o)},deserialize:(n,o=0)=>{let s={};return e.forEach(([i,c])=>{let[u,l]=c.deserialize(n,o);o=l,s[i]=u;}),[s,o]}}}function Qn(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=R.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:r})}}function q(e){return O({description:e?.description??(""),encoding:R,size:32})}function Y(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}function J(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var N;async function Qe(e){return N===void 0&&(N=new Promise(r=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{r(N=!1);}).then(()=>{r(N=!0);});})),typeof N=="boolean"?N:await N}async function er(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Qe(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
5
+ var Ye=Object.create;var re=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var et=(e,t,r)=>t in e?re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var tt=(e,t)=>()=>(e&&(t=e(e=0)),t);var rt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var nt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Xe(t))!Qe.call(e,o)&&o!==r&&re(e,o,{get:()=>t[o],enumerable:!(n=Je(t,o))||n.enumerable});return e};var ot=(e,t,r)=>(r=e!=null?Ye(Ze(e)):{},nt(t||!e||!e.__esModule?re(r,"default",{value:e,enumerable:!0}):r,e));var x=(e,t,r)=>(et(e,typeof t!="symbol"?t+"":t,r),r);var c=tt(()=>{});var He=rt((ls,Me)=>{c();var ur=Object.prototype.toString,dr=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};function K(e,t){var r,n,o,a,i,u,d;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return K(e.toJSON(),t);if(d=ur.call(e),d==="[object Array]"){for(o="[",n=e.length-1,r=0;r<n;r++)o+=K(e[r],!0)+",";return n>-1&&(o+=K(e[r],!0)),o+"]"}else if(d==="[object Object]"){for(a=dr(e).sort(),n=a.length,o="",r=0;r<n;)i=a[r],u=K(e[i],!1),u!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+u),r++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return t?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}Me.exports=function(e){var t=K(e,!1);if(t!==void 0)return ""+t};});c();c();c();c();c();var v=e=>{let t=e.reduce((o,a)=>o+a.length,0),r=new Uint8Array(t),n=0;return e.forEach(o=>{r.set(o,n),n+=o.length;}),r},le=(e,t)=>{if(e.length>=t)return e;let r=new Uint8Array(t).fill(0);return r.set(e),r},H=(e,t)=>le(e.slice(0,t),t);c();var T=class extends Error{constructor(r){super(`Serializer [${r}] cannot deserialize empty buffers.`);x(this,"name","DeserializingEmptyBufferError");}},w=class extends Error{constructor(r,n,o){super(`Serializer [${r}] expected ${n} bytes, got ${o}.`);x(this,"name","NotEnoughBytesError");}},N=class extends Error{constructor(r){r??(r="Expected a fixed-size serializer, got a variable-size one.");super(r);x(this,"name","ExpectedFixedSizeSerializerError");}};c();function O(e,t,r){return {description:r??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t,serialize:n=>H(e.serialize(n),t),deserialize:(n,o=0)=>{if(n=n.slice(o,o+t),n.length<t)throw new w("fixSerializer",t,n.length);e.fixedSize!==null&&(n=H(n,e.fixedSize));let[a]=e.deserialize(n,0);return [a,o+t]}}}c();function V(e,t,r){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(t(n)),deserialize:(n,o=0)=>{let[a,i]=e.deserialize(n,o);return r?[r(a,n,o),i]:[a,i]}}}c();c();c();var G=class extends Error{constructor(r,n,o){let a=`Expected a string of base ${n}, got [${r}].`;super(a);x(this,"name","InvalidBaseStringError");this.cause=o;}};var fe=e=>{let t=e.length,r=BigInt(t);return {description:`base${t}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new G(n,t);if(n==="")return new Uint8Array;let o=[...n],a=o.findIndex(m=>m!==e[0]);a=a===-1?o.length:a;let i=Array(a).fill(0);if(a===o.length)return Uint8Array.from(i);let u=o.slice(a),d=0n,l=1n;for(let m=u.length-1;m>=0;m-=1)d+=l*BigInt(e.indexOf(u[m])),l*=r;let f=[];for(;d>0n;)f.unshift(Number(d%256n)),d/=256n;return Uint8Array.from(i.concat(f))},deserialize(n,o=0){if(n.length===0)return ["",0];let a=n.slice(o),i=a.findIndex(f=>f!==0);i=i===-1?a.length:i;let u=e[0].repeat(i);if(i===a.length)return [u,n.length];let d=a.slice(i).reduce((f,m)=>f*256n+BigInt(m),0n),l=[];for(;d>0n;)l.unshift(e[Number(d%r)]),d/=r;return [u+l.join(""),n.length]}}};c();var C=fe("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");c();var pe=e=>e.replace(/\u0000/g,"");c();var ne={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,t=0){let r=new TextDecoder().decode(e.slice(t));return [pe(r),e.length]}};c();c();var W;(function(e){e.Little="le",e.Big="be";})(W||(W={}));c();var q=class extends RangeError{constructor(r,n,o,a){super(`Serializer [${r}] expected number to be between ${n} and ${o}, got ${a}.`);x(this,"name","NumberOutOfRangeError");}};c();function Y(e){let t,r=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===W.Little,r+=t?"(le)":"(be)"),{description:e.options.description??r,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&oe(e.name,e.range[0],e.range[1],n);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),n,t),new Uint8Array(o)},deserialize(n,o=0){let a=n.slice(o,o+e.size);it("i8",a,e.size);let i=at(a);return [e.get(i,t),o+e.size]}}}var st=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),at=e=>new DataView(st(e)),oe=(e,t,r,n)=>{if(n<t||n>r)throw new q(e,t,r,n)},it=(e,t,r)=>{if(t.length===0)throw new T(e);if(t.length<r)throw new w(e,r,t.length)};c();var z=(e={})=>Y({name:"u8",size:1,range:[0,+"0xff"],set:(t,r)=>t.setUint8(0,Number(r)),get:t=>t.getUint8(0),options:e});c();var P=(e={})=>Y({name:"u32",size:4,range:[0,+"0xffffffff"],set:(t,r,n)=>t.setUint32(0,Number(r),n),get:(t,r)=>t.getUint32(0,r),options:e});c();var A=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:t=>{oe("shortU16",0,65535,t);let r=[0];for(let n=0;;n+=1){let o=t>>n*7;if(o===0)break;let a=127&o;r[n]=a,n>0&&(r[n-1]|=128);}return new Uint8Array(r)},deserialize:(t,r=0)=>{let n=0,o=0;for(;++o;){let a=o-1,i=t[r+a],u=127&i;if(n|=u<<a*7,!(i&128))break}return [n,r+o]}});c();c();var J=class extends Error{constructor(r,n,o){super(`Expected [${r}] to have ${n} items, got ${o}.`);x(this,"name","InvalidNumberOfItemsError");}},X=class extends Error{constructor(r,n){super(`The remainder of the buffer (${r} bytes) cannot be split into chunks of ${n} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${r} modulo ${n} should be equal to zero.`);x(this,"name","InvalidArrayLikeRemainderSizeError");}},Z=class extends Error{constructor(r){super(`Unrecognized array-like serializer size: ${JSON.stringify(r)}`);x(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};c();c();function k(e){return e.reduce((t,r)=>t===null||r===null?null:t+r,0)}function me(e,t,r,n){if(typeof e=="number")return [e,n];if(typeof e=="object")return e.deserialize(r,n);if(e==="remainder"){let o=k(t);if(o===null)throw new N('Serializers of "remainder" size must have fixed-size items.');let a=r.slice(n).length;if(a%o!==0)throw new X(a,o);return [a/o,n]}throw new Z(e)}function _(e){return typeof e=="object"?e.description:`${e}`}function se(e,t){if(typeof e!="number")return null;if(e===0)return 0;let r=k(t);return r===null?null:r*e}function ge(e,t){return typeof e=="object"?e.serialize(t):new Uint8Array}function R(e,t={}){let r=t.size??P();if(r==="remainder"&&e.fixedSize===null)throw new N('Serializers of "remainder" size must have fixed-size items.');return {description:t.description??`array(${e.description}; ${_(r)})`,fixedSize:se(r,[e.fixedSize]),maxSize:se(r,[e.maxSize]),serialize:n=>{if(typeof r=="number"&&n.length!==r)throw new J("array",r,n.length);return v([ge(r,n.length),...n.map(o=>e.serialize(o))])},deserialize:(n,o=0)=>{if(typeof r=="object"&&n.slice(o).length===0)return [[],o];let[a,i]=me(r,[e.fixedSize],n,o);o=i;let u=[];for(let d=0;d<a;d+=1){let[l,f]=e.deserialize(n,o);u.push(l),o=f;}return [u,o]}}}c();function Q(e={}){let t=e.size??"variable",r=e.description??`bytes(${_(t)})`,n={description:r,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,a=0)=>{let i=o.slice(a);return [i,a+i.length]}};return t==="variable"?n:typeof t=="number"?O(n,t,r):{description:r,fixedSize:null,maxSize:null,serialize:o=>{let a=n.serialize(o),i=t.serialize(a.length);return v([i,a])},deserialize:(o,a=0)=>{if(o.slice(a).length===0)throw new T("bytes");let[i,u]=t.deserialize(o,a),d=Number(i);a=u;let l=o.slice(a,a+d);if(l.length<d)throw new w("bytes",d,l.length);let[f,m]=n.deserialize(l);return a+=m,[f,a]}}}c();function L(e={}){let t=e.size??P(),r=e.encoding??ne,n=e.description??`string(${r.description}; ${_(t)})`;return t==="variable"?{...r,description:n}:typeof t=="number"?O(r,t,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let a=r.serialize(o),i=t.serialize(a.length);return v([i,a])},deserialize:(o,a=0)=>{if(o.slice(a).length===0)throw new T("string");let[i,u]=t.deserialize(o,a),d=Number(i);a=u;let l=o.slice(a,a+d);if(l.length<d)throw new w("string",d,l.length);let[f,m]=r.deserialize(l);return a+=m,[f,a]}}}c();function I(e,t={}){let r=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:t.description??`struct(${r})`,fixedSize:k(e.map(([,n])=>n.fixedSize)),maxSize:k(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([a,i])=>i.serialize(n[a]));return v(o)},deserialize:(n,o=0)=>{let a={};return e.forEach(([i,u])=>{let[d,l]=u.deserialize(n,o);o=l,a[i]=d;}),[a,o]}}}c();function D(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var B;async function ct(e){return B===void 0&&(B=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(B=!1);}).then(()=>{t(B=!0);});})),typeof B=="boolean"?B:await B}async function he(){if(D(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function be(){if(D(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await ct(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
6
6
 
7
7
  Install and import \`@solana/webcrypto-ed25519-polyfill\` before generating keys in environments that do not support Ed25519.
8
8
 
9
- For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function rr(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function tr(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function nr(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}async function eo(){return await er(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function me(e){if(await rr(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let r=await crypto.subtle.exportKey("raw",e),[t]=q().deserialize(new Uint8Array(r));return t}async function ge(e,r){await tr();let t=await crypto.subtle.sign("Ed25519",e,r);return new Uint8Array(t)}async function ro(e,r,t){return await nr(),await crypto.subtle.verify("Ed25519",e,r,t)}a();function $(e){if("signatures"in e){let{signatures:r,...t}=e;return t}else return e}function io(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=R.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a blockhash`,{cause:r})}}function ao(e,r){if("lifetimeConstraint"in r&&r.lifetimeConstraint.blockhash===e.blockhash&&r.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return r;let t={...$(r),lifetimeConstraint:e};return Object.freeze(t),t}function co({version:e}){let r={instructions:[],version:e};return Object.freeze(r),r}var x=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(x||{}),or=1;function L(e){return e>=2}function _(e){return (e&or)!==0}function he(e,r){return e|r}var xe="SysvarRecentB1ockHashes11111111111111111111",Se="11111111111111111111111111111111";function uo(e){if(!Ee(e))throw new Error("Transaction is not a durable nonce transaction")}function sr(e,r){return {accounts:[{address:e,role:x.WRITABLE},{address:xe,role:x.READONLY},{address:r,role:x.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:Se}}function ir(e){return e.programAddress===Se&&e.data!=null&&ar(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===x.WRITABLE&&e.accounts[1].address===xe&&e.accounts[1].role===x.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===x.READONLY_SIGNER}function ar(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Ee(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&ir(e.instructions[0])}function lo({nonce:e,nonceAccountAddress:r,nonceAuthorityAddress:t},n){let o=Ee(n);if(o&&n.lifetimeConstraint.nonce===e&&n.instructions[0].accounts[0].address===r&&n.instructions[0].accounts[2].address===t)return n;let s={...$(n),instructions:[sr(r,t),...o?n.instructions.slice(1):n.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(s),s}function po(e,r){if("feePayer"in r&&e===r.feePayer)return r;let t={...$(r),feePayer:e};return Object.freeze(t),t}function fo(e,r){let t={...$(r),instructions:[...r.instructions,e]};return Object.freeze(t),t}function mo(e,r){let t={...$(r),instructions:[e,...r.instructions]};return Object.freeze(t),t}function be(e,r,t){e[r]=t(e[r]??{role:x.READONLY});}var m=Symbol("AddressMapTypeProperty");function cr(e,r){let t={[e]:{[m]:0,role:x.WRITABLE_SIGNER}},n=new Set;for(let o of r){be(t,o.programAddress,i=>{if(n.add(o.programAddress),m in i){if(_(i.role))switch(i[m]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[m]===2)return i}return {[m]:2,role:x.READONLY}});let s;if(o.accounts)for(let i of o.accounts)be(t,i.address,c=>{let{address:u,...l}=i;if(m in c)switch(c[m]){case 0:return c;case 1:{let p=he(c.role,l.role);if("lookupTableAddress"in l){if(c.lookupTableAddress!==l.lookupTableAddress&&(s||(s=Y()))(l.lookupTableAddress,c.lookupTableAddress)<0)return {[m]:1,...l,role:p}}else if(L(l.role))return {[m]:2,role:p};return c.role!==p?{...c,role:p}:c}case 2:{let p=he(c.role,l.role);if(n.has(i.address)){if(_(l.role))throw new Error(`This transaction includes an address (\`${i.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return c.role!==p?{...c,role:p}:c}else return "lookupTableAddress"in l&&!L(c.role)?{...l,[m]:1,role:p}:c.role!==p?{...c,role:p}:c}}return "lookupTableAddress"in l?{...l,[m]:1}:{...l,[m]:2}});}return t}function ur(e){let r;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[m]!==i[m]){if(o[m]===0)return -1;if(i[m]===0)return 1;if(o[m]===2)return -1;if(i[m]===2)return 1}let c=L(o.role);if(c!==L(i.role))return c?-1:1;let u=_(o.role);return u!==_(i.role)?u?-1:1:(r||(r=Y()),o[m]===1&&i[m]===1&&o.lookupTableAddress!==i.lookupTableAddress?r(o.lookupTableAddress,i.lookupTableAddress):r(n,s))}).map(([n,o])=>({address:n,...o}))}function lr(e){var r;let t={};for(let n of e){if(!("lookupTableAddress"in n))continue;let o=t[r=n.lookupTableAddress]||(t[r]={readableIndices:[],writableIndices:[]});n.role===x.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(t).sort(Y()).map(n=>({lookupTableAddress:n,...t[n]}))}function dr(e){let r=0,t=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=_(o.role);L(o.role)?(n++,s||t++):s||r++;}return {numReadonlyNonSignerAccounts:r,numReadonlySignerAccounts:t,numSignerAccounts:n}}function pr(e){let r={};for(let[t,n]of e.entries())r[n.address]=t;return r}function fr(e,r){let t=pr(r);return e.map(({accounts:n,data:o,programAddress:s})=>({programAddressIndex:t[s],...n?{accountIndices:n.map(({address:i})=>t[i])}:null,...o?{data:o}:null}))}function mr(e){return "nonce"in e?e.nonce:e.blockhash}function gr(e){let r=e.findIndex(n=>"lookupTableAddress"in n);return (r===-1?e:e.slice(0,r)).map(({address:n})=>n)}function we(e){let r=cr(e.feePayer,e.instructions),t=ur(r);return {...e.version!=="legacy"?{addressTableLookups:lr(t)}:null,header:dr(t),instructions:fr(e.instructions,t),lifetimeToken:mr(e.lifetimeConstraint),staticAccounts:gr(t),version:e.version}}function hr(){return T([["lookupTableAddress",q(void 0)],["writableIndices",A(z(),{...null,size:S()})],["readableIndices",A(z(),{...void 0,size:S()})]],void 0)}function br(){return T([["numSignerAccounts",z(void 0)],["numReadonlySignerAccounts",z(void 0)],["numReadonlyNonSignerAccounts",z(void 0)]],void 0)}function yr(){return U(T([["programAddressIndex",z(void 0)],["addressIndices",A(z({description:""}),{description:"",size:S()})],["data",V({description:"",size:S()})]]),e=>e.addressIndices!==void 0&&e.data!==void 0?e:{...e,addressIndices:e.addressIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.addressIndices.length&&e.data.byteLength)return e;let{addressIndices:r,data:t,...n}=e;return {...n,...r.length?{addressIndices:r}:null,...t.byteLength?{data:t}:null}})}function xr(e,r){let t=r+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${r}. Use \`get${t}()\` if you need a ${e}, and \`get${r}Codec()\` if you need to both encode and decode ${r}`)}function ze(e){return ()=>{throw xr("decoder",e)}}var oe=128,Sr={description:"",fixedSize:null,maxSize:1};function Er(e,r=0){let t=e[r];return t&oe?[t^oe,r+1]:["legacy",r]}function wr(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|oe])}function zr(){return {...Sr,deserialize:Er,serialize:wr}}var Ar={description:"",fixedSize:null,maxSize:null};function Tr(e){return e.version==="legacy"?T(ye()).serialize(e):U(T([...ye(),["addressTableLookups",Ir()]]),r=>r.version==="legacy"?r:{...r,addressTableLookups:r.addressTableLookups??[]}).serialize(e)}function ye(){return [["version",zr()],["header",br()],["staticAccounts",A(q(),{description:"",size:S()})],["lifetimeToken",O({description:"",encoding:R,size:32})],["instructions",A(yr(),{description:"",size:S()})]]}function Ir(){return A(hr(),{...null,size:S()})}function Ae(){return {...Ar,deserialize:ze("CompiledMessage"),serialize:Tr}}async function Rr(e,r){let t=Ae().serialize(e);return await ge(r,t)}async function go(e,r){let t=we(r),[n,o]=await Promise.all([me(e.publicKey),Rr(t,e.privateKey)]),s={..."signatures"in r?r.signatures:null,[n]:o},i={...r,signatures:s};return Object.freeze(i),i}function Nr(e){let r=we(e),t;if("signatures"in e){t=[];for(let n=0;n<r.header.numSignerAccounts;n++)t[n]=e.signatures[r.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else t=Array(r.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:r,signatures:t}}var vr={description:"",fixedSize:null,maxSize:null};function Cr(e){let r=Nr(e);return T([["signatures",A(V({size:64}),{...null,size:S()})],["compiledMessage",Ae()]]).serialize(r)}function Br(){return {...vr,deserialize:ze("CompiledMessage"),serialize:Cr}}function ho(e){let r=Br().serialize(e);return btoa(String.fromCharCode(...r))}a();a();function se(e,r,t){if(Array.isArray(e))return e.map((n,o)=>se(n,[...r,o],t));if(typeof e=="object"&&e!==null){let n={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=se(e[o],[...r,o],t));return n}else return typeof e=="bigint"?(t&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&t(r,e),Number(e)):e}function kr(e,r){return se(e,[],r)}var f={},Or={getAccountInfo:[["value","data","parsed","info","lastExtendedSlotStartIndex"],["value","data","parsed","info","slashPenalty"],["value","data","parsed","info","warmupCooldownRate"],["value","data","parsed","info","tokenAmount","decimals"],["value","data","parsed","info","tokenAmount","uiAmount"],["value","data","parsed","info","rentExemptReserve","decimals"],["value","data","parsed","info","delegatedAmount","decimals"],["value","data","parsed","info","extensions",f,"state","olderTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","newerTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","preUpdateAverageRate"],["value","data","parsed","info","extensions",f,"state","currentRate"],["value","data","parsed","info","decimals"],["value","data","parsed","info","numRequiredSigners"],["value","data","parsed","info","numValidSigners"],["value","data","parsed","info","stake","delegation","warmupCooldownRate"],["value","data","parsed","info","exemptionThreshold"],["value","data","parsed","info","burnPercent"],["value","data","parsed","info","commission"],["value","data","parsed","info","votes",f,"confirmationCount"]],getBlockTime:[[]],getInflationReward:[[f,"commission"]],getRecentPerformanceSamples:[[f,"samplePeriodSecs"]],getTokenLargestAccounts:[["value",f,"decimals"],["value",f,"uiAmount"]],getTransaction:[["meta","preTokenBalances",f,"accountIndex"],["meta","preTokenBalances",f,"uiTokenAmount","decimals"],["meta","postTokenBalances",f,"accountIndex"],["meta","postTokenBalances",f,"uiTokenAmount","decimals"],["meta","rewards",f,"commission"],["meta","innerInstructions",f,"index"],["meta","innerInstructions",f,"instructions",f,"programIdIndex"],["meta","innerInstructions",f,"instructions",f,"accounts",f],["transaction","message","addressTableLookups",f,"writableIndexes",f],["transaction","message","addressTableLookups",f,"readonlyIndexes",f],["transaction","message","instructions",f,"programIdIndex"],["transaction","message","instructions",f,"accounts",f],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVoteAccounts:[["current",f,"commission"],["delinquent",f,"commission"]]};function Te(e,r){return e.filter(t=>t[0]===f&&typeof r=="number"||t[0]===r).map(t=>t.slice(1))}function ie(e,r){if(Array.isArray(e))return e.map((t,n)=>{let o=Te(r,n);return ie(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[n,o]of Object.entries(e)){let s=Te(r,n);t[n]=ie(o,s);}return t}else return typeof e=="number"&&r.length===0&&Number.isInteger(e)?BigInt(e):e}function Lr(e,r){let t=r?Or[r]:void 0;return ie(e,t??[])}function Ie(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...r){let[t,n]=r,o=n.toString();return function(...s){let i=e?.onIntegerOverflow,c=kr(s,i?(u,l)=>i(o,u,l):void 0);return {methodName:o,params:c,responseProcessor:u=>Lr(u,o)}}}})}a();var _r=class extends Error{constructor(e){super(`JSON-RPC 2.0 error (${e.code}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.code=e.code,this.data=e.data;}get name(){return "SolanaJsonRpcError"}},ae=0;function $r(){let e=ae;return ae=(ae+1)%Number.MAX_SAFE_INTEGER,e}function Dr(e,r){return {id:$r(),jsonrpc:"2.0",method:e,params:r}}function Pr(e,r){return {async send(t){let{methodName:n,params:o,responseProcessor:s}=r,i=Dr(n,o),c=await e.transport({payload:i,signal:t?.abortSignal});if("error"in c)throw new _r(c.error);return s?s(c.result):c.result}}}function Ur(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(r,t,n){return function(...o){let s=t.toString(),i=Reflect.get(r,s,n),c=i?i(...o):{methodName:s,params:o};return Pr(e,c)}}})}function Ne(e){return Ur(e)}var jr=globalThis.fetch,Fr=class extends Error{constructor(e){super(`HTTP error (${e.statusCode}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.statusCode=e.statusCode;}get name(){return "SolanaHttpError"}};function Hr(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function ve({httpAgentNodeOnly:e,headers:r,url:t}){let n=void 0;let o=r&&Hr(r);return async function({payload:i,signal:c}){let u=JSON.stringify(i),l={agent:n,body:u,headers:{...o,accept:"application/json","content-length":u.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:c},p=await jr(t,l);if(!p.ok)throw new Fr({message:p.statusText,statusCode:p.status});return await p.json()}}a();a();var X=class extends Error{constructor(t,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",c=s%10,u=s%100;c==1&&u!=11?i=s+"st":c==2&&u!=12?i=s+"nd":c==3&&u!=13?i=s+"rd":i=s+"th";let l=n.length>1?n.slice(1).map(p=>typeof p=="number"?`[${p}]`:p).join("."):null;super(`The ${i} argument to the \`${t}\` RPC method${l?` at path \`${l}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=n,this.methodName=t,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Ce={onIntegerOverflow(e,r,t){throw new X(e,r,t)}};function Lo(e){return Ne({...e,api:Ie(Ce)})}a();a();function Be(e,r){let t;return async function(o){let{payload:s,signal:i}=o,c=r(s);if(c===void 0)return await e(o);if(t||(Promise.resolve().then(()=>{t=void 0;}),t={}),t[c]==null){let l=new AbortController;t[c]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let u=t[c];if(u.numConsumers++,i){let l=u.responsePromise;return await new Promise((p,h)=>{let Z=$e=>{i.removeEventListener("abort",Z),u.numConsumers-=1,u.numConsumers===0&&u.abortController.abort();let De=new DOMException($e.target.reason,"AbortError");h(De);};i.addEventListener("abort",Z),l.then(p).finally(()=>{i.removeEventListener("abort",Z);});})}else return await u.responsePromise}}a();var Le=Ve(Oe(),1);function _e(e){if(!(e==null||typeof e!="object"||Array.isArray(e))&&"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&"params"in e)return (0, Le.default)([e.method,e.params])}function qr(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Go(e){return Be(ve({...e,headers:{...e.headers?qr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),_e)}
9
+ For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function xe(){if(D(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function ye(){if(D(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function we(){if(D(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}function lo(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let r=C.serialize(e).byteLength;if(r!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${r}`)}catch(t){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:t})}}function $(e){return L({description:e?.description??(""),encoding:C,size:32})}function ee(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var dt=37095705934669439343138083508754565189542113879843219016388785533085940283555n,b=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Ee=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function y(e){let t=e%b;return t>=0n?t:b+t}function S(e,t){let r=e;for(;t-- >0n;)r*=r,r%=b;return r}function lt(e){let r=e*e%b*e%b,n=S(r,2n)*r%b,o=S(n,1n)*e%b,a=S(o,5n)*o%b,i=S(a,10n)*a%b,u=S(i,20n)*i%b,d=S(u,40n)*u%b,l=S(d,80n)*d%b,f=S(l,80n)*d%b,m=S(f,10n)*a%b;return S(m,2n)*e%b}function ft(e,t){let r=y(t*t*t),n=y(r*r*t),o=lt(e*n),a=y(e*r*o),i=y(t*a*a),u=a,d=y(a*Ee),l=i===e,f=i===y(-e),m=i===y(-e*Ee);return l&&(a=u),(f||m)&&(a=d),(y(a)&1n)===1n&&(a=y(-a)),!l&&!f?null:a}function pt(e,t){let r=y(e*e),n=y(r-1n),o=y(dt*r+1n),a=ft(n,o);if(a===null)return !1;let i=(t&128)!==0;return !(a===0n&&i)}function mt(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function gt(e){let r=`0x${e.reduce((n,o,a)=>`${mt(a===31?o&-129:o)}${n}`,"")}`;return BigInt(r)}async function ht(e){if(e.byteLength!==32)return !1;let t=gt(e);return pt(t,e[31])}var bt=32,Ae=16,xt=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Se=class extends Error{};async function yt({programAddress:e,seeds:t}){if(await he(),t.length>Ae)throw new Error(`A maximum of ${Ae} seeds may be supplied when creating an address`);let r,n=t.reduce((d,l,f)=>{let m=typeof l=="string"?(r||(r=new TextEncoder)).encode(l):l;if(m.byteLength>bt)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return d.push(...m),d},[]),o=$(),a=o.serialize(e),i=await crypto.subtle.digest("SHA-256",new Uint8Array([...n,...a,...xt])),u=new Uint8Array(i);if(await ht(u))throw new Se("Invalid seeds; point must fall off the Ed25519 curve");return o.deserialize(u)[0]}async function fo({programAddress:e,seeds:t}){let r=255;for(;r>0;)try{return {bumpSeed:r,pda:await yt({programAddress:e,seeds:[...t,new Uint8Array([r])]})}}catch(n){if(n instanceof Se)r--;else throw n}throw new Error("Unable to find a viable program address bump seed")}async function ve(e){if(await xe(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let t=await crypto.subtle.exportKey("raw",e),[r]=$().deserialize(new Uint8Array(t));return r}c();var wt=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(wt||{}),Te=2,ae=1;function ho(e){return e&~Te}function bo(e){return e&~ae}function xo(e){return e>=2}function yo(e){return (e&ae)!==0}function wo(e,t){return e|t}function Eo(e){return e|Te}function Ao(e){return e|ae}c();async function zo(){return await be(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function ze(e,t){await ye();let r=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(r)}async function Ro(e,t,r){return await we(),await crypto.subtle.verify("Ed25519",e,t,r)}c();function j(e){if("signatures"in e){let{signatures:t,...r}=e;return r}else return e}function _o(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let r=C.serialize(e).byteLength;if(r!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${r}`)}catch(t){throw new Error(`\`${e}\` is not a blockhash`,{cause:t})}}function Oo(e,t){if("lifetimeConstraint"in t&&t.lifetimeConstraint.blockhash===e.blockhash&&t.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return t;let r={...j(t),lifetimeConstraint:e};return Object.freeze(r),r}function Po({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var E=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(E||{}),Et=1;function F(e){return e>=2}function U(e){return (e&Et)!==0}function Re(e,t){return e|t}var Ce="SysvarRecentB1ockHashes11111111111111111111",Be="11111111111111111111111111111111";function Lo(e){if(!ke(e))throw new Error("Transaction is not a durable nonce transaction")}function At(e,t){return {accounts:[{address:e,role:E.WRITABLE},{address:Ce,role:E.READONLY},{address:t,role:E.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:Be}}function St(e){return e.programAddress===Be&&e.data!=null&&vt(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===E.WRITABLE&&e.accounts[1].address===Ce&&e.accounts[1].role===E.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===E.READONLY_SIGNER}function vt(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function ke(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&St(e.instructions[0])}function Do({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:r},n){let o=ke(n);if(o&&n.lifetimeConstraint.nonce===e&&n.instructions[0].accounts[0].address===t&&n.instructions[0].accounts[2].address===r)return n;let a={...j(n),instructions:[At(t,r),...o?n.instructions.slice(1):n.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(a),a}function $o(e,t){if("feePayer"in t&&e===t.feePayer)return t;let r={...j(t),feePayer:e};return Object.freeze(r),r}function Fo(e,t){let r={...j(t),instructions:[...t.instructions,e]};return Object.freeze(r),r}function Uo(e,t){let r={...j(t),instructions:[e,...t.instructions]};return Object.freeze(r),r}function Ie(e,t,r){e[t]=r(e[t]??{role:E.READONLY});}var g=Symbol("AddressMapTypeProperty");function Tt(e,t){let r={[e]:{[g]:0,role:E.WRITABLE_SIGNER}},n=new Set;for(let o of t){Ie(r,o.programAddress,i=>{if(n.add(o.programAddress),g in i){if(U(i.role))switch(i[g]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[g]===2)return i}return {[g]:2,role:E.READONLY}});let a;if(o.accounts)for(let i of o.accounts)Ie(r,i.address,u=>{let{address:d,...l}=i;if(g in u)switch(u[g]){case 0:return u;case 1:{let f=Re(u.role,l.role);if("lookupTableAddress"in l){if(u.lookupTableAddress!==l.lookupTableAddress&&(a||(a=ee()))(l.lookupTableAddress,u.lookupTableAddress)<0)return {[g]:1,...l,role:f}}else if(F(l.role))return {[g]:2,role:f};return u.role!==f?{...u,role:f}:u}case 2:{let f=Re(u.role,l.role);if(n.has(i.address)){if(U(l.role))throw new Error(`This transaction includes an address (\`${i.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return u.role!==f?{...u,role:f}:u}else return "lookupTableAddress"in l&&!F(u.role)?{...l,[g]:1,role:f}:u.role!==f?{...u,role:f}:u}}return "lookupTableAddress"in l?{...l,[g]:1}:{...l,[g]:2}});}return r}function zt(e){let t;return Object.entries(e).sort(([n,o],[a,i])=>{if(o[g]!==i[g]){if(o[g]===0)return -1;if(i[g]===0)return 1;if(o[g]===2)return -1;if(i[g]===2)return 1}let u=F(o.role);if(u!==F(i.role))return u?-1:1;let d=U(o.role);return d!==U(i.role)?d?-1:1:(t||(t=ee()),o[g]===1&&i[g]===1&&o.lookupTableAddress!==i.lookupTableAddress?t(o.lookupTableAddress,i.lookupTableAddress):t(n,a))}).map(([n,o])=>({address:n,...o}))}function Rt(e){var t;let r={};for(let n of e){if(!("lookupTableAddress"in n))continue;let o=r[t=n.lookupTableAddress]||(r[t]={readableIndices:[],writableIndices:[]});n.role===E.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(r).sort(ee()).map(n=>({lookupTableAddress:n,...r[n]}))}function It(e){let t=0,r=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let a=U(o.role);F(o.role)?(n++,a||r++):a||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:r,numSignerAccounts:n}}function Nt(e){let t={};for(let[r,n]of e.entries())t[n.address]=r;return t}function Ct(e,t){let r=Nt(t);return e.map(({accounts:n,data:o,programAddress:a})=>({programAddressIndex:r[a],...n?{accountIndices:n.map(({address:i})=>r[i])}:null,...o?{data:o}:null}))}function Bt(e){return "nonce"in e?e.nonce:e.blockhash}function kt(e){let t=e.findIndex(n=>"lookupTableAddress"in n);return (t===-1?e:e.slice(0,t)).map(({address:n})=>n)}function _e(e){let t=Tt(e.feePayer,e.instructions),r=zt(t);return {...e.version!=="legacy"?{addressTableLookups:Rt(r)}:null,header:It(r),instructions:Ct(e.instructions,r),lifetimeToken:Bt(e.lifetimeConstraint),staticAccounts:kt(r),version:e.version}}function _t(){return I([["lookupTableAddress",$(void 0)],["writableIndices",R(z(),{...null,size:A()})],["readableIndices",R(z(),{...void 0,size:A()})]],void 0)}function Ot(){return I([["numSignerAccounts",z(void 0)],["numReadonlySignerAccounts",z(void 0)],["numReadonlyNonSignerAccounts",z(void 0)]],void 0)}function Pt(){return V(I([["programAddressIndex",z(void 0)],["accountIndices",R(z({description:""}),{description:"",size:A()})],["data",Q({description:"",size:A()})]]),e=>e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:e.accountIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.accountIndices.length&&e.data.byteLength)return e;let{accountIndices:t,data:r,...n}=e;return {...n,...t.length?{accountIndices:t}:null,...r.byteLength?{data:r}:null}})}function Lt(e,t){let r=t+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${t}. Use \`get${r}()\` if you need a ${e}, and \`get${t}Codec()\` if you need to both encode and decode ${t}`)}function Oe(e){return ()=>{throw Lt("decoder",e)}}var ie=128,Dt={description:"",fixedSize:null,maxSize:1};function $t(e,t=0){let r=e[t];return r&ie?[r^ie,t+1]:["legacy",t]}function Ft(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|ie])}function Ut(){return {...Dt,deserialize:$t,serialize:Ft}}var jt={description:"",fixedSize:null,maxSize:null};function Kt(e){return e.version==="legacy"?I(Ne()).serialize(e):V(I([...Ne(),["addressTableLookups",Mt()]]),t=>t.version==="legacy"?t:{...t,addressTableLookups:t.addressTableLookups??[]}).serialize(e)}function Ne(){return [["version",Ut()],["header",Ot()],["staticAccounts",R($(),{description:"",size:A()})],["lifetimeToken",L({description:"",encoding:C,size:32})],["instructions",R(Pt(),{description:"",size:A()})]]}function Mt(){return R(_t(),{...null,size:A()})}function Pe(){return {...jt,deserialize:Oe("CompiledMessage"),serialize:Kt}}async function Ht(e,t){let r=Pe().serialize(e);return await ze(t,r)}async function jo(e,t){let r=_e(t),[n,o]=await Promise.all([ve(e.publicKey),Ht(r,e.privateKey)]),a={..."signatures"in t?t.signatures:null,[n]:o},i={...t,signatures:a};return Object.freeze(i),i}function Vt(e){let t=_e(e),r;if("signatures"in e){r=[];for(let n=0;n<t.header.numSignerAccounts;n++)r[n]=e.signatures[t.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else r=Array(t.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:t,signatures:r}}var Gt={description:"",fixedSize:null,maxSize:null};function Wt(e){let t=Vt(e);return I([["signatures",R(Q({size:64}),{...null,size:A()})],["compiledMessage",Pe()]]).serialize(t)}function qt(){return {...Gt,deserialize:Oe("CompiledMessage"),serialize:Wt}}function Ko(e){let t=qt().serialize(e);return btoa(String.fromCharCode(...t))}c();c();function ce(e,t,r){if(Array.isArray(e))return e.map((n,o)=>ce(n,[...t,o],r));if(typeof e=="object"&&e!==null){let n={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=ce(e[o],[...t,o],r));return n}else return typeof e=="bigint"?(r&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&r(t,e),Number(e)):e}function Yt(e,t){return ce(e,[],t)}var s={},Jt={getAccountInfo:[["value","data","parsed","info","lastExtendedSlotStartIndex"],["value","data","parsed","info","slashPenalty"],["value","data","parsed","info","warmupCooldownRate"],["value","data","parsed","info","tokenAmount","decimals"],["value","data","parsed","info","tokenAmount","uiAmount"],["value","data","parsed","info","rentExemptReserve","decimals"],["value","data","parsed","info","rentExemptReserve","uiAmount"],["value","data","parsed","info","delegatedAmount","decimals"],["value","data","parsed","info","delegatedAmount","uiAmount"],["value","data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",s,"state","preUpdateAverageRate"],["value","data","parsed","info","extensions",s,"state","currentRate"],["value","data","parsed","info","decimals"],["value","data","parsed","info","numRequiredSigners"],["value","data","parsed","info","numValidSigners"],["value","data","parsed","info","stake","delegation","warmupCooldownRate"],["value","data","parsed","info","exemptionThreshold"],["value","data","parsed","info","burnPercent"],["value","data","parsed","info","commission"],["value","data","parsed","info","votes",s,"confirmationCount"]],getBlockTime:[[]],getClusterNodes:[[s,"featureSet"],[s,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[s,"commission"]],getMultipleAccounts:[["value",s,"data","parsed","info","lastExtendedSlotStartIndex"],["value",s,"data","parsed","info","slashPenalty"],["value",s,"data","parsed","info","warmupCooldownRate"],["value",s,"data","parsed","info","tokenAmount","decimals"],["value",s,"data","parsed","info","tokenAmount","uiAmount"],["value",s,"data","parsed","info","rentExemptReserve","decimals"],["value",s,"data","parsed","info","rentExemptReserve","uiAmount"],["value",s,"data","parsed","info","delegatedAmount","decimals"],["value",s,"data","parsed","info","delegatedAmount","uiAmount"],["value",s,"data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],["value",s,"data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],["value",s,"data","parsed","info","extensions",s,"state","preUpdateAverageRate"],["value",s,"data","parsed","info","extensions",s,"state","currentRate"],["value",s,"data","parsed","info","decimals"],["value",s,"data","parsed","info","numRequiredSigners"],["value",s,"data","parsed","info","numValidSigners"],["value",s,"data","parsed","info","stake","delegation","warmupCooldownRate"],["value",s,"data","parsed","info","exemptionThreshold"],["value",s,"data","parsed","info","burnPercent"],["value",s,"data","parsed","info","commission"],["value",s,"data","parsed","info","votes",s,"confirmationCount"]],getProgramAccounts:[[s,"account","data","parsed","info","lastExtendedSlotStartIndex"],["value",s,"account","data","parsed","info","lastExtendedSlotStartIndex"],[s,"account","data","parsed","info","slashPenalty"],["value",s,"account","data","parsed","info","slashPenalty"],[s,"account","data","parsed","info","warmupCooldownRate"],["value",s,"account","data","parsed","info","warmupCooldownRate"],[s,"account","data","parsed","info","tokenAmount","decimals"],["value",s,"account","data","parsed","info","tokenAmount","decimals"],[s,"account","data","parsed","info","tokenAmount","uiAmount"],["value",s,"account","data","parsed","info","tokenAmount","uiAmount"],[s,"account","data","parsed","info","rentExemptReserve","decimals"],["value",s,"account","data","parsed","info","rentExemptReserve","decimals"],[s,"account","data","parsed","info","rentExemptReserve","uiAmount"],["value",s,"account","data","parsed","info","rentExemptReserve","uiAmount"],[s,"account","data","parsed","info","delegatedAmount","decimals"],["value",s,"account","data","parsed","info","delegatedAmount","decimals"],[s,"account","data","parsed","info","delegatedAmount","uiAmount"],["value",s,"account","data","parsed","info","delegatedAmount","uiAmount"],[s,"account","data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],[s,"account","data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],[s,"account","data","parsed","info","extensions",s,"state","preUpdateAverageRate"],["value",s,"account","data","parsed","info","extensions",s,"state","preUpdateAverageRate"],[s,"account","data","parsed","info","extensions",s,"state","currentRate"],["value",s,"account","data","parsed","info","extensions",s,"state","currentRate"],[s,"account","data","parsed","info","decimals"],["value",s,"account","data","parsed","info","decimals"],[s,"account","data","parsed","info","numRequiredSigners"],["value",s,"account","data","parsed","info","numRequiredSigners"],[s,"account","data","parsed","info","numValidSigners"],["value",s,"account","data","parsed","info","numValidSigners"],[s,"account","data","parsed","info","stake","delegation","warmupCooldownRate"],["value",s,"account","data","parsed","info","stake","delegation","warmupCooldownRate"],[s,"account","data","parsed","info","exemptionThreshold"],["value",s,"account","data","parsed","info","exemptionThreshold"],[s,"account","data","parsed","info","burnPercent"],["value",s,"account","data","parsed","info","burnPercent"],[s,"account","data","parsed","info","commission"],["value",s,"account","data","parsed","info","commission"],[s,"account","data","parsed","info","votes",s,"confirmationCount"],["value",s,"account","data","parsed","info","votes",s,"confirmationCount"]],getRecentPerformanceSamples:[[s,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:[["value",s,"account","data","parsed","info","tokenAmount","decimals"],["value",s,"account","data","parsed","info","tokenAmount","uiAmount"],["value",s,"account","data","parsed","info","rentExemptReserve","decimals"],["value",s,"account","data","parsed","info","rentExemptReserve","uiAmount"],["value",s,"account","data","parsed","info","delegatedAmount","decimals"],["value",s,"account","data","parsed","info","delegatedAmount","uiAmount"],["value",s,"account","data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","preUpdateAverageRate"],["value",s,"account","data","parsed","info","extensions",s,"state","currentRate"]],getTokenAccountsByOwner:[["value",s,"account","data","parsed","info","tokenAmount","decimals"],["value",s,"account","data","parsed","info","tokenAmount","uiAmount"],["value",s,"account","data","parsed","info","rentExemptReserve","decimals"],["value",s,"account","data","parsed","info","rentExemptReserve","uiAmount"],["value",s,"account","data","parsed","info","delegatedAmount","decimals"],["value",s,"account","data","parsed","info","delegatedAmount","uiAmount"],["value",s,"account","data","parsed","info","extensions",s,"state","olderTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","newerTransferFee","transferFeeBasisPoints"],["value",s,"account","data","parsed","info","extensions",s,"state","preUpdateAverageRate"],["value",s,"account","data","parsed","info","extensions",s,"state","currentRate"]],getTokenLargestAccounts:[["value",s,"decimals"],["value",s,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",s,"accountIndex"],["meta","preTokenBalances",s,"uiTokenAmount","decimals"],["meta","postTokenBalances",s,"accountIndex"],["meta","postTokenBalances",s,"uiTokenAmount","decimals"],["meta","rewards",s,"commission"],["meta","innerInstructions",s,"index"],["meta","innerInstructions",s,"instructions",s,"programIdIndex"],["meta","innerInstructions",s,"instructions",s,"accounts",s],["transaction","message","addressTableLookups",s,"writableIndexes",s],["transaction","message","addressTableLookups",s,"readonlyIndexes",s],["transaction","message","instructions",s,"programIdIndex"],["transaction","message","instructions",s,"accounts",s],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",s,"commission"],["delinquent",s,"commission"]]};function Le(e,t){return e.filter(r=>r[0]===s&&typeof t=="number"||r[0]===t).map(r=>r.slice(1))}function ue(e,t){if(Array.isArray(e))return e.map((r,n)=>{let o=Le(t,n);return ue(r,o)});if(typeof e=="object"&&e!==null){let r={};for(let[n,o]of Object.entries(e)){let a=Le(t,n);r[n]=ue(o,a);}return r}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function Xt(e,t){let r=t?Jt[t]:void 0;return ue(e,r??[])}function De(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,n]=t,o=n.toString();return function(...a){let i=e?.onIntegerOverflow,u=Yt(a,i?(d,l)=>i(o,d,l):void 0);return {methodName:o,params:u,responseProcessor:d=>Xt(d,o)}}}})}c();var Zt=class extends Error{constructor(e){super(`JSON-RPC 2.0 error (${e.code}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.code=e.code,this.data=e.data;}get name(){return "SolanaJsonRpcError"}},de=0;function Qt(){let e=de;return de=(de+1)%Number.MAX_SAFE_INTEGER,e}function er(e,t){return {id:Qt(),jsonrpc:"2.0",method:e,params:t}}function tr(e,t){return {async send(r){let{methodName:n,params:o,responseProcessor:a}=t,i=er(n,o),u=await e.transport({payload:i,signal:r?.abortSignal});if("error"in u)throw new Zt(u.error);return a?a(u.result):u.result}}}function rr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,n){return function(...o){let a=r.toString(),i=Reflect.get(t,a,n),u=i?i(...o):{methodName:a,params:o};return tr(e,u)}}})}function Fe(e){return rr(e)}var nr=globalThis.fetch,or=class extends Error{constructor(e){super(`HTTP error (${e.statusCode}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.statusCode=e.statusCode;}get name(){return "SolanaHttpError"}};function cr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function Ue({httpAgentNodeOnly:e,headers:t,url:r}){let n=void 0;let o=t&&cr(t);return async function({payload:i,signal:u}){let d=JSON.stringify(i),l={agent:n,body:d,headers:{...o,accept:"application/json","content-length":d.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:u},f=await nr(r,l);if(!f.ok)throw new or({message:f.statusText,statusCode:f.status});return await f.json()}}c();c();var te=class extends Error{constructor(r,n,o){let a=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",u=a%10,d=a%100;u==1&&d!=11?i=a+"st":u==2&&d!=12?i=a+"nd":u==3&&d!=13?i=a+"rd":i=a+"th";let l=n.length>1?n.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${i} argument to the \`${r}\` RPC method${l?` at path \`${l}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=n,this.methodName=r,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var je={onIntegerOverflow(e,t,r){throw new te(e,t,r)}};function as(e){return Fe({...e,api:De(je)})}c();c();function Ke(e,t){let r;return async function(o){let{payload:a,signal:i}=o,u=t(a);if(u===void 0)return await e(o);if(r||(Promise.resolve().then(()=>{r=void 0;}),r={}),r[u]==null){let l=new AbortController;r[u]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let d=r[u];if(d.numConsumers++,i){let l=d.responsePromise;return await new Promise((f,m)=>{let M=We=>{i.removeEventListener("abort",M),d.numConsumers-=1,d.numConsumers===0&&d.abortController.abort();let qe=new DOMException(We.target.reason,"AbortError");m(qe);};i.addEventListener("abort",M),l.then(f).finally(()=>{i.removeEventListener("abort",M);});})}else return await d.responsePromise}}c();var Ve=ot(He(),1);function Ge(e){if(!(e==null||typeof e!="object"||Array.isArray(e))&&"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&"params"in e)return (0, Ve.default)([e.method,e.params])}function lr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function xs(e){return Ke(Ue({...e,headers:{...e.headers?lr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),Ge)}
10
10
 
11
- exports.AccountRole = qe;
12
- exports.appendTransactionInstruction = fo;
13
- exports.assertIsBase58EncodedAddress = Qn;
14
- exports.assertIsBlockhash = io;
15
- exports.assertIsDurableNonceTransaction = uo;
16
- exports.createDefaultRpcTransport = Go;
17
- exports.createSolanaRpc = Lo;
18
- exports.createTransaction = co;
19
- exports.downgradeRoleToNonSigner = Zr;
20
- exports.downgradeRoleToReadonly = Qr;
21
- exports.generateKeyPair = eo;
22
- exports.getBase58EncodedAddressCodec = q;
23
- exports.getBase58EncodedAddressComparator = Y;
24
- exports.getBase58EncodedAddressFromPublicKey = me;
25
- exports.getBase64EncodedWireTransaction = ho;
26
- exports.isSignerRole = et;
27
- exports.isWritableRole = rt;
28
- exports.mergeRoles = tt;
29
- exports.prependTransactionInstruction = mo;
30
- exports.setTransactionFeePayer = po;
31
- exports.setTransactionLifetimeUsingBlockhash = ao;
32
- exports.setTransactionLifetimeUsingDurableNonce = lo;
33
- exports.signBytes = ge;
34
- exports.signTransaction = go;
35
- exports.upgradeRoleToSigner = nt;
36
- exports.upgradeRoleToWritable = ot;
37
- exports.verifySignature = ro;
11
+ exports.AccountRole = wt;
12
+ exports.appendTransactionInstruction = Fo;
13
+ exports.assertIsBase58EncodedAddress = lo;
14
+ exports.assertIsBlockhash = _o;
15
+ exports.assertIsDurableNonceTransaction = Lo;
16
+ exports.createDefaultRpcTransport = xs;
17
+ exports.createSolanaRpc = as;
18
+ exports.createTransaction = Po;
19
+ exports.downgradeRoleToNonSigner = ho;
20
+ exports.downgradeRoleToReadonly = bo;
21
+ exports.generateKeyPair = zo;
22
+ exports.getAddressFromPublicKey = ve;
23
+ exports.getBase58EncodedAddressCodec = $;
24
+ exports.getBase58EncodedAddressComparator = ee;
25
+ exports.getBase64EncodedWireTransaction = Ko;
26
+ exports.getProgramDerivedAddress = fo;
27
+ exports.isSignerRole = xo;
28
+ exports.isWritableRole = yo;
29
+ exports.mergeRoles = wo;
30
+ exports.prependTransactionInstruction = Uo;
31
+ exports.setTransactionFeePayer = $o;
32
+ exports.setTransactionLifetimeUsingBlockhash = Oo;
33
+ exports.setTransactionLifetimeUsingDurableNonce = Do;
34
+ exports.signBytes = ze;
35
+ exports.signTransaction = jo;
36
+ exports.upgradeRoleToSigner = Eo;
37
+ exports.upgradeRoleToWritable = Ao;
38
+ exports.verifySignature = Ro;
38
39
 
39
40
  return exports;
40
41
 
@@ -1,3 +1,4 @@
1
+ export * from '@solana/addresses';
1
2
  export * from '@solana/instructions';
2
3
  export * from '@solana/keys';
3
4
  export * from '@solana/transactions';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/web3.js",
3
- "version": "2.0.0-experimental.b927e84",
3
+ "version": "2.0.0-experimental.bac4a66",
4
4
  "description": "Solana Javascript API",
5
5
  "exports": {
6
6
  "browser": {
@@ -50,32 +50,29 @@
50
50
  ],
51
51
  "dependencies": {
52
52
  "fast-stable-stringify": "^1.0.0",
53
- "@solana/instructions": "2.0.0-experimental.b927e84",
54
- "@solana/keys": "2.0.0-experimental.b927e84",
55
- "@solana/rpc-core": "2.0.0-experimental.b927e84",
56
- "@solana/rpc-transport": "2.0.0-experimental.b927e84",
57
- "@solana/transactions": "2.0.0-experimental.b927e84"
53
+ "@solana/addresses": "2.0.0-experimental.bac4a66",
54
+ "@solana/instructions": "2.0.0-experimental.bac4a66",
55
+ "@solana/keys": "2.0.0-experimental.bac4a66",
56
+ "@solana/rpc-core": "2.0.0-experimental.bac4a66",
57
+ "@solana/rpc-transport": "2.0.0-experimental.bac4a66",
58
+ "@solana/transactions": "2.0.0-experimental.bac4a66"
58
59
  },
59
60
  "devDependencies": {
60
61
  "@solana/eslint-config-solana": "^1.0.2",
61
- "@swc/core": "^1.3.71",
62
- "@swc/jest": "^0.2.26",
62
+ "@swc/jest": "^0.2.28",
63
63
  "@types/jest": "^29.5.3",
64
- "@typescript-eslint/eslint-plugin": "^6.0.0",
65
- "@typescript-eslint/parser": "^6.0.0",
64
+ "@typescript-eslint/eslint-plugin": "^6.3.0",
65
+ "@typescript-eslint/parser": "^6.3.0",
66
66
  "agadoo": "^3.0.0",
67
67
  "eslint": "^8.45.0",
68
68
  "eslint-plugin-jest": "^27.2.3",
69
- "eslint-plugin-react-hooks": "^4.6.0",
70
69
  "eslint-plugin-sort-keys-fix": "^1.1.2",
71
70
  "jest": "^29.6.1",
72
- "jest-environment-jsdom": "^29.6.0",
71
+ "jest-environment-jsdom": "^29.6.2",
73
72
  "jest-runner-eslint": "^2.1.0",
74
73
  "jest-runner-prettier": "^1.0.0",
75
- "postcss": "^8.4.12",
76
- "prettier": "^2.8.8",
77
- "ts-node": "^10.9.1",
78
- "tsup": "6.7.0",
74
+ "prettier": "^2.8",
75
+ "tsup": "7.2.0",
79
76
  "typescript": "^5.1.6",
80
77
  "version-from-git": "^1.1.1",
81
78
  "build-scripts": "0.0.0",