@solana/web3.js 2.0.0-experimental.a8f1f88 → 2.0.0-experimental.a9e6db3

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 +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","../src/rpc-websocket-transport.ts","../src/rpc-websocket-autopinger.ts"],"names":["args"],"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';\nexport * from './rpc-websocket-transport';\n","import {\n createSolanaRpcApi,\n createSolanaRpcSubscriptionsApi,\n SolanaRpcMethods,\n SolanaRpcSubscriptions,\n} from '@solana/rpc-core';\nimport { createJsonRpc, createJsonSubscriptionRpc } from '@solana/rpc-transport';\nimport type { Rpc, RpcSubscriptions } 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({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n\nexport function createSolanaRpcSubscriptions(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions> {\n return createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi(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","import { createWebSocketTransport } from '@solana/rpc-transport';\nimport { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getWebSocketTransportWithAutoping } from './rpc-websocket-autopinger';\n\nexport function createDefaultRpcSubscriptionsTransport(\n config: Omit<Parameters<typeof createWebSocketTransport>[0], 'sendBufferHighWatermark'> & {\n intervalMs?: number;\n sendBufferHighWatermark?: number;\n }\n): IRpcWebSocketTransport {\n const { intervalMs, ...rest } = config;\n return getWebSocketTransportWithAutoping({\n intervalMs: intervalMs ?? 5_000,\n transport: createWebSocketTransport({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n }),\n });\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype Config = Readonly<{\n intervalMs: number;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getWebSocketTransportWithAutoping({ intervalMs, transport }: Config): IRpcWebSocketTransport {\n const pingableConnections = new Map<\n Awaited<ReturnType<IRpcWebSocketTransport>>,\n Awaited<ReturnType<IRpcWebSocketTransport>>\n >();\n return async (...args) => {\n const connection = await transport(...args);\n let intervalId: string | number | NodeJS.Timeout | undefined;\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(() => {\n connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(PING_PAYLOAD);\n }, intervalMs);\n }\n if (pingableConnections.has(connection) === false) {\n pingableConnections.set(connection, {\n [Symbol.asyncIterator]: connection[Symbol.asyncIterator].bind(connection),\n send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: (\n ...args: Parameters<typeof connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED>\n ) => {\n restartPingTimer();\n return connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...args);\n },\n });\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of connection) {\n restartPingTimer();\n }\n } catch {\n /* empty */\n } finally {\n pingableConnections.delete(connection);\n clearInterval(intervalId);\n }\n })();\n restartPingTimer();\n }\n return pingableConnections.get(connection)!;\n };\n}\n"]}
1
+ {"version":3,"sources":["../../build-scripts/env-shim.ts","../src/index.ts","../src/transaction-confirmation-strategy-racer.ts","../src/transaction-confirmation-strategy-recent-signature.ts","../src/transaction-confirmation-strategy-timeout.ts","../src/airdrop-confirmer.ts","../src/airdrop.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/cached-abortable-iterable.ts","../src/rpc-subscription-coalescer.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts","../src/rpc-websocket-transport.ts","../src/rpc-websocket-autopinger.ts","../src/rpc-websocket-connection-sharding.ts","../src/transaction-confirmation.ts","../src/transaction-confirmation-strategy-blockheight.ts","../src/transaction-confirmation-strategy-nonce.ts"],"names":["getTimeoutPromise","registerIterableCleanup","deduplicationKey","pendingSubscription","pipe","fastStableStringify","args"],"mappings":"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","sourcesContent":["// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV`\nexport const __DEV__ = /* @__PURE__ */ (() => (process as any)['en' + 'v'].NODE_ENV === 'development')();\n","export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './airdrop';\nexport * from './rpc';\nexport * from './rpc-transport';\nexport * from './rpc-websocket-transport';\nexport * from './transaction-confirmation';\nexport * from './transaction-confirmation-strategy-blockheight';\nexport * from './transaction-confirmation-strategy-nonce';\nexport * from './transaction-confirmation-strategy-recent-signature';\n","import { Commitment } from '@solana/rpc-core';\nimport { TransactionSignature } from '@solana/transactions';\n\nimport { createRecentSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-recent-signature';\n\nexport interface BaseTransactionConfirmationStrategyConfig {\n abortSignal: AbortSignal;\n commitment: Commitment;\n getRecentSignatureConfirmationPromise: ReturnType<typeof createRecentSignatureConfirmationPromiseFactory>;\n}\n\nexport async function raceStrategies<TConfig extends BaseTransactionConfirmationStrategyConfig>(\n signature: TransactionSignature,\n config: TConfig,\n getSpecificStrategiesForRace: (config: TConfig) => readonly Promise<unknown>[]\n) {\n const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config;\n callerAbortSignal.throwIfAborted();\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n try {\n const specificStrategies = getSpecificStrategiesForRace({\n ...config,\n abortSignal: abortController.signal,\n });\n return await Promise.race([\n getRecentSignatureConfirmationPromise({\n abortSignal: abortController.signal,\n commitment,\n signature,\n }),\n ...specificStrategies,\n ]);\n } finally {\n abortController.abort();\n }\n}\n","import { Commitment, commitmentComparator } from '@solana/rpc-core';\nimport { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { TransactionSignature } from '@solana/transactions';\n\ntype GetRecentSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n signature: TransactionSignature;\n}) => Promise<void>;\n\nexport function createRecentSignatureConfirmationPromiseFactory(\n rpc: Rpc<GetSignatureStatusesApi>,\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>\n): GetRecentSignatureConfirmationPromiseFn {\n return async function getRecentSignatureConfirmationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n signature,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for status changes to a signature.\n */\n const signatureStatusNotifications = await rpcSubscriptions\n .signatureNotifications(signature, { commitment })\n .subscribe({ abortSignal: abortController.signal });\n const signatureDidCommitPromise = (async () => {\n for await (const signatureStatusNotification of signatureStatusNotifications) {\n if (signatureStatusNotification.value.err) {\n // TODO: Coded error.\n throw new Error(`The transaction with signature \\`${signature}\\` failed.`, {\n cause: signatureStatusNotification.value.err,\n });\n } else {\n return;\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current status.\n * This will only yield a result if the signature is still in the status cache.\n */\n const signatureStatusLookupPromise = (async () => {\n const { value: signatureStatusResults } = await rpc\n .getSignatureStatuses([signature])\n .send({ abortSignal: abortController.signal });\n const signatureStatus = signatureStatusResults[0];\n if (\n signatureStatus &&\n signatureStatus.confirmationStatus &&\n commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0\n ) {\n return;\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await Promise.race([signatureDidCommitPromise, signatureStatusLookupPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import { Commitment } from '@solana/rpc-core';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n commitment: Commitment;\n}>;\n\nexport async function getTimeoutPromise({ abortSignal: callerAbortSignal, commitment }: Config) {\n return await new Promise((_, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n clearTimeout(timeoutId);\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n callerAbortSignal.addEventListener('abort', handleAbort);\n const timeoutMs = commitment === 'processed' ? 30_000 : 60_000;\n const startMs = performance.now();\n const timeoutId =\n // We use `setTimeout` instead of `AbortSignal.timeout()` because we want to measure\n // elapsed time instead of active time.\n // See https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n setTimeout(() => {\n const elapsedMs = performance.now() - startMs;\n reject(new DOMException(`Timeout elapsed after ${elapsedMs} ms`, 'TimeoutError'));\n }, timeoutMs);\n });\n}\n","import { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { TransactionSignature } from '@solana/transactions';\n\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './transaction-confirmation-strategy-racer';\nimport { createRecentSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-recent-signature';\nimport { getTimeoutPromise } from './transaction-confirmation-strategy-timeout';\n\ninterface DefaultSignatureOnlyRecentTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;\n}\n\ninterface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getTimeoutPromise: typeof getTimeoutPromise;\n signature: TransactionSignature;\n}\n\n/** @deprecated */\nexport function createDefaultSignatureOnlyRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultSignatureOnlyRecentTransactionConfirmerConfig) {\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions\n );\n return async function confirmSignatureOnlyRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >\n ) {\n await waitForRecentTransactionConfirmationUntilTimeout({\n ...config,\n getRecentSignatureConfirmationPromise,\n getTimeoutPromise,\n });\n };\n}\n\n/** @deprecated */\nexport async function waitForRecentTransactionConfirmationUntilTimeout(\n config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n config.signature,\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getTimeoutPromise }) {\n return [\n getTimeoutPromise({\n abortSignal,\n commitment,\n }),\n ];\n }\n );\n}\n","import { Base58EncodedAddress } from '@solana/addresses';\nimport { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-core';\nimport { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { RequestAirdropApi } from '@solana/rpc-core/dist/types/rpc-methods/requestAirdrop';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { TransactionSignature } from '@solana/transactions';\n\nimport { createDefaultSignatureOnlyRecentTransactionConfirmer } from './airdrop-confirmer';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n commitment: Commitment;\n lamports: LamportsUnsafeBeyond2Pow53Minus1;\n recipientAddress: Base58EncodedAddress;\n rpc: Rpc<RequestAirdropApi & GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;\n}>;\n\nexport async function requestAndConfirmAirdrop({\n abortSignal,\n commitment,\n lamports,\n recipientAddress,\n rpc,\n rpcSubscriptions,\n}: Config): Promise<TransactionSignature> {\n const airdropTransactionSignature = (await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal })) as unknown as TransactionSignature;\n const confirmSignatureOnlyTransaction = createDefaultSignatureOnlyRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n });\n await confirmSignatureOnlyTransaction({\n abortSignal,\n commitment,\n signature: airdropTransactionSignature,\n });\n return airdropTransactionSignature;\n}\n","import { pipe } from '@solana/functional';\nimport {\n createSolanaRpcApi,\n createSolanaRpcSubscriptionsApi,\n createSolanaRpcSubscriptionsApi_UNSTABLE,\n SolanaRpcMethods,\n SolanaRpcSubscriptions,\n SolanaRpcSubscriptionsUnstable,\n} from '@solana/rpc-core';\nimport { createJsonRpc, createJsonSubscriptionRpc } from '@solana/rpc-transport';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { getRpcSubscriptionsWithSubscriptionCoalescing } from './rpc-subscription-coalescer';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n\nexport function createSolanaRpcSubscriptions(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions> {\n return pipe(\n createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi(DEFAULT_RPC_CONFIG),\n }),\n rpcSubscriptions =>\n getRpcSubscriptionsWithSubscriptionCoalescing({\n getDeduplicationKey: (...args) => fastStableStringify(args),\n rpcSubscriptions,\n })\n );\n}\n\nexport function createSolanaRpcSubscriptions_UNSTABLE(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions & SolanaRpcSubscriptionsUnstable> {\n return createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi_UNSTABLE(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","type CacheEntry<TIterable extends AsyncIterable<unknown>> = {\n abortController: AbortController;\n iterable: Promise<TIterable> | TIterable;\n purgeScheduled: boolean;\n referenceCount: number;\n};\ntype CacheKey = string | symbol;\ntype Config<TInput extends unknown[], TIterable extends AsyncIterable<unknown>> = Readonly<{\n getAbortSignalFromInputArgs: (...args: TInput) => AbortSignal;\n getCacheEntryMissingError: (cacheKey: CacheKey) => Error;\n getCacheKeyFromInputArgs: (...args: TInput) =>\n | CacheKey\n // `undefined` implies 'do not cache'\n | undefined;\n onCacheHit: (iterable: TIterable, ...args: TInput) => Promise<void>;\n onCreateIterable: (abortSignal: AbortSignal, ...args: TInput) => Promise<TIterable>;\n}>;\n\nfunction registerIterableCleanup(iterable: AsyncIterable<unknown>, cleanupFn: CallableFunction) {\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of iterable);\n } catch {\n /* empty */\n } finally {\n // Run the cleanup function.\n cleanupFn();\n }\n })();\n}\n\nexport function getCachedAbortableIterableFactory<TInput extends unknown[], TIterable extends AsyncIterable<unknown>>({\n getAbortSignalFromInputArgs,\n getCacheEntryMissingError,\n getCacheKeyFromInputArgs,\n onCacheHit,\n onCreateIterable,\n}: Config<TInput, TIterable>): (...args: TInput) => Promise<TIterable> {\n const cache = new Map<CacheKey, CacheEntry<TIterable>>();\n function getCacheEntryOrThrow(cacheKey: CacheKey) {\n const currentCacheEntry = cache.get(cacheKey);\n if (!currentCacheEntry) {\n throw getCacheEntryMissingError(cacheKey);\n }\n return currentCacheEntry;\n }\n return async (...args: TInput) => {\n const cacheKey = getCacheKeyFromInputArgs(...args);\n const signal = getAbortSignalFromInputArgs(...args);\n if (cacheKey === undefined) {\n return await onCreateIterable(signal, ...args);\n }\n const cleanup = () => {\n cache.delete(cacheKey);\n signal.removeEventListener('abort', handleAbort);\n };\n const handleAbort = () => {\n const cacheEntry = getCacheEntryOrThrow(cacheKey);\n if (cacheEntry.purgeScheduled !== true) {\n cacheEntry.purgeScheduled = true;\n globalThis.queueMicrotask(() => {\n cacheEntry.purgeScheduled = false;\n if (cacheEntry.referenceCount === 0) {\n cacheEntry.abortController.abort();\n cleanup();\n }\n });\n }\n cacheEntry.referenceCount--;\n };\n signal.addEventListener('abort', handleAbort);\n try {\n const cacheEntry = cache.get(cacheKey);\n if (!cacheEntry) {\n const singletonAbortController = new AbortController();\n const newIterablePromise = onCreateIterable(singletonAbortController.signal, ...args);\n const newCacheEntry: CacheEntry<TIterable> = {\n abortController: singletonAbortController,\n iterable: newIterablePromise,\n purgeScheduled: false,\n referenceCount: 1,\n };\n cache.set(cacheKey, newCacheEntry);\n const newIterable = await newIterablePromise;\n registerIterableCleanup(newIterable, cleanup);\n newCacheEntry.iterable = newIterable;\n return newIterable;\n } else {\n cacheEntry.referenceCount++;\n const iterableOrIterablePromise = cacheEntry.iterable;\n const cachedIterable =\n 'then' in iterableOrIterablePromise ? await iterableOrIterablePromise : iterableOrIterablePromise;\n await onCacheHit(cachedIterable, ...args);\n return cachedIterable;\n }\n } catch (e) {\n cleanup();\n throw e;\n }\n };\n}\n","import { PendingRpcSubscription, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\ntype CacheKey = string | undefined;\ntype Config<TRpcSubscriptionsMethods> = Readonly<{\n getDeduplicationKey: GetDeduplicationKeyFn;\n rpcSubscriptions: RpcSubscriptions<TRpcSubscriptionsMethods>;\n}>;\ntype GetDeduplicationKeyFn = (subscriptionMethod: string | symbol, payload: unknown) => CacheKey;\n\nconst EXPLICIT_ABORT_TOKEN = Symbol(\n __DEV__\n ? \"This symbol is thrown from a subscription's iterator when the subscription is \" +\n 'explicitly aborted by the user'\n : undefined\n);\n\nfunction registerIterableCleanup(iterable: AsyncIterable<unknown>, cleanupFn: CallableFunction) {\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of iterable);\n } catch {\n /* empty */\n } finally {\n // Run the cleanup function.\n cleanupFn();\n }\n })();\n}\n\nexport function getRpcSubscriptionsWithSubscriptionCoalescing<TRpcSubscriptionsMethods>({\n getDeduplicationKey,\n rpcSubscriptions,\n}: Config<TRpcSubscriptionsMethods>): RpcSubscriptions<TRpcSubscriptionsMethods> {\n const cache = new Map<CacheKey, PendingRpcSubscription<unknown>>();\n return new Proxy(rpcSubscriptions, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n const subscriptionMethod = Reflect.get(target, p, receiver);\n if (typeof subscriptionMethod !== 'function') {\n return subscriptionMethod;\n }\n return function (...rawParams: unknown[]) {\n const deduplicationKey = getDeduplicationKey(p, rawParams);\n if (deduplicationKey === undefined) {\n return (subscriptionMethod as CallableFunction)(...rawParams);\n }\n if (cache.has(deduplicationKey)) {\n return cache.get(deduplicationKey)!;\n }\n const iterableFactory = getCachedAbortableIterableFactory<\n Parameters<PendingRpcSubscription<unknown>['subscribe']>,\n AsyncIterable<unknown>\n >({\n getAbortSignalFromInputArgs: ({ abortSignal }) => abortSignal,\n getCacheEntryMissingError(deduplicationKey) {\n // TODO: Coded error.\n return new Error(\n `Found no cache entry for subscription with deduplication key \\`${deduplicationKey?.toString()}\\``\n );\n },\n getCacheKeyFromInputArgs: () => deduplicationKey,\n async onCacheHit(_iterable, _config) {\n /**\n * This transport's goal is to prevent duplicate subscriptions from\n * being made. If a cached iterable] is found, do not send the subscribe\n * message again.\n */\n },\n async onCreateIterable(abortSignal, config) {\n const pendingSubscription = (subscriptionMethod as CallableFunction)(\n ...rawParams\n ) as PendingRpcSubscription<unknown>;\n const iterable = await pendingSubscription.subscribe({\n ...config,\n abortSignal,\n });\n registerIterableCleanup(iterable, () => {\n cache.delete(deduplicationKey);\n });\n return iterable;\n },\n });\n const pendingSubscription: PendingRpcSubscription<unknown> = {\n async subscribe(...args) {\n const iterable = await iterableFactory(...args);\n const { abortSignal } = args[0];\n let abortPromise;\n return {\n ...iterable,\n async *[Symbol.asyncIterator]() {\n abortPromise ||= abortSignal.aborted\n ? Promise.reject(EXPLICIT_ABORT_TOKEN)\n : new Promise<never>((_, reject) => {\n abortSignal.addEventListener('abort', () => {\n reject(EXPLICIT_ABORT_TOKEN);\n });\n });\n try {\n const iterator = iterable[Symbol.asyncIterator]();\n while (true) {\n const iteratorResult = await Promise.race([iterator.next(), abortPromise]);\n if (iteratorResult.done) {\n return;\n } else {\n yield iteratorResult.value;\n }\n }\n } catch (e) {\n if (e === EXPLICIT_ABORT_TOKEN) {\n return;\n }\n cache.delete(deduplicationKey);\n throw e;\n }\n },\n };\n },\n };\n cache.set(deduplicationKey, pendingSubscription);\n return pendingSubscription;\n };\n },\n });\n}\n","import { pipe } from '@solana/functional';\nimport { 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 pipe(\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 transport => getRpcTransportWithRequestCoalescing(transport, 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\nfunction isJsonRpcPayload(payload: unknown): payload is Readonly<{ method: string; params: unknown }> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n","import { pipe } from '@solana/functional';\nimport { createWebSocketTransport } from '@solana/rpc-transport';\nimport { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getWebSocketTransportWithAutoping } from './rpc-websocket-autopinger';\nimport { getWebSocketTransportWithConnectionSharding } from './rpc-websocket-connection-sharding';\n\nexport function createDefaultRpcSubscriptionsTransport(\n config: Omit<Parameters<typeof createWebSocketTransport>[0], 'sendBufferHighWatermark'> & {\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows\n * for. Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string;\n intervalMs?: number;\n sendBufferHighWatermark?: number;\n }\n): IRpcWebSocketTransport {\n const { getShard, intervalMs, ...rest } = config;\n return pipe(\n createWebSocketTransport({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n }),\n transport =>\n getWebSocketTransportWithAutoping({\n intervalMs: intervalMs ?? 5_000,\n transport,\n }),\n transport =>\n getWebSocketTransportWithConnectionSharding({\n getShard,\n transport,\n })\n );\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype Config = Readonly<{\n intervalMs: number;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getWebSocketTransportWithAutoping({ intervalMs, transport }: Config): IRpcWebSocketTransport {\n const pingableConnections = new Map<\n Awaited<ReturnType<IRpcWebSocketTransport>>,\n Awaited<ReturnType<IRpcWebSocketTransport>>\n >();\n return async (...args) => {\n const connection = await transport(...args);\n let intervalId: string | number | NodeJS.Timeout | undefined;\n function sendPing() {\n connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(PING_PAYLOAD);\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n if (pingableConnections.has(connection) === false) {\n pingableConnections.set(connection, {\n [Symbol.asyncIterator]: connection[Symbol.asyncIterator].bind(connection),\n send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: (\n ...args: Parameters<typeof connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED>\n ) => {\n restartPingTimer();\n return connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...args);\n },\n });\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of connection) {\n restartPingTimer();\n }\n } catch {\n /* empty */\n } finally {\n pingableConnections.delete(connection);\n clearInterval(intervalId);\n if (handleOffline) {\n globalThis.window.removeEventListener('offline', handleOffline);\n }\n if (handleOnline) {\n globalThis.window.removeEventListener('online', handleOnline);\n }\n }\n })();\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n let handleOffline;\n let handleOnline;\n if (__BROWSER__) {\n handleOffline = () => {\n clearInterval(intervalId);\n };\n handleOnline = () => {\n sendPing();\n restartPingTimer();\n };\n globalThis.window.addEventListener('offline', handleOffline);\n globalThis.window.addEventListener('online', handleOnline);\n }\n }\n return pingableConnections.get(connection)!;\n };\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\ntype Config = Readonly<{\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows for.\n * Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string | symbol;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst NULL_SHARD_CACHE_KEY = Symbol(\n __DEV__ ? 'Cache key to use when there is no connection sharding strategy' : undefined\n);\n\nexport function getWebSocketTransportWithConnectionSharding({ getShard, transport }: Config): IRpcWebSocketTransport {\n return getCachedAbortableIterableFactory({\n getAbortSignalFromInputArgs: ({ signal }) => signal,\n getCacheEntryMissingError(shardKey) {\n // TODO: Coded error.\n return new Error(`Found no cache entry for connection with shard key \\`${shardKey?.toString()}\\``);\n },\n getCacheKeyFromInputArgs: ({ payload }) => (getShard ? getShard(payload) : NULL_SHARD_CACHE_KEY),\n onCacheHit: (connection, { payload }) => connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(payload),\n onCreateIterable: (abortSignal, config) =>\n transport({\n ...config,\n signal: abortSignal,\n }),\n });\n}\n","import { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport type { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport type { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport type { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport type { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport {\n getSignatureFromTransaction,\n IDurableNonceTransaction,\n ITransactionWithFeePayer,\n ITransactionWithSignatures,\n} from '@solana/transactions';\n\nimport { createBlockHeightExceedencePromiseFactory } from './transaction-confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './transaction-confirmation-strategy-nonce';\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './transaction-confirmation-strategy-racer';\nimport { createRecentSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-recent-signature';\n\ninterface DefaultDurableNonceTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi & GetAccountInfoApi>;\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi>;\n}\n\ninterface DefaultRecentTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;\n}\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {\n getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;\n transaction: ITransactionWithFeePayer & ITransactionWithSignatures & IDurableNonceTransaction;\n}\n\ninterface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;\n transaction: ITransactionWithFeePayer &\n ITransactionWithSignatures &\n Readonly<{\n lifetimeConstraint: {\n lastValidBlockHeight: Slot;\n };\n }>;\n}\n\nexport function createDefaultDurableNonceTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultDurableNonceTransactionConfirmerConfig) {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory(rpc, rpcSubscriptions);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions\n );\n return async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n };\n}\n\nexport function createDefaultRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultRecentTransactionConfirmerConfig) {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory(rpcSubscriptions);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions\n );\n return async function confirmRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n };\n}\n\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.instructions[0].accounts[0].address,\n }),\n ];\n }\n );\n}\n\nexport async function waitForRecentTransactionConfirmation(\n config: WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, getBlockHeightExceedencePromise, transaction }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n }\n );\n}\n","import { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport { RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n lastValidBlockHeight: Slot;\n}) => Promise<void>;\n\nexport function createBlockHeightExceedencePromiseFactory(\n rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi>\n): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({ abortSignal: callerAbortSignal, lastValidBlockHeight }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n const slotNotifications = await rpcSubscriptions\n .slotNotifications()\n .subscribe({ abortSignal: abortController.signal });\n try {\n for await (const slotNotification of slotNotifications) {\n if (slotNotification.slot > lastValidBlockHeight) {\n // TODO: Coded error.\n throw new Error(\n 'The network has progressed past the last block for which this transaction ' +\n 'could have committed.'\n );\n }\n }\n } finally {\n abortController.abort();\n }\n };\n}\n","import { base58, base64 } from '@metaplex-foundation/umi-serializers';\nimport { Base58EncodedAddress } from '@solana/addresses';\nimport { Commitment } from '@solana/rpc-core';\nimport { Base64EncodedDataResponse } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { Nonce } from '@solana/transactions';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n currentNonceValue: Nonce;\n nonceAccountAddress: Base58EncodedAddress;\n}) => Promise<void>;\n\nconst NONCE_VALUE_OFFSET =\n 4 + // version(u32)\n 4 + // state(u32)\n 32; // nonce authority(pubkey)\n// Then comes the nonce value.\n\nexport function createNonceInvalidationPromiseFactory(\n rpc: Rpc<GetAccountInfoApi>,\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi>\n): GetNonceInvalidationPromiseFn {\n return async function getNonceInvalidationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n currentNonceValue,\n nonceAccountAddress,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for nonce account changes.\n */\n const accountNotifications = await rpcSubscriptions\n .accountNotifications(nonceAccountAddress, { commitment, encoding: 'base64' })\n .subscribe({ abortSignal: abortController.signal });\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64.serialize(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58.deserialize(nonceValueBytes)[0] as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced ` +\n `to \\`${nonceValue}\\`.`\n );\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new Error(`No nonce account could be found at address \\`${nonceAccountAddress}\\`.`);\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced to \\`${nonceValue}\\`.`\n );\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await Promise.race([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n"]}
@@ -2,43 +2,63 @@ this.globalThis = this.globalThis || {};
2
2
  this.globalThis.solanaWeb3 = (function (exports) {
3
3
  'use strict';
4
4
 
5
- var ft=Object.create;var de=Object.defineProperty;var mt=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var bt=Object.getPrototypeOf,ht=Object.prototype.hasOwnProperty;var yt=(e,t,r)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var wt=(e,t)=>()=>(e&&(t=e(e=0)),t);var St=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Et=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of gt(t))!ht.call(e,o)&&o!==r&&de(e,o,{get:()=>t[o],enumerable:!(n=mt(t,o))||n.enumerable});return e};var xt=(e,t,r)=>(r=e!=null?ft(bt(e)):{},Et(t||!e||!e.__esModule?de(r,"default",{value:e,enumerable:!0}):r,e));var I=(e,t,r)=>(yt(e,typeof t!="symbol"?t+"":t,r),r);var a=wt(()=>{});var ct=St((Bs,at)=>{a();var vr=Object.prototype.toString,_r=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};function J(e,t){var r,n,o,s,i,c,l;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 J(e.toJSON(),t);if(l=vr.call(e),l==="[object Array]"){for(o="[",n=e.length-1,r=0;r<n;r++)o+=J(e[r],!0)+",";return n>-1&&(o+=J(e[r],!0)),o+"]"}else if(l==="[object Object]"){for(s=_r(e).sort(),n=s.length,o="",r=0;r<n;)i=s[r],c=J(e[i],!1),c!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+c),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}}at.exports=function(e){var t=J(e,!1);if(t!==void 0)return ""+t};});a();a();a();a();a();var N=e=>{let t=e.reduce((o,s)=>o+s.length,0),r=new Uint8Array(t),n=0;return e.forEach(o=>{r.set(o,n),n+=o.length;}),r},Ie=(e,t)=>{if(e.length>=t)return e;let r=new Uint8Array(t).fill(0);return r.set(e),r},X=(e,t)=>Ie(e.slice(0,t),t);a();var k=class extends Error{constructor(r){super(`Serializer [${r}] cannot deserialize empty buffers.`);I(this,"name","DeserializingEmptyBufferError");}},R=class extends Error{constructor(r,n,o){super(`Serializer [${r}] expected ${n} bytes, got ${o}.`);I(this,"name","NotEnoughBytesError");}},L=class extends Error{constructor(r){r??(r="Expected a fixed-size serializer, got a variable-size one.");super(r);I(this,"name","ExpectedFixedSizeSerializerError");}};a();function F(e,t,r){return {description:r??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t,serialize:n=>X(e.serialize(n),t),deserialize:(n,o=0)=>{if(n=n.slice(o,o+t),n.length<t)throw new R("fixSerializer",t,n.length);e.fixedSize!==null&&(n=X(n,e.fixedSize));let[s]=e.deserialize(n,0);return [s,o+t]}}}a();function Z(e,t,r){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(t(n)),deserialize:(n,o=0)=>{let[s,i]=e.deserialize(n,o);return r?[r(s,n,o),i]:[s,i]}}}a();a();a();var Q=class extends Error{constructor(r,n,o){let s=`Expected a string of base ${n}, got [${r}].`;super(s);I(this,"name","InvalidBaseStringError");this.cause=o;}};var Te=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 Q(n,t);if(n==="")return new Uint8Array;let o=[...n],s=o.findIndex(m=>m!==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),l=0n,d=1n;for(let m=c.length-1;m>=0;m-=1)l+=d*BigInt(e.indexOf(c[m])),d*=r;let p=[];for(;l>0n;)p.unshift(Number(l%256n)),l/=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 l=s.slice(i).reduce((p,m)=>p*256n+BigInt(m),0n),d=[];for(;l>0n;)d.unshift(e[Number(l%r)]),l/=r;return [c+d.join(""),n.length]}}};a();var D=Te("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");a();var Re=e=>e.replace(/\u0000/g,"");a();var pe={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 [Re(r),e.length]}};a();a();var ee;(function(e){e.Little="le",e.Big="be";})(ee||(ee={}));a();var te=class extends RangeError{constructor(r,n,o,s){super(`Serializer [${r}] expected number to be between ${n} and ${o}, got ${s}.`);I(this,"name","NumberOutOfRangeError");}};a();function re(e){let t,r=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===ee.Little,r+=t?"(le)":"(be)"),{description:e.options.description??r,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&fe(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 s=n.slice(o,o+e.size);Tt("i8",s,e.size);let i=It(s);return [e.get(i,t),o+e.size]}}}var At=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),It=e=>new DataView(At(e)),fe=(e,t,r,n)=>{if(n<t||n>r)throw new te(e,t,r,n)},Tt=(e,t,r)=>{if(t.length===0)throw new k(e);if(t.length<r)throw new R(e,r,t.length)};a();var O=(e={})=>re({name:"u8",size:1,range:[0,+"0xff"],set:(t,r)=>t.setUint8(0,Number(r)),get:t=>t.getUint8(0),options:e});a();var j=(e={})=>re({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});a();var v=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:t=>{fe("shortU16",0,65535,t);let r=[0];for(let n=0;;n+=1){let o=t>>n*7;if(o===0)break;let s=127&o;r[n]=s,n>0&&(r[n-1]|=128);}return new Uint8Array(r)},deserialize:(t,r=0)=>{let n=0,o=0;for(;++o;){let s=o-1,i=t[r+s],c=127&i;if(n|=c<<s*7,!(i&128))break}return [n,r+o]}});a();a();var ne=class extends Error{constructor(r,n,o){super(`Expected [${r}] to have ${n} items, got ${o}.`);I(this,"name","InvalidNumberOfItemsError");}},oe=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.`);I(this,"name","InvalidArrayLikeRemainderSizeError");}},se=class extends Error{constructor(r){super(`Unrecognized array-like serializer size: ${JSON.stringify(r)}`);I(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};a();a();function $(e){return e.reduce((t,r)=>t===null||r===null?null:t+r,0)}function ze(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=$(t);if(o===null)throw new L('Serializers of "remainder" size must have fixed-size items.');let s=r.slice(n).length;if(s%o!==0)throw new oe(s,o);return [s/o,n]}throw new se(e)}function U(e){return typeof e=="object"?e.description:`${e}`}function me(e,t){if(typeof e!="number")return null;if(e===0)return 0;let r=$(t);return r===null?null:r*e}function ve(e,t){return typeof e=="object"?e.serialize(t):new Uint8Array}function B(e,t={}){let r=t.size??j();if(r==="remainder"&&e.fixedSize===null)throw new L('Serializers of "remainder" size must have fixed-size items.');return {description:t.description??`array(${e.description}; ${U(r)})`,fixedSize:me(r,[e.fixedSize]),maxSize:me(r,[e.maxSize]),serialize:n=>{if(typeof r=="number"&&n.length!==r)throw new ne("array",r,n.length);return N([ve(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[s,i]=ze(r,[e.fixedSize],n,o);o=i;let c=[];for(let l=0;l<s;l+=1){let[d,p]=e.deserialize(n,o);c.push(d),o=p;}return [c,o]}}}a();function ie(e={}){let t=e.size??"variable",r=e.description??`bytes(${U(t)})`,n={description:r,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,s=0)=>{let i=o.slice(s);return [i,s+i.length]}};return t==="variable"?n:typeof t=="number"?F(n,t,r):{description:r,fixedSize:null,maxSize:null,serialize:o=>{let s=n.serialize(o),i=t.serialize(s.length);return N([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new k("bytes");let[i,c]=t.deserialize(o,s),l=Number(i);s=c;let d=o.slice(s,s+l);if(d.length<l)throw new R("bytes",l,d.length);let[p,m]=n.deserialize(d);return s+=m,[p,s]}}}a();function K(e={}){let t=e.size??j(),r=e.encoding??pe,n=e.description??`string(${r.description}; ${U(t)})`;return t==="variable"?{...r,description:n}:typeof t=="number"?F(r,t,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let s=r.serialize(o),i=t.serialize(s.length);return N([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new k("string");let[i,c]=t.deserialize(o,s),l=Number(i);s=c;let d=o.slice(s,s+l);if(d.length<l)throw new R("string",l,d.length);let[p,m]=r.deserialize(d);return s+=m,[p,s]}}}a();function C(e,t={}){let r=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:t.description??`struct(${r})`,fixedSize:$(e.map(([,n])=>n.fixedSize)),maxSize:$(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([s,i])=>i.serialize(n[s]));return N(o)},deserialize:(n,o=0)=>{let s={};return e.forEach(([i,c])=>{let[l,d]=c.deserialize(n,o);o=d,s[i]=l;}),[s,o]}}}a();function H(){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 P;async function Rt(e){return P===void 0&&(P=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(P=!1);}).then(()=>{t(P=!0);});})),typeof P=="boolean"?P:await P}async function _e(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function Ne(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Rt(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
5
+ var hn=Object.create;var we=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var yn=Object.getOwnPropertyNames;var xn=Object.getPrototypeOf,wn=Object.prototype.hasOwnProperty;var En=(e,t,n)=>t in e?we(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var zn=(e,t)=>()=>(e&&(t=e(e=0)),t);var An=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var In=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of yn(t))!wn.call(e,o)&&o!==n&&we(e,o,{get:()=>t[o],enumerable:!(r=Sn(t,o))||r.enumerable});return e};var Ze=(e,t,n)=>(n=e!=null?hn(xn(e)):{},In(t||!e||!e.__esModule?we(n,"default",{value:e,enumerable:!0}):n,e));var A=(e,t,n)=>(En(e,typeof t!="symbol"?t+"":t,n),n);var c=zn(()=>{});var qe=An((Ga,sn)=>{c();var oo=Object.prototype.toString,io=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};function ie(e,t){var n,r,o,i,s,a,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 ie(e.toJSON(),t);if(d=oo.call(e),d==="[object Array]"){for(o="[",r=e.length-1,n=0;n<r;n++)o+=ie(e[n],!0)+",";return r>-1&&(o+=ie(e[n],!0)),o+"]"}else if(d==="[object Object]"){for(i=io(e).sort(),r=i.length,o="",n=0;n<r;)s=i[n],a=ie(e[s],!1),a!==void 0&&(o&&(o+=","),o+=JSON.stringify(s)+":"+a),n++;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}}sn.exports=function(e){var t=ie(e,!1);if(t!==void 0)return ""+t};});c();c();c();function q(e,t,n=0){if(t.length-n<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function U(e,t,n,r=0){let o=n.length-r;if(o<t)throw new Error(`Codec [${e}] expected ${t} bytes, got ${o}.`)}var se=e=>{let t=e.filter(i=>i.length);if(t.length===0)return e.length?e[0]:new Uint8Array;if(t.length===1)return t[0];let n=t.reduce((i,s)=>i+s.length,0),r=new Uint8Array(n),o=0;return t.forEach(i=>{r.set(i,o),o+=i.length;}),r},Cn=(e,t)=>{if(e.length>=t)return e;let n=new Uint8Array(t).fill(0);return n.set(e),n},Ee=(e,t)=>Cn(e.length<=t?e:e.slice(0,t),t);function B(e,t,n){if(e.fixedSize!==t.fixedSize)throw new Error(`Encoder and decoder must have the same fixed size, got [${e.fixedSize}] and [${t.fixedSize}].`);if(e.maxSize!==t.maxSize)throw new Error(`Encoder and decoder must have the same max size, got [${e.maxSize}] and [${t.maxSize}].`);if(n===void 0&&e.description!==t.description)throw new Error(`Encoder and decoder must have the same description, got [${e.description}] and [${t.description}]. Pass a custom description as a third argument if you want to override the description and bypass this error.`);return {decode:t.decode,description:n??e.description,encode:e.encode,fixedSize:e.fixedSize,maxSize:e.maxSize}}function Qe(e,t,n){return {description:n??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t}}function ze(e,t,n){return {...Qe(e,t,n),encode:r=>Ee(e.encode(r),t)}}function Ae(e,t,n){return {...Qe(e,t,n),decode:(r,o=0)=>{U("fixCodec",t,r,o),(o>0||r.length>t)&&(r=r.slice(o,o+t)),e.fixedSize!==null&&(r=Ee(r,e.fixedSize));let[i]=e.decode(r,0);return [i,o+t]}}}function et(e,t){return {description:e.description,encode:n=>e.encode(t(n)),fixedSize:e.fixedSize,maxSize:e.maxSize}}c();c();function Tn(e,t,n,r){if(r<t||r>n)throw new Error(`Codec [${e}] expected number to be in the range [${t}, ${n}], got ${r}.`)}function tt(e){let t,n=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===0,n+=t?"(le)":"(be)"),{description:e.options.description??n,fixedSize:e.size,littleEndian:t,maxSize:e.size}}function nt(e){let t=tt(e);return {description:t.description,encode(n){e.range&&Tn(e.name,e.range[0],e.range[1],n);let r=new ArrayBuffer(e.size);return e.set(new DataView(r),n,t.littleEndian),new Uint8Array(r)},fixedSize:t.fixedSize,maxSize:t.maxSize}}function rt(e){let t=tt(e);return {decode(n,r=0){q(t.description,n,r),U(t.description,e.size,n,r);let o=new DataView(Rn(n,r,e.size));return [e.get(o,t.littleEndian),r+e.size]},description:t.description,fixedSize:t.fixedSize,maxSize:t.maxSize}}function Rn(e,t,n){let r=e.byteOffset+(t??0),o=n??e.byteLength;return e.buffer.slice(r,r+o)}var ot=(e={})=>nt({name:"u32",options:e,range:[0,+"0xffffffff"],set:(t,n,r)=>t.setUint32(0,n,r),size:4}),it=(e={})=>rt({get:(t,n)=>t.getUint32(0,n),name:"u32",options:e,size:4});var vn=(e={})=>nt({name:"u8",options:e,range:[0,+"0xff"],set:(t,n)=>t.setUint8(0,n),size:1}),Bn=(e={})=>rt({get:t=>t.getUint8(0),name:"u8",options:e,size:1}),st=(e={})=>B(vn(e),Bn(e));function Nn(e,t,n=t){if(!t.match(new RegExp(`^[${e}]*$`)))throw new Error(`Expected a string of base ${e.length}, got [${n}].`)}var kn=e=>{let t=e.length,n=BigInt(t);return {description:`base${t}`,encode(r){if(Nn(e,r),r==="")return new Uint8Array;let o=[...r],i=o.findIndex(m=>m!==e[0]);i=i===-1?o.length:i;let s=Array(i).fill(0);if(i===o.length)return Uint8Array.from(s);let a=o.slice(i),d=0n,l=1n;for(let m=a.length-1;m>=0;m-=1)d+=l*BigInt(e.indexOf(a[m])),l*=n;let f=[];for(;d>0n;)f.unshift(Number(d%256n)),d/=256n;return Uint8Array.from(s.concat(f))},fixedSize:null,maxSize:null}},Dn=e=>{let t=e.length,n=BigInt(t);return {decode(r,o=0){let i=o===0?r:r.slice(o);if(i.length===0)return ["",0];let s=i.findIndex(f=>f!==0);s=s===-1?i.length:s;let a=e[0].repeat(s);if(s===i.length)return [a,r.length];let d=i.slice(s).reduce((f,m)=>f*256n+BigInt(m),0n),l=[];for(;d>0n;)l.unshift(e[Number(d%n)]),d/=n;return [a+l.join(""),r.length]},description:`base${t}`,fixedSize:null,maxSize:null}};var at="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",ct=()=>kn(at),dt=()=>Dn(at);var _n=e=>e.replace(/\u0000/g,"");var On=globalThis.TextDecoder,Pn=globalThis.TextEncoder,$n=()=>{let e;return {description:"utf8",encode:t=>new Uint8Array((e||(e=new Pn)).encode(t)),fixedSize:null,maxSize:null}},Ln=()=>{let e;return {decode(t,n=0){let r=(e||(e=new On)).decode(t.slice(n));return [_n(r),t.length]},description:"utf8",fixedSize:null,maxSize:null}};var ut=(e={})=>{let t=e.size??ot(),n=e.encoding??$n(),r=e.description??`string(${n.description}; ${ft(t)})`;return t==="variable"?{...n,description:r}:typeof t=="number"?ze(n,t,r):{description:r,encode:o=>{let i=n.encode(o),s=t.encode(i.length);return se([s,i])},fixedSize:null,maxSize:null}},lt=(e={})=>{let t=e.size??it(),n=e.encoding??Ln(),r=e.description??`string(${n.description}; ${ft(t)})`;return t==="variable"?{...n,description:r}:typeof t=="number"?Ae(n,t,r):{decode:(o,i=0)=>{q("string",o,i);let[s,a]=t.decode(o,i),d=Number(s);i=a;let l=o.slice(i,i+d);U("string",d,l);let[f,m]=n.decode(l);return i+=m,[f,i]},description:r,fixedSize:null,maxSize:null}};function ft(e){return typeof e=="object"?e.description:`${e}`}c();function Y(){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 P;async function Un(e){return P===void 0&&(P=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(P=!1);}).then(()=>{t(P=!0);});})),typeof P=="boolean"?P:await P}async function mt(){if(Y(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function pt(){if(Y(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Un(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 ke(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function Oe(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function Be(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}function No(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=D.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 W(e){return K({description:e?.description??(""),encoding:D,size:32})}function ce(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var vt=37095705934669439343138083508754565189542113879843219016388785533085940283555n,S=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Ce=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function T(e){let t=e%S;return t>=0n?t:S+t}function _(e,t){let r=e;for(;t-- >0n;)r*=r,r%=S;return r}function _t(e){let r=e*e%S*e%S,n=_(r,2n)*r%S,o=_(n,1n)*e%S,s=_(o,5n)*o%S,i=_(s,10n)*s%S,c=_(i,20n)*i%S,l=_(c,40n)*c%S,d=_(l,80n)*l%S,p=_(d,80n)*l%S,m=_(p,10n)*s%S;return _(m,2n)*e%S}function Nt(e,t){let r=T(t*t*t),n=T(r*r*t),o=_t(e*n),s=T(e*r*o),i=T(t*s*s),c=s,l=T(s*Ce),d=i===e,p=i===T(-e),m=i===T(-e*Ce);return d&&(s=c),(p||m)&&(s=l),(T(s)&1n)===1n&&(s=T(-s)),!d&&!p?null:s}function kt(e,t){let r=T(e*e),n=T(r-1n),o=T(vt*r+1n),s=Nt(n,o);if(s===null)return !1;let i=(t&128)!==0;return !(s===0n&&i)}function Ot(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function Bt(e){let r=`0x${e.reduce((n,o,s)=>`${Ot(s===31?o&-129:o)}${n}`,"")}`;return BigInt(r)}async function Ct(e){if(e.byteLength!==32)return !1;let t=Bt(e);return kt(t,e[31])}var De=32,Le=16,ae=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Pe=class extends Error{};async function Lt({programAddress:e,seeds:t}){if(await _e(),t.length>Le)throw new Error(`A maximum of ${Le} seeds may be supplied when creating an address`);let r,n=t.reduce((l,d,p)=>{let m=typeof d=="string"?(r||(r=new TextEncoder)).encode(d):d;if(m.byteLength>De)throw new Error(`The seed at index ${p} exceeds the maximum length of 32 bytes`);return l.push(...m),l},[]),o=W(),s=o.serialize(e),i=await crypto.subtle.digest("SHA-256",new Uint8Array([...n,...s,...ae])),c=new Uint8Array(i);if(await Ct(c))throw new Pe("Invalid seeds; point must fall off the Ed25519 curve");return o.deserialize(c)[0]}async function ko({programAddress:e,seeds:t}){let r=255;for(;r>0;)try{return {bumpSeed:r,pda:await Lt({programAddress:e,seeds:[...t,new Uint8Array([r])]})}}catch(n){if(n instanceof Pe)r--;else throw n}throw new Error("Unable to find a viable program address bump seed")}async function Oo({baseAddress:e,programAddress:t,seed:r}){let{serialize:n,deserialize:o}=W(),s=typeof r=="string"?new TextEncoder().encode(r):r;if(s.byteLength>De)throw new Error("The seed exceeds the maximum length of 32 bytes");let i=n(t);if(i.length>=ae.length&&i.slice(-ae.length).every((d,p)=>d===ae[p]))throw new Error("programAddress cannot end with the PDA marker");let c=await crypto.subtle.digest("SHA-256",new Uint8Array([...n(e),...s,...i])),l=new Uint8Array(c);return o(l)[0]}async function $e(e){if(await ke(),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]=W().deserialize(new Uint8Array(t));return r}a();var Dt=(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))(Dt||{}),Ue=2,ge=1;function Do(e){return e&~Ue}function Po(e){return e&~ge}function $o(e){return e>=2}function Uo(e){return (e&ge)!==0}function Wo(e,t){return e|t}function Mo(e){return e|Ue}function Fo(e){return e|ge}a();async function Go(){return await Ne(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function We(e,t){await Oe();let r=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(r)}async function Vo(e,t,r){return await Be(),await crypto.subtle.verify("Ed25519",e,t,r)}a();function q(e){if("signatures"in e){let{signatures:t,...r}=e;return r}else return e}function Qo(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=D.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 es(e,t){if("lifetimeConstraint"in t&&t.lifetimeConstraint.blockhash===e.blockhash&&t.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return t;let r={...q(t),lifetimeConstraint:e};return Object.freeze(r),r}function ts({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var z=(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))(z||{}),Pt=1;function G(e){return e>=2}function V(e){return (e&Pt)!==0}function Me(e,t){return e|t}var Ke="SysvarRecentB1ockHashes11111111111111111111",He="11111111111111111111111111111111";function rs(e){if(!Ge(e))throw new Error("Transaction is not a durable nonce transaction")}function $t(e,t){return {accounts:[{address:e,role:z.WRITABLE},{address:Ke,role:z.READONLY},{address:t,role:z.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:He}}function Ut(e){return e.programAddress===He&&e.data!=null&&Wt(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===z.WRITABLE&&e.accounts[1].address===Ke&&e.accounts[1].role===z.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===z.READONLY_SIGNER}function Wt(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Ge(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&Ut(e.instructions[0])}function ns({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:r},n){let o=Ge(n);if(o&&n.lifetimeConstraint.nonce===e&&n.instructions[0].accounts[0].address===t&&n.instructions[0].accounts[2].address===r)return n;let s={...q(n),instructions:[$t(t,r),...o?n.instructions.slice(1):n.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(s),s}function os(e,t){if("feePayer"in t&&e===t.feePayer)return t;let r={...q(t),feePayer:e};return Object.freeze(r),r}function ss(e,t){let r={...q(t),instructions:[...t.instructions,e]};return Object.freeze(r),r}function is(e,t){let r={...q(t),instructions:[e,...t.instructions]};return Object.freeze(r),r}function Fe(e,t,r){e[t]=r(e[t]??{role:z.READONLY});}var b=Symbol("AddressMapTypeProperty");function Mt(e,t){let r={[e]:{[b]:0,role:z.WRITABLE_SIGNER}},n=new Set;for(let o of t){Fe(r,o.programAddress,i=>{if(n.add(o.programAddress),b in i){if(V(i.role))switch(i[b]){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[b]===2)return i}return {[b]:2,role:z.READONLY}});let s;if(o.accounts)for(let i of o.accounts)Fe(r,i.address,c=>{let{address:l,...d}=i;if(b in c)switch(c[b]){case 0:return c;case 1:{let p=Me(c.role,d.role);if("lookupTableAddress"in d){if(c.lookupTableAddress!==d.lookupTableAddress&&(s||(s=ce()))(d.lookupTableAddress,c.lookupTableAddress)<0)return {[b]:1,...d,role:p}}else if(G(d.role))return {[b]:2,role:p};return c.role!==p?{...c,role:p}:c}case 2:{let p=Me(c.role,d.role);if(n.has(i.address)){if(V(d.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 d&&!G(c.role)?{...d,[b]:1,role:p}:c.role!==p?{...c,role:p}:c}}return "lookupTableAddress"in d?{...d,[b]:1}:{...d,[b]:2}});}return r}function Ft(e){let t;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[b]!==i[b]){if(o[b]===0)return -1;if(i[b]===0)return 1;if(o[b]===2)return -1;if(i[b]===2)return 1}let c=G(o.role);if(c!==G(i.role))return c?-1:1;let l=V(o.role);return l!==V(i.role)?l?-1:1:(t||(t=ce()),o[b]===1&&i[b]===1&&o.lookupTableAddress!==i.lookupTableAddress?t(o.lookupTableAddress,i.lookupTableAddress):t(n,s))}).map(([n,o])=>({address:n,...o}))}function jt(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===z.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(r).sort(ce()).map(n=>({lookupTableAddress:n,...r[n]}))}function Kt(e){let t=0,r=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=V(o.role);G(o.role)?(n++,s||r++):s||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:r,numSignerAccounts:n}}function Ht(e){let t={};for(let[r,n]of e.entries())t[n.address]=r;return t}function Gt(e,t){let r=Ht(t);return e.map(({accounts:n,data:o,programAddress:s})=>({programAddressIndex:r[s],...n?{accountIndices:n.map(({address:i})=>r[i])}:null,...o?{data:o}:null}))}function Vt(e){return "nonce"in e?e.nonce:e.blockhash}function qt(e){let t=e.findIndex(n=>"lookupTableAddress"in n);return (t===-1?e:e.slice(0,t)).map(({address:n})=>n)}function Ve(e){let t=Mt(e.feePayer,e.instructions),r=Ft(t);return {...e.version!=="legacy"?{addressTableLookups:jt(r)}:null,header:Kt(r),instructions:Gt(e.instructions,r),lifetimeToken:Vt(e.lifetimeConstraint),staticAccounts:qt(r),version:e.version}}function Yt(){return C([["lookupTableAddress",W(void 0)],["writableIndices",B(O(),{...null,size:v()})],["readableIndices",B(O(),{...void 0,size:v()})]],void 0)}function Jt(){return C([["numSignerAccounts",O(void 0)],["numReadonlySignerAccounts",O(void 0)],["numReadonlyNonSignerAccounts",O(void 0)]],void 0)}function Xt(){return Z(C([["programAddressIndex",O(void 0)],["accountIndices",B(O({description:""}),{description:"",size:v()})],["data",ie({description:"",size:v()})]]),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 Zt(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 qe(e){return ()=>{throw Zt("decoder",e)}}var be=128,Qt={description:"",fixedSize:null,maxSize:1};function er(e,t=0){let r=e[t];return r&be?[r^be,t+1]:["legacy",t]}function tr(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|be])}function rr(){return {...Qt,deserialize:er,serialize:tr}}var nr={description:"",fixedSize:null,maxSize:null};function or(e){return e.version==="legacy"?C(je()).serialize(e):Z(C([...je(),["addressTableLookups",sr()]]),t=>t.version==="legacy"?t:{...t,addressTableLookups:t.addressTableLookups??[]}).serialize(e)}function je(){return [["version",rr()],["header",Jt()],["staticAccounts",B(W(),{description:"",size:v()})],["lifetimeToken",K({description:"",encoding:D,size:32})],["instructions",B(Xt(),{description:"",size:v()})]]}function sr(){return B(Yt(),{...null,size:v()})}function Ye(){return {...nr,deserialize:qe("CompiledMessage"),serialize:or}}async function ir(e,t){let r=Ye().serialize(e);return await We(t,r)}async function as(e,t){let r=Ve(t),[n,o]=await Promise.all([$e(e.publicKey),ir(r,e.privateKey)]),s={..."signatures"in t?t.signatures:null,[n]:o},i={...t,signatures:s};return Object.freeze(i),i}function ar(e){let t=Ve(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 cr={description:"",fixedSize:null,maxSize:null};function ur(e){let t=ar(e);return C([["signatures",B(ie({size:64}),{...null,size:v()})],["compiledMessage",Ye()]]).serialize(t)}function lr(){return {...cr,deserialize:qe("CompiledMessage"),serialize:ur}}function cs(e){let t=lr().serialize(e);return btoa(String.fromCharCode(...t))}a();a();function we(e,t,r){if(Array.isArray(e))return e.map((n,o)=>we(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]=we(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 Xe(e,t){return we(e,[],t)}var u={},he,ye;function dr(){return he||(he={}),he}function pr(){if(!ye){let e=[["data","parsed","info","tokenAmount","decimals"],["data","parsed","info","tokenAmount","uiAmount"],["data","parsed","info","rentExemptReserve","decimals"],["data","parsed","info","rentExemptReserve","uiAmount"],["data","parsed","info","delegatedAmount","decimals"],["data","parsed","info","delegatedAmount","uiAmount"],["data","parsed","info","extensions",u,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",u,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",u,"state","preUpdateAverageRate"],["data","parsed","info","extensions",u,"state","currentRate"]],t=[...e,["data","parsed","info","lastExtendedSlotStartIndex"],["data","parsed","info","slashPenalty"],["data","parsed","info","warmupCooldownRate"],["data","parsed","info","decimals"],["data","parsed","info","numRequiredSigners"],["data","parsed","info","numValidSigners"],["data","parsed","info","stake","delegation","warmupCooldownRate"],["data","parsed","info","exemptionThreshold"],["data","parsed","info","burnPercent"],["data","parsed","info","commission"],["data","parsed","info","votes",u,"confirmationCount"]];ye={getAccountInfo:t.map(r=>["value",...r]),getBlock:[["blockTime"],["transactions",u,"meta","preTokenBalances",u,"accountIndex"],["transactions",u,"meta","preTokenBalances",u,"uiTokenAmount","decimals"],["transactions",u,"meta","postTokenBalances",u,"accountIndex"],["transactions",u,"meta","postTokenBalances",u,"uiTokenAmount","decimals"],["transactions",u,"meta","rewards",u,"commission"],["transactions",u,"meta","innerInstructions",u,"index"],["transactions",u,"meta","innerInstructions",u,"instructions",u,"programIdIndex"],["transactions",u,"meta","innerInstructions",u,"instructions",u,"accounts",u],["transactions",u,"transaction","message","addressTableLookups",u,"writableIndexes",u],["transactions",u,"transaction","message","addressTableLookups",u,"readonlyIndexes",u],["transactions",u,"transaction","message","instructions",u,"programIdIndex"],["transactions",u,"transaction","message","instructions",u,"accounts",u],["transactions",u,"transaction","message","header","numReadonlySignedAccounts"],["transactions",u,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",u,"transaction","message","header","numRequiredSignatures"],["rewards",u,"commission"]],getBlockTime:[[]],getClusterNodes:[[u,"featureSet"],[u,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[u,"commission"]],getMultipleAccounts:t.map(r=>["value",u,...r]),getProgramAccounts:t.flatMap(r=>[["value",u,"account",...r],[u,"account",...r]]),getRecentPerformanceSamples:[[u,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:e.map(r=>["value",u,"account",...r]),getTokenAccountsByOwner:e.map(r=>["value",u,"account",...r]),getTokenLargestAccounts:[["value",u,"decimals"],["value",u,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",u,"accountIndex"],["meta","preTokenBalances",u,"uiTokenAmount","decimals"],["meta","postTokenBalances",u,"accountIndex"],["meta","postTokenBalances",u,"uiTokenAmount","decimals"],["meta","rewards",u,"commission"],["meta","innerInstructions",u,"index"],["meta","innerInstructions",u,"instructions",u,"programIdIndex"],["meta","innerInstructions",u,"instructions",u,"accounts",u],["transaction","message","addressTableLookups",u,"writableIndexes",u],["transaction","message","addressTableLookups",u,"readonlyIndexes",u],["transaction","message","instructions",u,"programIdIndex"],["transaction","message","instructions",u,"accounts",u],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",u,"commission"],["delinquent",u,"commission"]],simulateTransaction:t.map(r=>["value","accounts",u,...r])};}return ye}function Je(e,t){return e.filter(r=>r[0]===u&&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=Je(t,n);return ue(r,o)});if(typeof e=="object"&&e!==null){let r={};for(let[n,o]of Object.entries(e)){let s=Je(t,n);r[n]=ue(o,s);}return r}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function fr(e,t){let r=t?pr()[t]:void 0;return ue(e,r??[])}function mr(e,t){let r=t?dr()[t]:void 0;return ue(e,r??[])}function Ze(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,n]=t,o=n.toString();return function(...s){let i=e?.onIntegerOverflow,c=Xe(s,i?(l,d)=>i(o,l,d):void 0);return {methodName:o,params:c,responseProcessor:l=>fr(l,o)}}}})}function Qe(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,n]=t,o=n.toString();return function(...s){let i=e?.onIntegerOverflow;return {params:Xe(s,i?(l,d)=>i(o,l,d):void 0),responseProcessor:l=>mr(l,o),subscribeMethodName:o.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:o.replace(/Notifications$/,"Unsubscribe")}}}})}a();var tt=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"}},Se=0;function gr(){let e=Se;return Se=(Se+1)%Number.MAX_SAFE_INTEGER,e}function Ee(e,t){return {id:gr(),jsonrpc:"2.0",method:e,params:t}}function br(e,t){return {async send(r){let{methodName:n,params:o,responseProcessor:s}=t,i=Ee(n,o),c=await e.transport({payload:i,signal:r?.abortSignal});if("error"in c)throw new tt(c.error);return s?s(c.result):c.result}}}function hr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,n){return function(...o){let s=r.toString(),i=Reflect.get(t,s,n),c=i?i(...o):{methodName:s,params:o};return br(e,c)}}})}function rt(e){return hr(e)}function yr(e,t){(async()=>{try{for await(let r of e);}catch(r){t(r);}})();}function wr(e,{params:t,subscribeMethodName:r,unsubscribeMethodName:n,responseProcessor:o}){return {async subscribe(s){s?.abortSignal?.throwIfAborted();let i;function c(){if(i!==void 0){let y=Ee(n,[i]);p.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(y).finally(()=>{l.abort();});}else l.abort();}s?.abortSignal?.addEventListener("abort",c);let l=new AbortController,d=Ee(r,t),p=await e.transport({payload:d,signal:l.signal});function m(){s?.abortSignal?.removeEventListener("abort",c);}yr(p,m);for await(let y of p)if("id"in y&&y.id===d.id){if("error"in y)throw new tt(y.error);i=y.result;break}if(i==null)throw new Error("Failed to obtain a subscription id from the server");return {async*[Symbol.asyncIterator](){for await(let y of p){if(!("params"in y)||y.params.subscription!==i)continue;let g=y.params.result;yield o?o(g):g;}}}}}}function Sr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,n){return function(...o){let s=r.toString(),i=Reflect.get(t,s,n);if(r.toString().endsWith("Notifications")===!1&&!i)throw new Error("Either the notification name must end in 'Notifications' or the API must supply a subscription creator function to map between the notification name and the subscribe/unsubscribe method names.");let c=i?i(...o):{params:o,subscribeMethodName:s.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:s.replace(/Notifications$/,"Unsubscribe")};return wr(e,c)}}})}function nt(e){return Sr(e)}var Er=globalThis.fetch,xr=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 Rr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function ot({httpAgentNodeOnly:e,headers:t,url:r}){let n=void 0;let o=t&&Rr(t);return async function({payload:i,signal:c}){let l=JSON.stringify(i),d={agent:n,body:l,headers:{...o,accept:"application/json","content-length":l.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:c},p=await Er(r,d);if(!p.ok)throw new xr({message:p.statusText,statusCode:p.status});return await p.json()}}var Y=globalThis.WebSocket;async function zr({sendBufferHighWatermark:e,signal:t,url:r}){return new Promise((n,o)=>{t.addEventListener("abort",i,{once:!0});let s=new Map;function i(){g.readyState!==Y.CLOSED&&g.readyState!==Y.CLOSING&&g.close(1e3);}function c(E){p?.onCancel(),t.removeEventListener("abort",i),g.removeEventListener("close",c),g.removeEventListener("error",l),g.removeEventListener("open",m),g.removeEventListener("message",y),s.forEach((x,A)=>{if(x.__hasPolled){let{onError:w}=x;s.delete(A),w(E);}else s.delete(A);});}function l(E){d||o(new Error("WebSocket failed to connect",{cause:E}));}let d=!1,p;function m(){d=!0,n({async send(E){let x=JSON.stringify(E);if(!p&&g.readyState===Y.OPEN&&g.bufferedAmount>e){let A,w=new Promise((M,pt)=>{let Ae=setInterval(()=>{(g.readyState!==Y.OPEN||!(g.bufferedAmount>e))&&(clearInterval(Ae),p=void 0,M());},16);A=()=>{p=void 0,clearInterval(Ae),pt(new Error("WebSocket was closed before payload could be sent"));};});p={onCancel:A,promise:w};}p&&await p.promise,g.send(x);},async*[Symbol.asyncIterator](){let E=Symbol();s.set(E,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let x=s.get(E);if(!x)throw new Error("Invariant: WebSocket message iterator is missing state storage");if(x.__hasPolled)throw new Error("Invariant: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise");let A=x.queuedMessages;if(A.length)x.queuedMessages=[],yield*A;else try{yield await new Promise((w,M)=>{s.set(E,{__hasPolled:!0,onError:M,onMessage:w});});}catch(w){if(w!==null&&typeof w=="object"&&"type"in w&&w.type==="close"&&"wasClean"in w&&w.wasClean)return;throw new Error("WebSocket connection closed",{cause:w})}}}finally{s.delete(E);}}});}function y({data:E}){let x=JSON.parse(E);s.forEach((A,w)=>{if(A.__hasPolled){let{onMessage:M}=A;s.set(w,{__hasPolled:!1,queuedMessages:[]}),M(x);}else A.queuedMessages.push(x);});}let g=new Y(r);g.addEventListener("close",c),g.addEventListener("error",l),g.addEventListener("open",m),g.addEventListener("message",y);})}function st({sendBufferHighWatermark:e,url:t}){if(/^wss?:/i.test(t)===!1){let r=t.match(/^([^:]+):/);throw new DOMException(r?`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${r[1]}:' is not allowed.`:`Failed to construct 'WebSocket': The URL '${t}' is invalid.`)}return async function({payload:n,signal:o}){o?.throwIfAborted();let s=await zr({sendBufferHighWatermark:e,signal:o,url:t});return o?.throwIfAborted(),await s.send(n),{[Symbol.asyncIterator]:s[Symbol.asyncIterator].bind(s),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s.send.bind(s)}}}a();a();var le=class extends Error{constructor(r,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",c=s%10,l=s%100;c==1&&l!=11?i=s+"st":c==2&&l!=12?i=s+"nd":c==3&&l!=13?i=s+"rd":i=s+"th";let d=n.length>1?n.slice(1).map(p=>typeof p=="number"?`[${p}]`:p).join("."):null;super(`The ${i} argument to the \`${r}\` RPC method${d?` at path \`${d}\``:""} 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 xe={onIntegerOverflow(e,t,r){throw new le(e,t,r)}};function zs(e){return rt({...e,api:Ze(xe)})}function vs(e){return nt({...e,api:Qe(xe)})}a();a();function it(e,t){let r;return async function(o){let{payload:s,signal:i}=o,c=t(s);if(c===void 0)return await e(o);if(r||(Promise.resolve().then(()=>{r=void 0;}),r={}),r[c]==null){let d=new AbortController;r[c]={abortController:d,numConsumers:0,responsePromise:e({...o,signal:d.signal})};}let l=r[c];if(l.numConsumers++,i){let d=l.responsePromise;return await new Promise((p,m)=>{let y=g=>{i.removeEventListener("abort",y),l.numConsumers-=1,l.numConsumers===0&&l.abortController.abort();let E=new DOMException(g.target.reason,"AbortError");m(E);};i.addEventListener("abort",y),d.then(p).finally(()=>{i.removeEventListener("abort",y);});})}else return await l.responsePromise}}a();var ut=xt(ct(),1);function lt(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, ut.default)([e.method,e.params])}function Nr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function Ws(e){return it(ot({...e,headers:{...e.headers?Nr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),lt)}a();a();var kr={jsonrpc:"2.0",method:"ping"};function dt({intervalMs:e,transport:t}){let r=new Map;return async(...n)=>{let o=await t(...n),s;function i(){clearInterval(s),s=setInterval(()=>{o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(kr);},e);}return r.has(o)===!1&&(r.set(o,{[Symbol.asyncIterator]:o[Symbol.asyncIterator].bind(o),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:(...c)=>(i(),o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...c))}),(async()=>{try{for await(let c of o)i();}catch{}finally{r.delete(o),clearInterval(s);}})(),i()),r.get(o)}}function Vs(e){let{intervalMs:t,...r}=e;return dt({intervalMs:t??5e3,transport:st({...r,sendBufferHighWatermark:e.sendBufferHighWatermark??131072})})}
9
+ For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function gt(){if(Y(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function bt(){if(Y(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function ht(){if(Y(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}var Ie,Ce;function Te(){return Ie||(Ie=ct()),Ie}function Fn(){return Ce||(Ce=dt()),Ce}function Mn(e){return !(e.length<32||e.length>44||Te().encode(e).byteLength!==32)}function xt(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=Te().encode(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 Wn(e){return xt(e),e}function Hn(e){return et(ut({description:e?.description??"Base58EncodedAddress",encoding:Te(),size:32}),t=>Wn(t))}function wt(e){return lt({description:e?.description??"Base58EncodedAddress",encoding:Fn(),size:32})}function J(e){return B(Hn(e),wt(e))}function ce(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var Kn=37095705934669439343138083508754565189542113879843219016388785533085940283555n,z=57896044618658097711785492504343953926634992332820282019728792003956564819949n,St=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function I(e){let t=e%z;return t>=0n?t:z+t}function R(e,t){let n=e;for(;t-- >0n;)n*=n,n%=z;return n}function jn(e){let n=e*e%z*e%z,r=R(n,2n)*n%z,o=R(r,1n)*e%z,i=R(o,5n)*o%z,s=R(i,10n)*i%z,a=R(s,20n)*s%z,d=R(a,40n)*a%z,l=R(d,80n)*d%z,f=R(l,80n)*d%z,m=R(f,10n)*i%z;return R(m,2n)*e%z}function Gn(e,t){let n=I(t*t*t),r=I(n*n*t),o=jn(e*r),i=I(e*n*o),s=I(t*i*i),a=i,d=I(i*St),l=s===e,f=s===I(-e),m=s===I(-e*St);return l&&(i=a),(f||m)&&(i=d),(I(i)&1n)===1n&&(i=I(-i)),!l&&!f?null:i}function Vn(e,t){let n=I(e*e),r=I(n-1n),o=I(Kn*n+1n),i=Gn(r,o);if(i===null)return !1;let s=(t&128)!==0;return !(i===0n&&s)}function qn(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function Yn(e){let n=`0x${e.reduce((r,o,i)=>`${qn(i===31?o&-129:o)}${r}`,"")}`;return BigInt(n)}async function Jn(e){if(e.byteLength!==32)return !1;let t=Yn(e);return Vn(t,e[31])}function No(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="number"&&e[1]>=0&&e[1]<=255&&Mn(e[0])}function ko(e){if(!(Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="number"))throw new Error("Expected given program derived address to have the following format: [Base58EncodedAddress, ProgramDerivedAddressBump].");if(e[1]<0||e[1]>255)throw new Error(`Expected program derived address bump to be in the range [0, 255], got: ${e[1]}.`);xt(e[0]);}var Et=32,yt=16,ae=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],zt=class extends Error{};async function Xn({programAddress:e,seeds:t}){if(await mt(),t.length>yt)throw new Error(`A maximum of ${yt} seeds may be supplied when creating an address`);let n,r=t.reduce((d,l,f)=>{let m=typeof l=="string"?(n||(n=new TextEncoder)).encode(l):l;if(m.byteLength>Et)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return d.push(...m),d},[]),o=J(),i=o.encode(e),s=await crypto.subtle.digest("SHA-256",new Uint8Array([...r,...i,...ae])),a=new Uint8Array(s);if(await Jn(a))throw new zt("Invalid seeds; point must fall off the Ed25519 curve");return o.decode(a)[0]}async function Do({programAddress:e,seeds:t}){let n=255;for(;n>0;)try{return [await Xn({programAddress:e,seeds:[...t,new Uint8Array([n])]}),n]}catch(r){if(r instanceof zt)n--;else throw r}throw new Error("Unable to find a viable program address bump seed")}async function _o({baseAddress:e,programAddress:t,seed:n}){let{encode:r,decode:o}=J(),i=typeof n=="string"?new TextEncoder().encode(n):n;if(i.byteLength>Et)throw new Error("The seed exceeds the maximum length of 32 bytes");let s=r(t);if(s.length>=ae.length&&s.slice(-ae.length).every((l,f)=>l===ae[f]))throw new Error("programAddress cannot end with the PDA marker");let a=await crypto.subtle.digest("SHA-256",new Uint8Array([...r(e),...i,...s])),d=new Uint8Array(a);return o(d)[0]}async function At(e){if(await gt(),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),[n]=wt().decode(new Uint8Array(t));return n}c();var Zn=(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))(Zn||{}),It=2,Re=1;function Lo(e){return e&~It}function Uo(e){return e&~Re}function Fo(e){return e>=2}function Mo(e){return (e&Re)!==0}function Wo(e,t){return e|t}function Ho(e){return e|It}function Ko(e){return e|Re}c();async function qo(){return await pt(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function Ct(e,t){await bt();let n=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(n)}async function Yo(e,t,n){return await ht(),await crypto.subtle.verify("Ed25519",e,t,n)}c();c();c();c();var N=e=>{let t=e.reduce((o,i)=>o+i.length,0),n=new Uint8Array(t),r=0;return e.forEach(o=>{n.set(o,r),r+=o.length;}),n},Tt=(e,t)=>{if(e.length>=t)return e;let n=new Uint8Array(t).fill(0);return n.set(e),n},de=(e,t)=>Tt(e.slice(0,t),t);c();var k=class extends Error{constructor(n){super(`Serializer [${n}] cannot deserialize empty buffers.`);A(this,"name","DeserializingEmptyBufferError");}},C=class extends Error{constructor(n,r,o){super(`Serializer [${n}] expected ${r} bytes, got ${o}.`);A(this,"name","NotEnoughBytesError");}},$=class extends Error{constructor(n){n??(n="Expected a fixed-size serializer, got a variable-size one.");super(n);A(this,"name","ExpectedFixedSizeSerializerError");}};c();function X(e,t,n){return {description:n??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t,serialize:r=>de(e.serialize(r),t),deserialize:(r,o=0)=>{if(r=r.slice(o,o+t),r.length<t)throw new C("fixSerializer",t,r.length);e.fixedSize!==null&&(r=de(r,e.fixedSize));let[i]=e.deserialize(r,0);return [i,o+t]}}}c();function F(e,t,n){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:r=>e.serialize(t(r)),deserialize:(r,o=0)=>{let[i,s]=e.deserialize(r,o);return n?[n(i,r,o),s]:[i,s]}}}c();c();c();var M=class extends Error{constructor(n,r,o){let i=`Expected a string of base ${r}, got [${n}].`;super(i);A(this,"name","InvalidBaseStringError");this.cause=o;}};var Rt=e=>{let t=e.length,n=BigInt(t);return {description:`base${t}`,fixedSize:null,maxSize:null,serialize(r){if(!r.match(new RegExp(`^[${e}]*$`)))throw new M(r,t);if(r==="")return new Uint8Array;let o=[...r],i=o.findIndex(m=>m!==e[0]);i=i===-1?o.length:i;let s=Array(i).fill(0);if(i===o.length)return Uint8Array.from(s);let a=o.slice(i),d=0n,l=1n;for(let m=a.length-1;m>=0;m-=1)d+=l*BigInt(e.indexOf(a[m])),l*=n;let f=[];for(;d>0n;)f.unshift(Number(d%256n)),d/=256n;return Uint8Array.from(s.concat(f))},deserialize(r,o=0){if(r.length===0)return ["",0];let i=r.slice(o),s=i.findIndex(f=>f!==0);s=s===-1?i.length:s;let a=e[0].repeat(s);if(s===i.length)return [a,r.length];let d=i.slice(s).reduce((f,m)=>f*256n+BigInt(m),0n),l=[];for(;d>0n;)l.unshift(e[Number(d%n)]),d/=n;return [a+l.join(""),r.length]}}};c();var O=Rt("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");c();c();var vt=(e,t)=>{let n=e.length,r=(o,i,s,a)=>{let d=[],l=0,f=0,m=(1<<s)-1;for(let g of o)for(l=l<<i|g,f+=i;f>=s;)f-=s,d.push(l>>f&m);return a&&f>0&&d.push(l<<s-f&m),d};return {description:`base${n}`,fixedSize:null,maxSize:null,serialize(o){if(!o.match(new RegExp(`^[${e}]*$`)))throw new M(o,n);if(o==="")return new Uint8Array;let i=[...o].map(a=>e.indexOf(a)),s=r(i,t,8,!1);return Uint8Array.from(s)},deserialize(o,i=0){if(o.length===0)return ["",0];let s=[...o.slice(i)];return [r(s,8,t,!0).map(d=>e[d]).join(""),o.length]}}};var ve=F(vt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",6),e=>e.replace(/=/g,""),e=>e.padEnd(Math.ceil(e.length/4)*4,"="));c();var Bt=e=>e.replace(/\u0000/g,"");c();var Be={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,t=0){let n=new TextDecoder().decode(e.slice(t));return [Bt(n),e.length]}};c();c();var ue;(function(e){e.Little="le",e.Big="be";})(ue||(ue={}));c();var le=class extends RangeError{constructor(n,r,o,i){super(`Serializer [${n}] expected number to be between ${r} and ${o}, got ${i}.`);A(this,"name","NumberOutOfRangeError");}};c();function fe(e){let t,n=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===ue.Little,n+=t?"(le)":"(be)"),{description:e.options.description??n,fixedSize:e.size,maxSize:e.size,serialize(r){e.range&&Ne(e.name,e.range[0],e.range[1],r);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),r,t),new Uint8Array(o)},deserialize(r,o=0){let i=r.slice(o,o+e.size);tr("i8",i,e.size);let s=er(i);return [e.get(s,t),o+e.size]}}}var Qn=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),er=e=>new DataView(Qn(e)),Ne=(e,t,n,r)=>{if(r<t||r>n)throw new le(e,t,n,r)},tr=(e,t,n)=>{if(t.length===0)throw new k(e);if(t.length<n)throw new C(e,n,t.length)};c();var W=(e={})=>fe({name:"u8",size:1,range:[0,+"0xff"],set:(t,n)=>t.setUint8(0,Number(n)),get:t=>t.getUint8(0),options:e});c();var Z=(e={})=>fe({name:"u32",size:4,range:[0,+"0xffffffff"],set:(t,n,r)=>t.setUint32(0,Number(n),r),get:(t,n)=>t.getUint32(0,n),options:e});c();var v=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:t=>{Ne("shortU16",0,65535,t);let n=[0];for(let r=0;;r+=1){let o=t>>r*7;if(o===0)break;let i=127&o;n[r]=i,r>0&&(n[r-1]|=128);}return new Uint8Array(n)},deserialize:(t,n=0)=>{let r=0,o=0;for(;++o;){let i=o-1,s=t[n+i],a=127&s;if(r|=a<<i*7,!(s&128))break}return [r,n+o]}});c();c();var me=class extends Error{constructor(n,r,o){super(`Expected [${n}] to have ${r} items, got ${o}.`);A(this,"name","InvalidNumberOfItemsError");}},pe=class extends Error{constructor(n,r){super(`The remainder of the buffer (${n} bytes) cannot be split into chunks of ${r} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${n} modulo ${r} should be equal to zero.`);A(this,"name","InvalidArrayLikeRemainderSizeError");}},ge=class extends Error{constructor(n){super(`Unrecognized array-like serializer size: ${JSON.stringify(n)}`);A(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};c();c();function H(e){return e.reduce((t,n)=>t===null||n===null?null:t+n,0)}function Nt(e,t,n,r){if(typeof e=="number")return [e,r];if(typeof e=="object")return e.deserialize(n,r);if(e==="remainder"){let o=H(t);if(o===null)throw new $('Serializers of "remainder" size must have fixed-size items.');let i=n.slice(r).length;if(i%o!==0)throw new pe(i,o);return [i/o,r]}throw new ge(e)}function K(e){return typeof e=="object"?e.description:`${e}`}function ke(e,t){if(typeof e!="number")return null;if(e===0)return 0;let n=H(t);return n===null?null:n*e}function kt(e,t){return typeof e=="object"?e.serialize(t):new Uint8Array}function D(e,t={}){let n=t.size??Z();if(n==="remainder"&&e.fixedSize===null)throw new $('Serializers of "remainder" size must have fixed-size items.');return {description:t.description??`array(${e.description}; ${K(n)})`,fixedSize:ke(n,[e.fixedSize]),maxSize:ke(n,[e.maxSize]),serialize:r=>{if(typeof n=="number"&&r.length!==n)throw new me("array",n,r.length);return N([kt(n,r.length),...r.map(o=>e.serialize(o))])},deserialize:(r,o=0)=>{if(typeof n=="object"&&r.slice(o).length===0)return [[],o];let[i,s]=Nt(n,[e.fixedSize],r,o);o=s;let a=[];for(let d=0;d<i;d+=1){let[l,f]=e.deserialize(r,o);a.push(l),o=f;}return [a,o]}}}c();function be(e={}){let t=e.size??"variable",n=e.description??`bytes(${K(t)})`,r={description:n,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,i=0)=>{let s=o.slice(i);return [s,i+s.length]}};return t==="variable"?r:typeof t=="number"?X(r,t,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let i=r.serialize(o),s=t.serialize(i.length);return N([s,i])},deserialize:(o,i=0)=>{if(o.slice(i).length===0)throw new k("bytes");let[s,a]=t.deserialize(o,i),d=Number(s);i=a;let l=o.slice(i,i+d);if(l.length<d)throw new C("bytes",d,l.length);let[f,m]=r.deserialize(l);return i+=m,[f,i]}}}c();function De(e={}){let t=e.size??Z(),n=e.encoding??Be,r=e.description??`string(${n.description}; ${K(t)})`;return t==="variable"?{...n,description:r}:typeof t=="number"?X(n,t,r):{description:r,fixedSize:null,maxSize:null,serialize:o=>{let i=n.serialize(o),s=t.serialize(i.length);return N([s,i])},deserialize:(o,i=0)=>{if(o.slice(i).length===0)throw new k("string");let[s,a]=t.deserialize(o,i),d=Number(s);i=a;let l=o.slice(i,i+d);if(l.length<d)throw new C("string",d,l.length);let[f,m]=n.deserialize(l);return i+=m,[f,i]}}}c();function L(e,t={}){let n=e.map(([r,o])=>`${String(r)}: ${o.description}`).join(", ");return {description:t.description??`struct(${n})`,fixedSize:H(e.map(([,r])=>r.fixedSize)),maxSize:H(e.map(([,r])=>r.maxSize)),serialize:r=>{let o=e.map(([i,s])=>s.serialize(r[i]));return N(o)},deserialize:(r,o=0)=>{let i={};return e.forEach(([s,a])=>{let[d,l]=a.deserialize(r,o);o=l,i[s]=d;}),[i,o]}}}c();function Dt(e){return e.reduce((t,n)=>t===null||n===null?null:t+n,0)}function _t(e,t){let n=e.map(([r,o])=>`${String(r)}: ${o.description}`).join(", ");return {description:t??`struct(${n})`,fixedSize:Dt(e.map(([,r])=>r.fixedSize)),maxSize:Dt(e.map(([,r])=>r.maxSize))}}function nr(e,t={}){return {..._t(e,t.description),encode:n=>{let r=e.map(([o,i])=>i.encode(n[o]));return se(r)}}}function rr(e,t={}){return {..._t(e,t.description),decode:(n,r=0)=>{let o={};return e.forEach(([i,s])=>{let[a,d]=s.decode(n,r);r=d,o[i]=a;}),[o,r]}}}function Ot(e,t={}){return B(nr(e,t),rr(e,t))}function te(e){if("signatures"in e){let{signatures:t,...n}=e;return n}else return e}function sa(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 n=O.serialize(e).byteLength;if(n!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${n}`)}catch(t){throw new Error(`\`${e}\` is not a blockhash`,{cause:t})}}function aa(e,t){if("lifetimeConstraint"in t&&t.lifetimeConstraint.blockhash===e.blockhash&&t.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return t;let n={...te(t),lifetimeConstraint:e};return Object.freeze(n),n}function ca({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var T=(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))(T||{}),or=1;function Q(e){return e>=2}function ee(e){return (e&or)!==0}function Pt(e,t){return e|t}var Ut="SysvarRecentB1ockHashes11111111111111111111",Ft="11111111111111111111111111111111";function da(e){if(!Mt(e))throw new Error("Transaction is not a durable nonce transaction")}function ir(e,t){return {accounts:[{address:e,role:T.WRITABLE},{address:Ut,role:T.READONLY},{address:t,role:T.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:Ft}}function sr(e){return e.programAddress===Ft&&e.data!=null&&ar(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===T.WRITABLE&&e.accounts[1].address===Ut&&e.accounts[1].role===T.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===T.READONLY_SIGNER}function ar(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Mt(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&sr(e.instructions[0])}function ua({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:n},r){let o=Mt(r);if(o&&r.lifetimeConstraint.nonce===e&&r.instructions[0].accounts[0].address===t&&r.instructions[0].accounts[2].address===n)return r;let i={...te(r),instructions:[ir(t,n),...o?r.instructions.slice(1):r.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(i),i}function la(e,t){if("feePayer"in t&&e===t.feePayer)return t;let n={...te(t),feePayer:e};return Object.freeze(n),n}function fa(e,t){let n={...te(t),instructions:[...t.instructions,e]};return Object.freeze(n),n}function ma(e,t){let n={...te(t),instructions:[e,...t.instructions]};return Object.freeze(n),n}function $t(e,t,n){e[t]=n(e[t]??{role:T.READONLY});}var x=Symbol("AddressMapTypeProperty");function cr(e,t){let n={[e]:{[x]:0,role:T.WRITABLE_SIGNER}},r=new Set;for(let o of t){$t(n,o.programAddress,s=>{if(r.add(o.programAddress),x in s){if(ee(s.role))switch(s[x]){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(s[x]===2)return s}return {[x]:2,role:T.READONLY}});let i;if(o.accounts)for(let s of o.accounts)$t(n,s.address,a=>{let{address:d,...l}=s;if(x in a)switch(a[x]){case 0:return a;case 1:{let f=Pt(a.role,l.role);if("lookupTableAddress"in l){if(a.lookupTableAddress!==l.lookupTableAddress&&(i||(i=ce()))(l.lookupTableAddress,a.lookupTableAddress)<0)return {[x]:1,...l,role:f}}else if(Q(l.role))return {[x]:2,role:f};return a.role!==f?{...a,role:f}:a}case 2:{let f=Pt(a.role,l.role);if(r.has(s.address)){if(ee(l.role))throw new Error(`This transaction includes an address (\`${s.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return a.role!==f?{...a,role:f}:a}else return "lookupTableAddress"in l&&!Q(a.role)?{...l,[x]:1,role:f}:a.role!==f?{...a,role:f}:a}}return "lookupTableAddress"in l?{...l,[x]:1}:{...l,[x]:2}});}return n}function dr(e){let t;return Object.entries(e).sort(([r,o],[i,s])=>{if(o[x]!==s[x]){if(o[x]===0)return -1;if(s[x]===0)return 1;if(o[x]===2)return -1;if(s[x]===2)return 1}let a=Q(o.role);if(a!==Q(s.role))return a?-1:1;let d=ee(o.role);return d!==ee(s.role)?d?-1:1:(t||(t=ce()),o[x]===1&&s[x]===1&&o.lookupTableAddress!==s.lookupTableAddress?t(o.lookupTableAddress,s.lookupTableAddress):t(r,i))}).map(([r,o])=>({address:r,...o}))}function ur(e){var t;let n={};for(let r of e){if(!("lookupTableAddress"in r))continue;let o=n[t=r.lookupTableAddress]||(n[t]={readableIndices:[],writableIndices:[]});r.role===T.WRITABLE?o.writableIndices.push(r.addressIndex):o.readableIndices.push(r.addressIndex);}return Object.keys(n).sort(ce()).map(r=>({lookupTableAddress:r,...n[r]}))}function lr(e){let t=0,n=0,r=0;for(let o of e){if("lookupTableAddress"in o)break;let i=ee(o.role);Q(o.role)?(r++,i||n++):i||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:n,numSignerAccounts:r}}function fr(e){let t={};for(let[n,r]of e.entries())t[r.address]=n;return t}function mr(e,t){let n=fr(t);return e.map(({accounts:r,data:o,programAddress:i})=>({programAddressIndex:n[i],...r?{accountIndices:r.map(({address:s})=>n[s])}:null,...o?{data:o}:null}))}function pr(e){return "nonce"in e?e.nonce:e.blockhash}function gr(e){let t=e.findIndex(r=>"lookupTableAddress"in r);return (t===-1?e:e.slice(0,t)).map(({address:r})=>r)}function Wt(e){let t=cr(e.feePayer,e.instructions),n=dr(t);return {...e.version!=="legacy"?{addressTableLookups:ur(n)}:null,header:lr(n),instructions:mr(e.instructions,n),lifetimeToken:pr(e.lifetimeConstraint),staticAccounts:gr(n),version:e.version}}function br(e){let t=Wt(e),n;if("signatures"in e){n=[];for(let r=0;r<t.header.numSignerAccounts;r++)n[r]=e.signatures[t.staticAccounts[r]]??new Uint8Array(Array(64).fill(0));}else n=Array(t.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:t,signatures:n}}function hr(e){let t=J();return {description:e?.description??t.description,deserialize:t.decode,fixedSize:t.fixedSize,maxSize:t.maxSize,serialize:t.encode}}function Sr(){return L([["lookupTableAddress",hr(void 0)],["writableIndices",D(W(),{...null,size:v()})],["readableIndices",D(W(),{...void 0,size:v()})]],void 0)}var _e;function yr(){return _e||(_e=st()),_e}function Oe(e){let t=yr();return {...t,description:e??t.description}}var xr=void 0,wr=void 0,Er=void 0,zr=void 0;function Ar(){return Ot([["numSignerAccounts",Oe(xr)],["numReadonlySignerAccounts",Oe(wr)],["numReadonlyNonSignerAccounts",Oe(Er)]],{description:zr})}function Ir(){return F(L([["programAddressIndex",W(void 0)],["accountIndices",D(W({description:""}),{description:"",size:v()})],["data",be({description:"",size:v()})]]),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:n,...r}=e;return {...r,...t.length?{accountIndices:t}:null,...n.byteLength?{data:n}:null}})}var $e=128,Ht={description:"",fixedSize:null,maxSize:1};function Cr(e,t=0){let n=e[t];return n&$e?[n^$e,t+1]:["legacy",t]}function Tr(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|$e])}function Rr(){return {...Ht,decode:Cr}}function vr(){return {...Ht,encode:Tr}}function Br(){return B(vr(),Rr())}function Nr(e,t){let n=t+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${t}. Use \`get${n}()\` if you need a ${e}, and \`get${t}Codec()\` if you need to both encode and decode ${t}`)}function Kt(e){return ()=>{throw Nr("decoder",e)}}var kr={description:"",fixedSize:null,maxSize:null};function Dr(e){return e.version==="legacy"?L(Lt()).serialize(e):F(L([...Lt(),["addressTableLookups",_r()]]),t=>t.version==="legacy"?t:{...t,addressTableLookups:t.addressTableLookups??[]}).serialize(e)}function Pe(e){return {description:e.description,deserialize:e.decode,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:e.encode}}function Lt(){return [["version",Pe(Br())],["header",Pe(Ar())],["staticAccounts",D(Pe(J()),{description:"",size:v()})],["lifetimeToken",De({description:"",encoding:O,size:32})],["instructions",D(Ir(),{description:"",size:v()})]]}function _r(){return D(Sr(),{...null,size:v()})}function jt(){return {...kr,deserialize:Kt("CompiledMessage"),serialize:Dr}}var Or={description:"",fixedSize:null,maxSize:null};function Pr(e){let t=br(e);return L([["signatures",D(be({size:64}),{...null,size:v()})],["compiledMessage",jt()]]).serialize(t)}function $r(){return {...Or,deserialize:Kt("CompiledMessage"),serialize:Pr}}function Lr(e){try{if(e.length<64||e.length>88)throw new Error("Expected input string to decode to a byte array of length 64.");let n=O.serialize(e).byteLength;if(n!==64)throw new Error(`Expected input string to decode to a byte array of length 64. Actual length: ${n}`)}catch(t){throw new Error(`\`${e}\` is not a transaction signature`,{cause:t})}}function pa(e){return !(e.length<64||e.length>88||O.serialize(e).byteLength!==64)}async function Ur(e,t){let n=jt().serialize(e);return await Ct(t,n)}function Le(e){let t=e.signatures[e.feePayer];if(!t)throw new Error("Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer.");return t}async function ga(e,t){let n=Wt(t),r="signatures"in t?{...t.signatures}:{},o=await Promise.all(e.map(s=>Promise.all([At(s.publicKey),Ur(n,s.privateKey)])));for(let[s,a]of o)r[s]=a;let i={...t,signatures:r};return Object.freeze(i),i}function ba(e){return Lr(e),e}function ha(e){let t=$r().serialize(e);return btoa(String.fromCharCode(...t))}c();c();c();async function ne(e,t,n){let{abortSignal:r,commitment:o,getRecentSignatureConfirmationPromise:i}=t;r.throwIfAborted();let s=new AbortController;function a(){s.abort();}r.addEventListener("abort",a,{signal:s.signal});try{let d=n({...t,abortSignal:s.signal});return await Promise.race([i({abortSignal:s.signal,commitment:o,signature:e}),...d])}finally{s.abort();}}c();c();function Gt(e){switch(e){case"finalized":return 2;case"confirmed":return 1;case"processed":return 0;default:return (t=>{throw new Error(`Unrecognized commitment \`${e}\`.`)})()}}function qt(e,t){return e===t?0:Gt(e)<Gt(t)?-1:1}function Me(e,t,n){if(Array.isArray(e))return e.map((r,o)=>Me(r,[...t,o],n));if(typeof e=="object"&&e!==null){let r={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Me(e[o],[...t,o],n));return r}else return typeof e=="bigint"?(n&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&n(t,e),Number(e)):e}function Yt(e,t){return Me(e,[],t)}var u={},We=[["data","parsed","info","tokenAmount","decimals"],["data","parsed","info","tokenAmount","uiAmount"],["data","parsed","info","rentExemptReserve","decimals"],["data","parsed","info","rentExemptReserve","uiAmount"],["data","parsed","info","delegatedAmount","decimals"],["data","parsed","info","delegatedAmount","uiAmount"],["data","parsed","info","extensions",u,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",u,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",u,"state","preUpdateAverageRate"],["data","parsed","info","extensions",u,"state","currentRate"]],j=[...We,["data","parsed","info","lastExtendedSlotStartIndex"],["data","parsed","info","slashPenalty"],["data","parsed","info","warmupCooldownRate"],["data","parsed","info","decimals"],["data","parsed","info","numRequiredSigners"],["data","parsed","info","numValidSigners"],["data","parsed","info","stake","delegation","warmupCooldownRate"],["data","parsed","info","exemptionThreshold"],["data","parsed","info","burnPercent"],["data","parsed","info","commission"],["data","parsed","info","votes",u,"confirmationCount"]],Ue,Fe;function Fr(){return Ue||(Ue={accountNotifications:j.map(e=>["value",...e]),blockNotifications:[["value","block","blockTime"],["value","block","transactions",u,"meta","preTokenBalances",u,"accountIndex"],["value","block","transactions",u,"meta","preTokenBalances",u,"uiTokenAmount","decimals"],["value","block","transactions",u,"meta","postTokenBalances",u,"accountIndex"],["value","block","transactions",u,"meta","postTokenBalances",u,"uiTokenAmount","decimals"],["value","block","transactions",u,"meta","rewards",u,"commission"],["value","block","transactions",u,"meta","innerInstructions",u,"index"],["value","block","transactions",u,"meta","innerInstructions",u,"instructions",u,"programIdIndex"],["value","block","transactions",u,"meta","innerInstructions",u,"instructions",u,"accounts",u],["value","block","transactions",u,"transaction","message","addressTableLookups",u,"writableIndexes",u],["value","block","transactions",u,"transaction","message","addressTableLookups",u,"readonlyIndexes",u],["value","block","transactions",u,"transaction","message","instructions",u,"programIdIndex"],["value","block","transactions",u,"transaction","message","instructions",u,"accounts",u],["value","block","transactions",u,"transaction","message","header","numReadonlySignedAccounts"],["value","block","transactions",u,"transaction","message","header","numReadonlyUnsignedAccounts"],["value","block","transactions",u,"transaction","message","header","numRequiredSignatures"],["value","block","rewards",u,"commission"]],programNotifications:j.flatMap(e=>[["value",u,"account",...e],[u,"account",...e]])}),Ue}function Mr(){return Fe||(Fe={getAccountInfo:j.map(e=>["value",...e]),getBlock:[["blockTime"],["transactions",u,"meta","preTokenBalances",u,"accountIndex"],["transactions",u,"meta","preTokenBalances",u,"uiTokenAmount","decimals"],["transactions",u,"meta","postTokenBalances",u,"accountIndex"],["transactions",u,"meta","postTokenBalances",u,"uiTokenAmount","decimals"],["transactions",u,"meta","rewards",u,"commission"],["transactions",u,"meta","innerInstructions",u,"index"],["transactions",u,"meta","innerInstructions",u,"instructions",u,"programIdIndex"],["transactions",u,"meta","innerInstructions",u,"instructions",u,"accounts",u],["transactions",u,"transaction","message","addressTableLookups",u,"writableIndexes",u],["transactions",u,"transaction","message","addressTableLookups",u,"readonlyIndexes",u],["transactions",u,"transaction","message","instructions",u,"programIdIndex"],["transactions",u,"transaction","message","instructions",u,"accounts",u],["transactions",u,"transaction","message","header","numReadonlySignedAccounts"],["transactions",u,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",u,"transaction","message","header","numRequiredSignatures"],["rewards",u,"commission"]],getBlockTime:[[]],getClusterNodes:[[u,"featureSet"],[u,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[u,"commission"]],getMultipleAccounts:j.map(e=>["value",u,...e]),getProgramAccounts:j.flatMap(e=>[["value",u,"account",...e],[u,"account",...e]]),getRecentPerformanceSamples:[[u,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:We.map(e=>["value",u,"account",...e]),getTokenAccountsByOwner:We.map(e=>["value",u,"account",...e]),getTokenLargestAccounts:[["value",u,"decimals"],["value",u,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",u,"accountIndex"],["meta","preTokenBalances",u,"uiTokenAmount","decimals"],["meta","postTokenBalances",u,"accountIndex"],["meta","postTokenBalances",u,"uiTokenAmount","decimals"],["meta","rewards",u,"commission"],["meta","innerInstructions",u,"index"],["meta","innerInstructions",u,"instructions",u,"programIdIndex"],["meta","innerInstructions",u,"instructions",u,"accounts",u],["transaction","message","addressTableLookups",u,"writableIndexes",u],["transaction","message","addressTableLookups",u,"readonlyIndexes",u],["transaction","message","instructions",u,"programIdIndex"],["transaction","message","instructions",u,"accounts",u],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",u,"commission"],["delinquent",u,"commission"]],simulateTransaction:j.map(e=>["value","accounts",u,...e])}),Fe}function Vt(e,t){return e.filter(n=>n[0]===u&&typeof t=="number"||n[0]===t).map(n=>n.slice(1))}function he(e,t){if(Array.isArray(e))return e.map((n,r)=>{let o=Vt(t,r);return he(n,o)});if(typeof e=="object"&&e!==null){let n={};for(let[r,o]of Object.entries(e)){let i=Vt(t,r);n[r]=he(o,i);}return n}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function Wr(e,t){let n=t?Mr()[t]:void 0;return he(e,n??[])}function Hr(e,t){let n=t?Fr()[t]:void 0;return he(e,n??[])}function Jt(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[n,r]=t,o=r.toString();return function(...i){let s=e?.onIntegerOverflow,a=Yt(i,s?(d,l)=>s(o,d,l):void 0);return {methodName:o,params:a,responseProcessor:d=>Wr(d,o)}}}})}function He(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[n,r]=t,o=r.toString();return function(...i){let s=e?.onIntegerOverflow;return {params:Yt(i,s?(d,l)=>s(o,d,l):void 0),responseProcessor:d=>Hr(d,o),subscribeMethodName:o.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:o.replace(/Notifications$/,"Unsubscribe")}}}})}function Xt(e){return He(e)}function re(e,t){return async function({abortSignal:r,commitment:o,signature:i}){let s=new AbortController;function a(){s.abort();}r.addEventListener("abort",a,{signal:s.signal});let d=await t.signatureNotifications(i,{commitment:o}).subscribe({abortSignal:s.signal}),l=(async()=>{for await(let m of d){if(m.value.err)throw new Error(`The transaction with signature \`${i}\` failed.`,{cause:m.value.err});return}})(),f=(async()=>{let{value:m}=await e.getSignatureStatuses([i]).send({abortSignal:s.signal}),g=m[0];g&&g.confirmationStatus&&qt(g.confirmationStatus,o)>=0||await new Promise(()=>{});})();try{return await Promise.race([l,f])}finally{s.abort();}}}c();async function Zt({abortSignal:e,commitment:t}){return await new Promise((n,r)=>{let o=d=>{clearTimeout(a);let l=new DOMException(d.target.reason,"AbortError");r(l);};e.addEventListener("abort",o);let i=t==="processed"?3e4:6e4,s=performance.now(),a=setTimeout(()=>{let d=performance.now()-s;r(new DOMException(`Timeout elapsed after ${d} ms`,"TimeoutError"));},i);})}function Qt({rpc:e,rpcSubscriptions:t}){let n=re(e,t);return async function(o){await Kr({...o,getRecentSignatureConfirmationPromise:n,getTimeoutPromise:Zt});}}async function Kr(e){await ne(e.signature,e,function({abortSignal:n,commitment:r,getTimeoutPromise:o}){return [o({abortSignal:n,commitment:r})]});}async function $a({abortSignal:e,commitment:t,lamports:n,recipientAddress:r,rpc:o,rpcSubscriptions:i}){let s=await o.requestAirdrop(r,n,{commitment:t}).send({abortSignal:e});return await Qt({rpc:o,rpcSubscriptions:i})({abortSignal:e,commitment:t,signature:s}),s}c();c();function G(e,...t){return t.reduce((n,r)=>r(n),e)}c();var tn=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"}},Ke=0;function jr(){let e=Ke;return Ke=(Ke+1)%Number.MAX_SAFE_INTEGER,e}function Ge(e,t){return {id:jr(),jsonrpc:"2.0",method:e,params:t}}function Gr(e,t){return {async send(n){let{methodName:r,params:o,responseProcessor:i}=t,s=Ge(r,o),a=await e.transport({payload:s,signal:n?.abortSignal});if("error"in a)throw new tn(a.error);return i?i(a.result):a.result}}}function Vr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,n,r){return function(...o){let i=n.toString(),s=Reflect.get(t,i,r),a=s?s(...o):{methodName:i,params:o};return Gr(e,a)}}})}function nn(e){return Vr(e)}function qr(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function Yr(e,{params:t,subscribeMethodName:n,unsubscribeMethodName:r,responseProcessor:o}){return {async subscribe({abortSignal:i}){i.throwIfAborted();let s;function a(){if(s!==void 0){let g=Ge(r,[s]);f.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(g).finally(()=>{d.abort();});}else d.abort();}i.addEventListener("abort",a);let d=new AbortController,l=Ge(n,t),f=await e.transport({payload:l,signal:d.signal});function m(){i.removeEventListener("abort",a);}qr(f,m);for await(let g of f)if("id"in g&&g.id===l.id){if("error"in g)throw new tn(g.error);s=g.result;break}if(s==null)throw new Error("Failed to obtain a subscription id from the server");return {async*[Symbol.asyncIterator](){for await(let g of f){if(!("params"in g)||g.params.subscription!==s)continue;let S=g.params.result;yield o?o(S):S;}}}}}}function Jr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,n,r){return function(...o){let i=n.toString(),s=Reflect.get(t,i,r);if(n.toString().endsWith("Notifications")===!1&&!s)throw new Error("Either the notification name must end in 'Notifications' or the API must supply a subscription creator function to map between the notification name and the subscribe/unsubscribe method names.");let a=s?s(...o):{params:o,subscribeMethodName:i.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:i.replace(/Notifications$/,"Unsubscribe")};return Yr(e,a)}}})}function Ve(e){return Jr(e)}var Xr=globalThis.fetch,Zr=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 no(e){let t={};for(let n in e)t[n.toLowerCase()]=e[n];return t}function rn({httpAgentNodeOnly:e,headers:t,url:n}){let r=void 0;let o=t&&no(t);return async function({payload:s,signal:a}){let d=JSON.stringify(s),l={agent:r,body:d,headers:{...o,accept:"application/json","content-length":d.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:a},f=await Xr(n,l);if(!f.ok)throw new Zr({message:f.statusText,statusCode:f.status});return await f.json()}}var oe=globalThis.WebSocket,en=Symbol(void 0);async function ro({sendBufferHighWatermark:e,signal:t,url:n}){return new Promise((r,o)=>{t.addEventListener("abort",a,{once:!0});let i=new Map;function s(h){let y=[...i.values()].filter(E=>E.__hasPolled).map(({onError:E})=>E);i.clear(),y.forEach(E=>{try{E(h);}catch{}});}function a(){s(en),b.readyState!==oe.CLOSED&&b.readyState!==oe.CLOSING&&b.close(1e3);}function d(h){m?.onCancel(),t.removeEventListener("abort",a),b.removeEventListener("close",d),b.removeEventListener("error",l),b.removeEventListener("open",g),b.removeEventListener("message",S),s(h);}function l(h){f||o(new Error("WebSocket failed to connect",{cause:h}));}let f=!1,m;function g(){f=!0,r({async send(h){let y=JSON.stringify(h);if(!m&&b.readyState===oe.OPEN&&b.bufferedAmount>e){let E,_=new Promise((V,bn)=>{let Xe=setInterval(()=>{(b.readyState!==oe.OPEN||!(b.bufferedAmount>e))&&(clearInterval(Xe),m=void 0,V());},16);E=()=>{m=void 0,clearInterval(Xe),bn(new Error("WebSocket was closed before payload could be sent"));};});m={onCancel:E,promise:_};}m&&await m.promise,b.send(y);},async*[Symbol.asyncIterator](){let h=Symbol();i.set(h,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let y=i.get(h);if(!y)throw new Error("Invariant: WebSocket message iterator is missing state storage");if(y.__hasPolled)throw new Error("Invariant: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise");let E=y.queuedMessages;if(E.length)y.queuedMessages=[],yield*E;else try{yield await new Promise((_,V)=>{i.set(h,{__hasPolled:!0,onError:V,onMessage:_});});}catch(_){if(_===en)return;throw new Error("WebSocket connection closed",{cause:_})}}}finally{i.delete(h);}}});}function S({data:h}){let y=JSON.parse(h);i.forEach((E,_)=>{if(E.__hasPolled){let{onMessage:V}=E;i.set(_,{__hasPolled:!1,queuedMessages:[]}),V(y);}else E.queuedMessages.push(y);});}let b=new oe(n);b.addEventListener("close",d),b.addEventListener("error",l),b.addEventListener("open",g),b.addEventListener("message",S);})}function on({sendBufferHighWatermark:e,url:t}){if(/^wss?:/i.test(t)===!1){let n=t.match(/^([^:]+):/);throw new DOMException(n?`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${n[1]}:' is not allowed.`:`Failed to construct 'WebSocket': The URL '${t}' is invalid.`)}return async function({payload:r,signal:o}){o?.throwIfAborted();let i=await ro({sendBufferHighWatermark:e,signal:o,url:t});return o?.throwIfAborted(),await i.send(r),{[Symbol.asyncIterator]:i[Symbol.asyncIterator].bind(i),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:i.send.bind(i)}}}var cn=Ze(qe(),1);c();c();var Se=class extends Error{constructor(n,r,o){let i=(typeof r[0]=="number"?r[0]:parseInt(r[0],10))+1,s="",a=i%10,d=i%100;a==1&&d!=11?s=i+"st":a==2&&d!=12?s=i+"nd":a==3&&d!=13?s=i+"rd":s=i+"th";let l=r.length>1?r.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${s} argument to the \`${n}\` 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=r,this.methodName=n,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var ye={onIntegerOverflow(e,t,n){throw new Se(e,t,n)}};c();c();function so(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function xe({getAbortSignalFromInputArgs:e,getCacheEntryMissingError:t,getCacheKeyFromInputArgs:n,onCacheHit:r,onCreateIterable:o}){let i=new Map;function s(a){let d=i.get(a);if(!d)throw t(a);return d}return async(...a)=>{let d=n(...a),l=e(...a);if(d===void 0)return await o(l,...a);let f=()=>{i.delete(d),l.removeEventListener("abort",m);},m=()=>{let g=s(d);g.purgeScheduled!==!0&&(g.purgeScheduled=!0,globalThis.queueMicrotask(()=>{g.purgeScheduled=!1,g.referenceCount===0&&(g.abortController.abort(),f());})),g.referenceCount--;};l.addEventListener("abort",m);try{let g=i.get(d);if(g){g.referenceCount++;let S=g.iterable,b="then"in S?await S:S;return await r(b,...a),b}else {let S=new AbortController,b=o(S.signal,...a),h={abortController:S,iterable:b,purgeScheduled:!1,referenceCount:1};i.set(d,h);let y=await b;return so(y,f),h.iterable=y,y}}catch(g){throw f(),g}}}var Ye=Symbol(void 0);function ao(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function an({getDeduplicationKey:e,rpcSubscriptions:t}){let n=new Map;return new Proxy(t,{defineProperty(){return !1},deleteProperty(){return !1},get(r,o,i){let s=Reflect.get(r,o,i);return typeof s!="function"?s:function(...a){let d=e(o,a);if(d===void 0)return s(...a);if(n.has(d))return n.get(d);let l=xe({getAbortSignalFromInputArgs:({abortSignal:m})=>m,getCacheEntryMissingError(m){return new Error(`Found no cache entry for subscription with deduplication key \`${m?.toString()}\``)},getCacheKeyFromInputArgs:()=>d,async onCacheHit(m,g){},async onCreateIterable(m,g){let b=await s(...a).subscribe({...g,abortSignal:m});return ao(b,()=>{n.delete(d);}),b}}),f={async subscribe(...m){let g=await l(...m),{abortSignal:S}=m[0],b;return {...g,async*[Symbol.asyncIterator](){b||(b=S.aborted?Promise.reject(Ye):new Promise((h,y)=>{S.addEventListener("abort",()=>{y(Ye);});}));try{let h=g[Symbol.asyncIterator]();for(;;){let y=await Promise.race([h.next(),b]);if(y.done)return;yield y.value;}}catch(h){if(h===Ye)return;throw n.delete(d),h}}}}};return n.set(d,f),f}}})}function fc(e){return nn({...e,api:Jt(ye)})}function mc(e){return G(Ve({...e,api:He(ye)}),t=>an({getDeduplicationKey:(...n)=>(0, cn.default)(n),rpcSubscriptions:t}))}function pc(e){return Ve({...e,api:Xt(ye)})}c();c();function dn(e,t){let n;return async function(o){let{payload:i,signal:s}=o,a=t(i);if(a===void 0)return await e(o);if(n||(Promise.resolve().then(()=>{n=void 0;}),n={}),n[a]==null){let l=new AbortController;n[a]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let d=n[a];if(d.numConsumers++,s){let l=d.responsePromise;return await new Promise((f,m)=>{let g=S=>{s.removeEventListener("abort",g),d.numConsumers-=1,d.numConsumers===0&&d.abortController.abort();let b=new DOMException(S.target.reason,"AbortError");m(b);};s.addEventListener("abort",g),l.then(f).finally(()=>{s.removeEventListener("abort",g);});})}else return await d.responsePromise}}c();var un=Ze(qe(),1);function co(e){return e==null||typeof e!="object"||Array.isArray(e)?!1:"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&typeof e.method=="string"&&"params"in e}function ln(e){return co(e)?(0, un.default)([e.method,e.params]):void 0}function uo(e){let t={};for(let n in e)t[n.toLowerCase()]=e[n];return t}function Ic(e){return G(rn({...e,headers:{...e.headers?uo(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),t=>dn(t,ln))}c();c();var lo={jsonrpc:"2.0",method:"ping"};function fn({intervalMs:e,transport:t}){let n=new Map;return async(...r)=>{let o=await t(...r),i;function s(){o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(lo);}function a(){clearInterval(i),i=setInterval(s,e);}if(n.has(o)===!1){n.set(o,{[Symbol.asyncIterator]:o[Symbol.asyncIterator].bind(o),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:(...f)=>(a(),o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...f))}),(async()=>{try{for await(let f of o)a();}catch{}finally{n.delete(o),clearInterval(i),d&&globalThis.window.removeEventListener("offline",d),l&&globalThis.window.removeEventListener("online",l);}})(),globalThis.navigator.onLine&&a();let d,l;d=()=>{clearInterval(i);},l=()=>{s(),a();},globalThis.window.addEventListener("offline",d),globalThis.window.addEventListener("online",l);}return n.get(o)}}c();var fo=Symbol(void 0);function mn({getShard:e,transport:t}){return xe({getAbortSignalFromInputArgs:({signal:n})=>n,getCacheEntryMissingError(n){return new Error(`Found no cache entry for connection with shard key \`${n?.toString()}\``)},getCacheKeyFromInputArgs:({payload:n})=>e?e(n):fo,onCacheHit:(n,{payload:r})=>n.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(r),onCreateIterable:(n,r)=>t({...r,signal:n})})}function $c(e){let{getShard:t,intervalMs:n,...r}=e;return G(on({...r,sendBufferHighWatermark:e.sendBufferHighWatermark??131072}),o=>fn({intervalMs:n??5e3,transport:o}),o=>mn({getShard:t,transport:o}))}c();c();function pn(e){return async function({abortSignal:n,lastValidBlockHeight:r}){let o=new AbortController;function i(){o.abort();}n.addEventListener("abort",i,{signal:o.signal});let s=await e.slotNotifications().subscribe({abortSignal:o.signal});try{for await(let a of s)if(a.slot>r)throw new Error("The network has progressed past the last block for which this transaction could have committed.")}finally{o.abort();}}}c();var Je=4+4+32;function gn(e,t){return async function({abortSignal:r,commitment:o,currentNonceValue:i,nonceAccountAddress:s}){let a=new AbortController;function d(){a.abort();}r.addEventListener("abort",d,{signal:a.signal});let l=await t.accountNotifications(s,{commitment:o,encoding:"base64"}).subscribe({abortSignal:a.signal});function f([S]){let h=ve.serialize(S).slice(Je,Je+32);return O.deserialize(h)[0]}let m=(async()=>{for await(let S of l){let b=f(S.value.data);if(b!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${b}\`.`)}})(),g=(async()=>{let{value:S}=await e.getAccountInfo(s,{commitment:o,dataSlice:{length:32,offset:Je},encoding:"base58"}).send({abortSignal:a.signal});if(!S)throw new Error(`No nonce account could be found at address \`${s}\`.`);let b=S.data[0];if(b!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${b}\`.`);await new Promise(()=>{});})();try{return await Promise.race([m,g])}finally{a.abort();}}}function ed({rpc:e,rpcSubscriptions:t}){let n=gn(e,t),r=re(e,t);return async function(i){await mo({...i,getNonceInvalidationPromise:n,getRecentSignatureConfirmationPromise:r});}}function td({rpc:e,rpcSubscriptions:t}){let n=pn(t),r=re(e,t);return async function(i){await po({...i,getBlockHeightExceedencePromise:n,getRecentSignatureConfirmationPromise:r});}}async function mo(e){await ne(Le(e.transaction),e,function({abortSignal:n,commitment:r,getNonceInvalidationPromise:o,transaction:i}){return [o({abortSignal:n,commitment:r,currentNonceValue:i.lifetimeConstraint.nonce,nonceAccountAddress:i.instructions[0].accounts[0].address})]});}async function po(e){await ne(Le(e.transaction),e,function({abortSignal:n,getBlockHeightExceedencePromise:r,transaction:o}){return [r({abortSignal:n,lastValidBlockHeight:o.lifetimeConstraint.lastValidBlockHeight})]});}
10
10
 
11
- exports.AccountRole = Dt;
12
- exports.appendTransactionInstruction = ss;
13
- exports.assertIsBase58EncodedAddress = No;
14
- exports.assertIsBlockhash = Qo;
15
- exports.assertIsDurableNonceTransaction = rs;
16
- exports.createAddressWithSeed = Oo;
17
- exports.createDefaultRpcSubscriptionsTransport = Vs;
18
- exports.createDefaultRpcTransport = Ws;
19
- exports.createSolanaRpc = zs;
20
- exports.createSolanaRpcSubscriptions = vs;
21
- exports.createTransaction = ts;
22
- exports.downgradeRoleToNonSigner = Do;
23
- exports.downgradeRoleToReadonly = Po;
24
- exports.generateKeyPair = Go;
25
- exports.getAddressFromPublicKey = $e;
26
- exports.getBase58EncodedAddressCodec = W;
27
- exports.getBase58EncodedAddressComparator = ce;
28
- exports.getBase64EncodedWireTransaction = cs;
29
- exports.getProgramDerivedAddress = ko;
30
- exports.isSignerRole = $o;
31
- exports.isWritableRole = Uo;
11
+ exports.AccountRole = Zn;
12
+ exports.address = Wn;
13
+ exports.appendTransactionInstruction = fa;
14
+ exports.assertIsAddress = xt;
15
+ exports.assertIsBlockhash = sa;
16
+ exports.assertIsDurableNonceTransaction = da;
17
+ exports.assertIsProgramDerivedAddress = ko;
18
+ exports.assertIsTransactionSignature = Lr;
19
+ exports.createAddressWithSeed = _o;
20
+ exports.createBlockHeightExceedencePromiseFactory = pn;
21
+ exports.createDefaultDurableNonceTransactionConfirmer = ed;
22
+ exports.createDefaultRecentTransactionConfirmer = td;
23
+ exports.createDefaultRpcSubscriptionsTransport = $c;
24
+ exports.createDefaultRpcTransport = Ic;
25
+ exports.createNonceInvalidationPromiseFactory = gn;
26
+ exports.createRecentSignatureConfirmationPromiseFactory = re;
27
+ exports.createSolanaRpc = fc;
28
+ exports.createSolanaRpcSubscriptions = mc;
29
+ exports.createSolanaRpcSubscriptions_UNSTABLE = pc;
30
+ exports.createTransaction = ca;
31
+ exports.downgradeRoleToNonSigner = Lo;
32
+ exports.downgradeRoleToReadonly = Uo;
33
+ exports.generateKeyPair = qo;
34
+ exports.getAddressCodec = J;
35
+ exports.getAddressComparator = ce;
36
+ exports.getAddressDecoder = wt;
37
+ exports.getAddressEncoder = Hn;
38
+ exports.getAddressFromPublicKey = At;
39
+ exports.getBase64EncodedWireTransaction = ha;
40
+ exports.getProgramDerivedAddress = Do;
41
+ exports.getSignatureFromTransaction = Le;
42
+ exports.getTransactionEncoder = $r;
43
+ exports.isAddress = Mn;
44
+ exports.isProgramDerivedAddress = No;
45
+ exports.isSignerRole = Fo;
46
+ exports.isTransactionSignature = pa;
47
+ exports.isWritableRole = Mo;
32
48
  exports.mergeRoles = Wo;
33
- exports.prependTransactionInstruction = is;
34
- exports.setTransactionFeePayer = os;
35
- exports.setTransactionLifetimeUsingBlockhash = es;
36
- exports.setTransactionLifetimeUsingDurableNonce = ns;
37
- exports.signBytes = We;
38
- exports.signTransaction = as;
39
- exports.upgradeRoleToSigner = Mo;
40
- exports.upgradeRoleToWritable = Fo;
41
- exports.verifySignature = Vo;
49
+ exports.prependTransactionInstruction = ma;
50
+ exports.requestAndConfirmAirdrop = $a;
51
+ exports.setTransactionFeePayer = la;
52
+ exports.setTransactionLifetimeUsingBlockhash = aa;
53
+ exports.setTransactionLifetimeUsingDurableNonce = ua;
54
+ exports.signBytes = Ct;
55
+ exports.signTransaction = ga;
56
+ exports.transactionSignature = ba;
57
+ exports.upgradeRoleToSigner = Ho;
58
+ exports.upgradeRoleToWritable = Ko;
59
+ exports.verifySignature = Yo;
60
+ exports.waitForDurableNonceTransactionConfirmation = mo;
61
+ exports.waitForRecentTransactionConfirmation = po;
42
62
 
43
63
  return exports;
44
64
 
@@ -0,0 +1,20 @@
1
+ import { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';
2
+ import { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';
3
+ import { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
4
+ import { TransactionSignature } from '@solana/transactions';
5
+ import { BaseTransactionConfirmationStrategyConfig } from './transaction-confirmation-strategy-racer';
6
+ import { getTimeoutPromise } from './transaction-confirmation-strategy-timeout';
7
+ interface DefaultSignatureOnlyRecentTransactionConfirmerConfig {
8
+ rpc: Rpc<GetSignatureStatusesApi>;
9
+ rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;
10
+ }
11
+ interface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {
12
+ getTimeoutPromise: typeof getTimeoutPromise;
13
+ signature: TransactionSignature;
14
+ }
15
+ /** @deprecated */
16
+ export declare function createDefaultSignatureOnlyRecentTransactionConfirmer({ rpc, rpcSubscriptions, }: DefaultSignatureOnlyRecentTransactionConfirmerConfig): (config: Omit<Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0], 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'>) => Promise<void>;
17
+ /** @deprecated */
18
+ export declare function waitForRecentTransactionConfirmationUntilTimeout(config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=airdrop-confirmer.d.ts.map