@solana/web3.js 2.0.0-experimental.95bfd9f → 2.0.0-experimental.9741939

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1155 -43
  3. package/dist/index.browser.cjs +776 -11
  4. package/dist/index.browser.cjs.map +1 -1
  5. package/dist/index.browser.js +750 -11
  6. package/dist/index.browser.js.map +1 -1
  7. package/dist/index.development.js +3181 -1022
  8. package/dist/index.development.js.map +1 -1
  9. package/dist/index.native.js +739 -11
  10. package/dist/index.native.js.map +1 -1
  11. package/dist/index.node.cjs +765 -11
  12. package/dist/index.node.cjs.map +1 -1
  13. package/dist/index.node.js +739 -11
  14. package/dist/index.node.js.map +1 -1
  15. package/dist/index.production.min.js +82 -26
  16. package/dist/types/airdrop-confirmer.d.ts +19 -0
  17. package/dist/types/airdrop-confirmer.d.ts.map +1 -0
  18. package/dist/types/airdrop.d.ts +21 -0
  19. package/dist/types/airdrop.d.ts.map +1 -0
  20. package/dist/types/cached-abortable-iterable.d.ts +11 -0
  21. package/dist/types/cached-abortable-iterable.d.ts.map +1 -0
  22. package/dist/types/index.d.ts +11 -2
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/rpc-request-coalescer.d.ts +1 -1
  25. package/dist/types/rpc-request-coalescer.d.ts.map +1 -1
  26. package/dist/types/rpc-request-deduplication.d.ts.map +1 -1
  27. package/dist/types/rpc-subscription-coalescer.d.ts +10 -0
  28. package/dist/types/rpc-subscription-coalescer.d.ts.map +1 -0
  29. package/dist/types/rpc-transport.d.ts +1 -2
  30. package/dist/types/rpc-transport.d.ts.map +1 -1
  31. package/dist/types/rpc-websocket-autopinger.d.ts +8 -0
  32. package/dist/types/rpc-websocket-autopinger.d.ts.map +1 -0
  33. package/dist/types/rpc-websocket-connection-sharding.d.ts +13 -0
  34. package/dist/types/rpc-websocket-connection-sharding.d.ts.map +1 -0
  35. package/dist/types/rpc-websocket-transport.d.ts +12 -0
  36. package/dist/types/rpc-websocket-transport.d.ts.map +1 -0
  37. package/dist/types/rpc.d.ts +4 -3
  38. package/dist/types/rpc.d.ts.map +1 -1
  39. package/dist/types/send-transaction.d.ts +38 -0
  40. package/dist/types/send-transaction.d.ts.map +1 -0
  41. package/dist/types/transaction-confirmation-strategy-blockheight.d.ts +9 -0
  42. package/dist/types/transaction-confirmation-strategy-blockheight.d.ts.map +1 -0
  43. package/dist/types/transaction-confirmation-strategy-nonce.d.ts +14 -0
  44. package/dist/types/transaction-confirmation-strategy-nonce.d.ts.map +1 -0
  45. package/dist/types/transaction-confirmation-strategy-racer.d.ts +14 -0
  46. package/dist/types/transaction-confirmation-strategy-racer.d.ts.map +1 -0
  47. package/dist/types/transaction-confirmation-strategy-recent-signature.d.ts +12 -0
  48. package/dist/types/transaction-confirmation-strategy-recent-signature.d.ts.map +1 -0
  49. package/dist/types/transaction-confirmation-strategy-timeout.d.ts +8 -0
  50. package/dist/types/transaction-confirmation-strategy-timeout.d.ts.map +1 -0
  51. package/dist/types/transaction-confirmation.d.ts +32 -0
  52. package/dist/types/transaction-confirmation.d.ts.map +1 -0
  53. package/package.json +25 -24
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../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/send-transaction.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","commitmentComparator"],"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/rpc-types';\nexport * from '@solana/transactions';\nexport * from './airdrop';\nexport * from './rpc';\nexport * from './rpc-transport';\nexport * from './rpc-websocket-transport';\nexport * from './send-transaction';\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 { Signature } from '@solana/keys';\nimport { Commitment } from '@solana/rpc-types';\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\ntype WithNonNullableAbortSignal<T> = Omit<T, 'abortSignal'> & Readonly<{ abortSignal: AbortSignal }>;\n\nexport async function raceStrategies<TConfig extends BaseTransactionConfirmationStrategyConfig>(\n signature: Signature,\n config: TConfig,\n getSpecificStrategiesForRace: (config: WithNonNullableAbortSignal<TConfig>) => readonly Promise<unknown>[],\n) {\n const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config;\n callerAbortSignal?.throwIfAborted();\n const abortController = new AbortController();\n if (callerAbortSignal) {\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n }\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 { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, SignatureNotificationsApi } from '@solana/rpc-core';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\n\ntype GetRecentSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n signature: Signature;\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-types';\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 { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, SignatureNotificationsApi } from '@solana/rpc-core';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';\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: Signature;\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 { Address } from '@solana/addresses';\nimport { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, RequestAirdropApi, SignatureNotificationsApi } from '@solana/rpc-core';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';\nimport { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';\n\nimport { createDefaultSignatureOnlyRecentTransactionConfirmer } from './airdrop-confirmer';\n\ntype AirdropRequesterConfig = Readonly<{\n rpc: Rpc<RequestAirdropApi & GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;\n}>;\n\nexport function createDefaultAirdropRequester({ rpc, rpcSubscriptions }: AirdropRequesterConfig) {\n const confirmSignatureOnlyTransaction = createDefaultSignatureOnlyRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n });\n return async function requestAirdrop(\n config: Omit<Parameters<typeof requestAndConfirmAirdrop>[0], 'confirmSignatureOnlyTransaction' | 'rpc'>,\n ) {\n return await requestAndConfirmAirdrop({\n ...config,\n confirmSignatureOnlyTransaction,\n rpc,\n });\n };\n}\n\nexport async function requestAndConfirmAirdrop({\n abortSignal,\n commitment,\n confirmSignatureOnlyTransaction,\n lamports,\n recipientAddress,\n rpc,\n}: Readonly<{\n abortSignal?: AbortSignal;\n commitment: Commitment;\n confirmSignatureOnlyTransaction: ReturnType<typeof createDefaultSignatureOnlyRecentTransactionConfirmer>;\n lamports: LamportsUnsafeBeyond2Pow53Minus1;\n recipientAddress: Address;\n rpc: Rpc<RequestAirdropApi>;\n}>): Promise<Signature> {\n const airdropTransactionSignature = await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal });\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, type Rpc, type RpcSubscriptions } from '@solana/rpc-transport';\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';\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, type IRpcTransport } from '@solana/rpc-transport';\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 type { IRpcTransport } from '@solana/rpc-transport';\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, type IRpcWebSocketTransport } from '@solana/rpc-transport';\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 type { IRpcWebSocketTransport } from '@solana/rpc-transport';\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: number | 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 type { IRpcWebSocketTransport } from '@solana/rpc-transport';\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 { Signature } from '@solana/keys';\nimport type { SendTransactionApi } from '@solana/rpc-core';\nimport type { Rpc } from '@solana/rpc-transport';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\nimport {\n BaseTransaction,\n getBase64EncodedWireTransaction,\n IDurableNonceTransaction,\n IFullySignedTransaction,\n ITransactionWithBlockhashLifetime,\n ITransactionWithFeePayer,\n} from '@solana/transactions';\n\nimport {\n createDefaultDurableNonceTransactionConfirmer,\n createDefaultRecentTransactionConfirmer,\n} from './transaction-confirmation';\n\ninterface DurableNonceTransactionSenderFactoryConfig {\n rpc: Rpc<SendTransactionApi> & Parameters<typeof createDefaultDurableNonceTransactionConfirmer>[0]['rpc'];\n rpcSubscriptions: Parameters<typeof createDefaultDurableNonceTransactionConfirmer>[0]['rpcSubscriptions'];\n}\n\ninterface TransactionWithBlockhashLifetimeSenderFactoryConfig {\n rpc: Rpc<SendTransactionApi> & Parameters<typeof createDefaultRecentTransactionConfirmer>[0]['rpc'];\n rpcSubscriptions: Parameters<typeof createDefaultRecentTransactionConfirmer>[0]['rpcSubscriptions'];\n}\n\ninterface SendAndConfirmDurableNonceTransactionConfig\n extends SendTransactionInternalConfig,\n SendTransactionConfigWithoutEncoding {\n confirmDurableNonceTransaction: ReturnType<typeof createDefaultDurableNonceTransactionConfirmer>;\n transaction: SendableTransaction & IDurableNonceTransaction;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeConfig\n extends SendTransactionInternalConfig,\n SendTransactionConfigWithoutEncoding {\n confirmRecentTransaction: ReturnType<typeof createDefaultRecentTransactionConfirmer>;\n transaction: SendableTransaction & ITransactionWithBlockhashLifetime;\n}\n\ninterface SendTransactionInternalConfig extends SendTransactionConfigWithoutEncoding {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n rpc: Rpc<SendTransactionApi>;\n transaction: SendableTransaction;\n}\n\ntype SendableTransaction = BaseTransaction &\n (ITransactionWithBlockhashLifetime | IDurableNonceTransaction) &\n ITransactionWithFeePayer &\n IFullySignedTransaction;\ntype SendTransactionConfig = Parameters<SendTransactionApi['sendTransaction']>[1];\ninterface SendTransactionConfigWithoutEncoding extends Omit<NonNullable<SendTransactionConfig>, 'encoding'> {}\n\nfunction getSendTransactionConfigWithAdjustedPreflightCommitment(\n commitment: Commitment,\n config?: SendTransactionConfigWithoutEncoding,\n): SendTransactionConfigWithoutEncoding | void {\n if (\n // The developer has supplied no value for `preflightCommitment`.\n !config?.preflightCommitment &&\n // The value of `commitment` is lower than the server default of `preflightCommitment`.\n commitmentComparator(commitment, 'finalized' /* default value of `preflightCommitment` */) < 0\n ) {\n return {\n ...config,\n // In the common case, it is unlikely that you want to simulate a transaction at\n // `finalized` commitment when your standard of commitment for confirming the\n // transaction is lower. Cap the simulation commitment level to the level of the\n // confirmation commitment.\n preflightCommitment: commitment,\n };\n }\n // The commitment at which the developer wishes to confirm the transaction is at least as\n // high as the commitment at which they want to simulate it. Honour the config as-is.\n return config;\n}\n\nasync function sendTransaction_INTERNAL({\n abortSignal,\n commitment,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendTransactionInternalConfig): Promise<Signature> {\n const base64EncodedWireTransaction = getBase64EncodedWireTransaction(transaction);\n return await rpc\n .sendTransaction(base64EncodedWireTransaction, {\n ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),\n encoding: 'base64',\n })\n .send({ abortSignal });\n}\n\nexport function createDefaultDurableNonceTransactionSender({\n rpc,\n rpcSubscriptions,\n}: DurableNonceTransactionSenderFactoryConfig) {\n const confirmDurableNonceTransaction = createDefaultDurableNonceTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n });\n return async function sendDurableNonceTransaction(\n transaction: BaseTransaction & ITransactionWithFeePayer & IDurableNonceTransaction & IFullySignedTransaction,\n config: Omit<\n Parameters<typeof sendAndConfirmDurableNonceTransaction>[0],\n 'confirmDurableNonceTransaction' | 'rpc' | 'transaction'\n >,\n ): Promise<void> {\n await sendAndConfirmDurableNonceTransaction({\n ...config,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n });\n };\n}\n\nexport function createDefaultTransactionSender({\n rpc,\n rpcSubscriptions,\n}: TransactionWithBlockhashLifetimeSenderFactoryConfig) {\n const confirmRecentTransaction = createDefaultRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n });\n return async function sendTransaction(\n transaction: SendableTransaction & ITransactionWithBlockhashLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmTransaction>[0],\n 'confirmRecentTransaction' | 'rpc' | 'transaction'\n >,\n ): Promise<void> {\n await sendAndConfirmTransaction({\n ...config,\n confirmRecentTransaction,\n rpc,\n transaction,\n });\n };\n}\n\nexport async function sendAndConfirmDurableNonceTransaction({\n abortSignal,\n commitment,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmDurableNonceTransactionConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmDurableNonceTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n\nexport async function sendAndConfirmTransaction({\n abortSignal,\n commitment,\n confirmRecentTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmTransactionWithBlockhashLifetimeConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmRecentTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n","import type {\n AccountNotificationsApi,\n GetAccountInfoApi,\n GetSignatureStatusesApi,\n SignatureNotificationsApi,\n Slot,\n SlotNotificationsApi,\n} from '@solana/rpc-core';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';\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 type { Slot, SlotNotificationsApi } from '@solana/rpc-core';\nimport type { RpcSubscriptions } from '@solana/rpc-transport';\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 { Address } from '@solana/addresses';\nimport { getBase58Decoder, getBase64Encoder } from '@solana/codecs-strings';\nimport type { AccountNotificationsApi, Base64EncodedDataResponse, GetAccountInfoApi } from '@solana/rpc-core';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';\nimport { Commitment } from '@solana/rpc-types';\nimport { Nonce } from '@solana/transactions';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n currentNonceValue: Nonce;\n nonceAccountAddress: Address;\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 const base58Decoder = getBase58Decoder();\n const base64Encoder = getBase64Encoder();\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64Encoder.encode(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58Decoder.decode(nonceValueBytes) 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,36 +2,92 @@ this.globalThis = this.globalThis || {};
2
2
  this.globalThis.solanaWeb3 = (function (exports) {
3
3
  'use strict';
4
4
 
5
- var _e=Object.create;var Z=Object.defineProperty;var Le=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Pe=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var je=(e,r,t)=>r in e?Z(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var Fe=(e,r)=>()=>(e&&(r=e(e=0)),r);var Ke=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Me=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of De(r))!Ue.call(e,o)&&o!==t&&Z(e,o,{get:()=>r[o],enumerable:!(n=Le(r,o))||n.enumerable});return e};var We=(e,r,t)=>(t=e!=null?_e(Pe(e)):{},Me(r||!e||!e.__esModule?Z(t,"default",{value:e,enumerable:!0}):t,e));var b=(e,r,t)=>(je(e,typeof r!="symbol"?r+"":r,t),t);var a=Fe(()=>{});var Ce=Ke((Co,ve)=>{a();var jr=Object.prototype.toString,Fr=Object.keys||function(e){var r=[];for(var t in e)r.push(t);return r};function L(e,r){var t,n,o,s,i,c,u;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return L(e.toJSON(),r);if(u=jr.call(e),u==="[object Array]"){for(o="[",n=e.length-1,t=0;t<n;t++)o+=L(e[t],!0)+",";return n>-1&&(o+=L(e[t],!0)),o+"]"}else if(u==="[object Object]"){for(s=Fr(e).sort(),n=s.length,o="",t=0;t<n;)i=s[t],c=L(e[i],!1),c!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+c),t++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return r?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}ve.exports=function(e){var r=L(e,!1);if(r!==void 0)return ""+r};});a();a();var Ge=(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))(Ge||{}),ae=2,Q=1;function Hr(e){return e&~ae}function Vr(e){return e&~Q}function qr(e){return e>=2}function Jr(e){return (e&Q)!==0}function Yr(e,r){return e|r}function Xr(e){return e|ae}function Zr(e){return e|Q}a();a();a();a();var w=e=>{let r=e.reduce((o,s)=>o+s.length,0),t=new Uint8Array(r),n=0;return e.forEach(o=>{t.set(o,n),n+=o.length;}),t},ce=(e,r)=>{if(e.length>=r)return e;let t=new Uint8Array(r).fill(0);return t.set(e),t},D=(e,r)=>ce(e.slice(0,r),r);a();var S=class extends Error{constructor(t){super(`Serializer [${t}] cannot deserialize empty buffers.`);b(this,"name","DeserializingEmptyBufferError");}},y=class extends Error{constructor(t,n,o){super(`Serializer [${t}] expected ${n} bytes, got ${o}.`);b(this,"name","NotEnoughBytesError");}},T=class extends Error{constructor(t){t??(t="Expected a fixed-size serializer, got a variable-size one.");super(t);b(this,"name","ExpectedFixedSizeSerializerError");}};a();function C(e,r,t){return {description:t??`fixed(${r}, ${e.description})`,fixedSize:r,maxSize:r,serialize:n=>D(e.serialize(n),r),deserialize:(n,o=0)=>{if(n=n.slice(o,o+r),n.length<r)throw new y("fixSerializer",r,n.length);e.fixedSize!==null&&(n=D(n,e.fixedSize));let[s]=e.deserialize(n,0);return [s,o+r]}}}a();function P(e,r,t){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(r(n)),deserialize:(n,o=0)=>{let[s,i]=e.deserialize(n,o);return t?[t(s,n,o),i]:[s,i]}}}a();a();a();var U=class extends Error{constructor(t,n,o){let s=`Expected a string of base ${n}, got [${t}].`;super(s);b(this,"name","InvalidBaseStringError");this.cause=o;}};var ue=e=>{let r=e.length,t=BigInt(r);return {description:`base${r}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new U(n,r);if(n==="")return new Uint8Array;let o=[...n],s=o.findIndex(h=>h!==e[0]);s=s===-1?o.length:s;let i=Array(s).fill(0);if(s===o.length)return Uint8Array.from(i);let c=o.slice(s),u=0n,d=1n;for(let h=c.length-1;h>=0;h-=1)u+=d*BigInt(e.indexOf(c[h])),d*=t;let p=[];for(;u>0n;)p.unshift(Number(u%256n)),u/=256n;return Uint8Array.from(i.concat(p))},deserialize(n,o=0){if(n.length===0)return ["",0];let s=n.slice(o),i=s.findIndex(p=>p!==0);i=i===-1?s.length:i;let c=e[0].repeat(i);if(i===s.length)return [c,n.length];let u=s.slice(i).reduce((p,h)=>p*256n+BigInt(h),0n),d=[];for(;u>0n;)d.unshift(e[Number(u%t)]),u/=t;return [c+d.join(""),n.length]}}};a();var I=ue("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");a();var de=e=>e.replace(/\u0000/g,"");a();var ee={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,r=0){let t=new TextDecoder().decode(e.slice(r));return [de(t),e.length]}};a();a();var j;(function(e){e.Little="le",e.Big="be";})(j||(j={}));a();var F=class extends RangeError{constructor(t,n,o,s){super(`Serializer [${t}] expected number to be between ${n} and ${o}, got ${s}.`);b(this,"name","NumberOutOfRangeError");}};a();function K(e){let r,t=e.name;return e.size>1&&(r=!("endian"in e.options)||e.options.endian===j.Little,t+=r?"(le)":"(be)"),{description:e.options.description??t,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&re(e.name,e.range[0],e.range[1],n);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),n,r),new Uint8Array(o)},deserialize(n,o=0){let s=n.slice(o,o+e.size);qe("i8",s,e.size);let i=Ve(s);return [e.get(i,r),o+e.size]}}}var He=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),Ve=e=>new DataView(He(e)),re=(e,r,t,n)=>{if(n<r||n>t)throw new F(e,r,t,n)},qe=(e,r,t)=>{if(r.length===0)throw new S(e);if(r.length<t)throw new y(e,t,r.length)};a();var E=(e={})=>K({name:"u8",size:1,range:[0,+"0xff"],set:(r,t)=>r.setUint8(0,Number(t)),get:r=>r.getUint8(0),options:e});a();var k=(e={})=>K({name:"u32",size:4,range:[0,+"0xffffffff"],set:(r,t,n)=>r.setUint32(0,Number(t),n),get:(r,t)=>r.getUint32(0,t),options:e});a();var x=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:r=>{re("shortU16",0,65535,r);let t=[0];for(let n=0;;n+=1){let o=r>>n*7;if(o===0)break;let s=127&o;t[n]=s,n>0&&(t[n-1]|=128);}return new Uint8Array(t)},deserialize:(r,t=0)=>{let n=0,o=0;for(;++o;){let s=o-1,i=r[t+s],c=127&i;if(n|=c<<s*7,!(i&128))break}return [n,t+o]}});a();a();var M=class extends Error{constructor(t,n,o){super(`Expected [${t}] to have ${n} items, got ${o}.`);b(this,"name","InvalidNumberOfItemsError");}},W=class extends Error{constructor(t,n){super(`The remainder of the buffer (${t} bytes) cannot be split into chunks of ${n} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${t} modulo ${n} should be equal to zero.`);b(this,"name","InvalidArrayLikeRemainderSizeError");}},G=class extends Error{constructor(t){super(`Unrecognized array-like serializer size: ${JSON.stringify(t)}`);b(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};a();a();function N(e){return e.reduce((r,t)=>r===null||t===null?null:r+t,0)}function le(e,r,t,n){if(typeof e=="number")return [e,n];if(typeof e=="object")return e.deserialize(t,n);if(e==="remainder"){let o=N(r);if(o===null)throw new T('Serializers of "remainder" size must have fixed-size items.');let s=t.slice(n).length;if(s%o!==0)throw new W(s,o);return [s/o,n]}throw new G(e)}function v(e){return typeof e=="object"?e.description:`${e}`}function te(e,r){if(typeof e!="number")return null;if(e===0)return 0;let t=N(r);return t===null?null:t*e}function pe(e,r){return typeof e=="object"?e.serialize(r):new Uint8Array}function z(e,r={}){let t=r.size??k();if(t==="remainder"&&e.fixedSize===null)throw new T('Serializers of "remainder" size must have fixed-size items.');return {description:r.description??`array(${e.description}; ${v(t)})`,fixedSize:te(t,[e.fixedSize]),maxSize:te(t,[e.maxSize]),serialize:n=>{if(typeof t=="number"&&n.length!==t)throw new M("array",t,n.length);return w([pe(t,n.length),...n.map(o=>e.serialize(o))])},deserialize:(n,o=0)=>{if(typeof t=="object"&&n.slice(o).length===0)return [[],o];let[s,i]=le(t,[e.fixedSize],n,o);o=i;let c=[];for(let u=0;u<s;u+=1){let[d,p]=e.deserialize(n,o);c.push(d),o=p;}return [c,o]}}}a();function H(e={}){let r=e.size??"variable",t=e.description??`bytes(${v(r)})`,n={description:t,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,s=0)=>{let i=o.slice(s);return [i,s+i.length]}};return r==="variable"?n:typeof r=="number"?C(n,r,t):{description:t,fixedSize:null,maxSize:null,serialize:o=>{let s=n.serialize(o),i=r.serialize(s.length);return w([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new S("bytes");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let d=o.slice(s,s+u);if(d.length<u)throw new y("bytes",u,d.length);let[p,h]=n.deserialize(d);return s+=h,[p,s]}}}a();function B(e={}){let r=e.size??k(),t=e.encoding??ee,n=e.description??`string(${t.description}; ${v(r)})`;return r==="variable"?{...t,description:n}:typeof r=="number"?C(t,r,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let s=t.serialize(o),i=r.serialize(s.length);return w([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new S("string");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let d=o.slice(s,s+u);if(d.length<u)throw new y("string",u,d.length);let[p,h]=t.deserialize(d);return s+=h,[p,s]}}}a();function A(e,r={}){let t=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:r.description??`struct(${t})`,fixedSize:N(e.map(([,n])=>n.fixedSize)),maxSize:N(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([s,i])=>i.serialize(n[s]));return w(o)},deserialize:(n,o=0)=>{let s={};return e.forEach(([i,c])=>{let[u,d]=c.deserialize(n,o);o=d,s[i]=u;}),[s,o]}}}function Vn(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=I.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:r})}}function V(e){return B({description:e?.description??(""),encoding:I,size:32})}function q(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}function J(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var R;async function Ye(e){return R===void 0&&(R=new Promise(r=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{r(R=!1);}).then(()=>{r(R=!0);});})),typeof R=="boolean"?R:await R}async function Xe(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Ye(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
5
+ var Sn=Object.create;var Re=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var wn=Object.getOwnPropertyNames;var En=Object.getPrototypeOf,Tn=Object.prototype.hasOwnProperty;var An=(e,t,n)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Cn=(e,t)=>()=>(e&&(t=e(e=0)),t);var In=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Rn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of wn(t))!Tn.call(e,o)&&o!==n&&Re(e,o,{get:()=>t[o],enumerable:!(r=yn(t,o))||r.enumerable});return e};var at=(e,t,n)=>(n=e!=null?Sn(En(e)):{},Rn(t||!e||!e.__esModule?Re(n,"default",{value:e,enumerable:!0}):n,e));var z=(e,t,n)=>(An(e,typeof t!="symbol"?t+"":t,n),n);var l=Cn(()=>{});var nt=In((ga,rn)=>{l();var fo=Object.prototype.toString,mo=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};function se(e,t){var n,r,o,i,a,s,c;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 se(e.toJSON(),t);if(c=fo.call(e),c==="[object Array]"){for(o="[",r=e.length-1,n=0;n<r;n++)o+=se(e[n],!0)+",";return r>-1&&(o+=se(e[n],!0)),o+"]"}else if(c==="[object Object]"){for(i=mo(e).sort(),r=i.length,o="",n=0;n<r;)a=i[n],s=se(e[a],!1),s!==void 0&&(o&&(o+=","),o+=JSON.stringify(a)+":"+s),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}}rn.exports=function(e){var t=se(e,!1);if(t!==void 0)return ""+t};});l();l();l();function j(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 xn=(e,t)=>{if(e.length>=t)return e;let n=new Uint8Array(t).fill(0);return n.set(e),n},vn=(e,t)=>xn(e.length<=t?e:e.slice(0,t),t);function v(e,t){return "fixedSize"in t?t.fixedSize:t.getSizeFromValue(e)}function E(e){return Object.freeze({...e,encode:t=>{let n=new Uint8Array(v(t,e));return e.write(t,n,0),n}})}function A(e){return Object.freeze({...e,decode:(t,n=0)=>e.read(t,n)[0]})}function R(e){return "fixedSize"in e&&typeof e.fixedSize=="number"}function xe(e,t){if(!R(e))throw new Error(t!=null?t:"Expected a fixed-size codec, got a variable-size one.")}function Nn(e){return !R(e)}function P(e,t){if(R(e)!==R(t))throw new Error("Encoder and decoder must either both be fixed-size or variable-size.");if(R(e)&&R(t)&&e.fixedSize!==t.fixedSize)throw new Error(`Encoder and decoder must have the same fixed size, got [${e.fixedSize}] and [${t.fixedSize}].`);if(!R(e)&&!R(t)&&e.maxSize!==t.maxSize)throw new Error(`Encoder and decoder must have the same max size, got [${e.maxSize}] and [${t.maxSize}].`);return {...t,...e,decode:t.decode,encode:e.encode,read:t.read,write:e.write}}function ce(e,t){return E({fixedSize:t,write:(n,r,o)=>{let i=e.encode(n),a=i.length>t?i.slice(0,t):i;return r.set(a,o),o+t}})}function ue(e,t){return A({fixedSize:t,read:(n,r)=>{U("fixCodec",t,n,r),(r>0||n.length>t)&&(n=n.slice(r,r+t)),R(e)&&(n=vn(n,e.fixedSize));let[o]=e.read(n,0);return [o,r+t]}})}function W(e,t){return E({...Nn(e)?{...e,getSizeFromValue:n=>e.getSizeFromValue(t(n))}:e,write:(n,r,o)=>e.write(t(n),r,o)})}function Z(e,t){return A({...e,read:(n,r)=>{let[o,i]=e.read(n,r);return [t(o,n,r),i]}})}l();l();function st(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 ct(e){return (e==null?void 0:e.endian)!==1}function ut(e){return E({fixedSize:e.size,write(t,n,r){e.range&&st(e.name,e.range[0],e.range[1],t);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),t,ct(e.config)),n.set(new Uint8Array(o),r),r+e.size}})}function dt(e){return A({fixedSize:e.size,read(t,n=0){j(e.name,t,n),U(e.name,e.size,t,n);let r=new DataView(Bn(t,n,e.size));return [e.get(r,ct(e.config)),n+e.size]}})}function Bn(e,t,n){let r=e.byteOffset+(t!=null?t:0),o=n!=null?n:e.byteLength;return e.buffer.slice(r,r+o)}var B=()=>E({getSizeFromValue:e=>e<=127?1:e<=16383?2:3,maxSize:3,write:(e,t,n)=>{st("shortU16",0,65535,e);let r=[0];for(let o=0;;o+=1){let i=e>>o*7;if(i===0)break;let a=127&i;r[o]=a,o>0&&(r[o-1]|=128);}return t.set(r,n),n+r.length}}),D=()=>A({maxSize:3,read:(e,t)=>{let n=0,r=0;for(;++r;){let o=r-1,i=e[t+o],a=127&i;if(n|=a<<o*7,!(i&128))break}return [n,t+r]}});var de=(e={})=>ut({config:e,name:"u32",range:[0,+"0xffffffff"],set:(t,n,r)=>t.setUint32(0,n,r),size:4}),le=(e={})=>dt({config:e,get:(t,n)=>t.getUint32(0,n),name:"u32",size:4});var M=()=>ut({name:"u8",range:[0,+"0xff"],set:(e,t)=>e.setUint8(0,t),size:1}),$=()=>dt({get:e=>e.getUint8(0),name:"u8",size:1});function Dn(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=>E({getSizeFromValue:t=>{let[n,r]=lt(t,e[0]);if(r==="")return t.length;let o=ft(r,e);return n.length+Math.ceil(o.toString(16).length/2)},write(t,n,r){if(Dn(e,t),t==="")return r;let[o,i]=lt(t,e[0]);if(i==="")return n.set(new Uint8Array(o.length).fill(0),r),r+o.length;let a=ft(i,e),s=[];for(;a>0n;)s.unshift(Number(a%256n)),a/=256n;let c=[...Array(o.length).fill(0),...s];return n.set(c,r),r+c.length}}),zn=e=>A({read(t,n){let r=n===0?t:t.slice(n);if(r.length===0)return ["",0];let o=r.findIndex(c=>c!==0);o=o===-1?r.length:o;let i=e[0].repeat(o);if(o===r.length)return [i,t.length];let a=r.slice(o).reduce((c,d)=>c*256n+BigInt(d),0n),s=Pn(a,e);return [i+s,t.length]}});function lt(e,t){let n=[...e].findIndex(r=>r!==t);return n===-1?[e,""]:[e.slice(0,n),e.slice(n)]}function ft(e,t){let n=BigInt(t.length);return [...e].reduce((r,o)=>r*n+BigInt(t.indexOf(o)),0n)}function Pn(e,t){let n=BigInt(t.length),r=[];for(;e>0n;)r.unshift(t[Number(e%n)]),e/=n;return r.join("")}var gt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",_=()=>kn(gt),V=()=>zn(gt);var pt=()=>E({getSizeFromValue:e=>{try{return atob(e).length}catch{throw new Error(`Expected a string of base 64, got [${e}].`)}},write(e,t,n){try{let r=atob(e).split("").map(o=>o.charCodeAt(0));return t.set(r,n),r.length+n}catch{throw new Error(`Expected a string of base 64, got [${e}].`)}}}),bt=()=>A({read(e,t=0){let n=e.slice(t);return [btoa(String.fromCharCode(...n)),e.length]}});var _n=e=>e.replace(/\u0000/g,"");var Fn=globalThis.TextDecoder,mt=globalThis.TextEncoder,Ln=()=>{let e;return E({getSizeFromValue:t=>(e||(e=new mt)).encode(t).length,write:(t,n,r)=>{let o=(e||(e=new mt)).encode(t);return n.set(o,r),r+o.length}})},On=()=>{let e;return A({read(t,n){let r=(e||(e=new Fn)).decode(t.slice(n));return [_n(r),t.length]}})};function fe(e={}){var r,o;let t=(r=e.size)!=null?r:de(),n=(o=e.encoding)!=null?o:Ln();return t==="variable"?n:typeof t=="number"?ce(n,t):E({getSizeFromValue:i=>{let a=v(i,n);return v(a,t)+a},write:(i,a,s)=>{let c=v(i,n);return s=t.write(c,a,s),n.write(i,a,s)}})}function me(e={}){var r,o;let t=(r=e.size)!=null?r:le(),n=(o=e.encoding)!=null?o:On();return t==="variable"?n:typeof t=="number"?ue(n,t):A({read:(i,a=0)=>{j("string",i,a);let[s,c]=t.read(i,a),d=Number(s);a=c;let f=i.slice(a,a+d);U("string",d,f);let[m,g]=n.read(f,0);return a+=g,[m,a]}})}l();function Q(){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 K;async function Un(e){return K===void 0&&(K=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(K=!1);}).then(()=>{t(K=!0);});})),typeof K=="boolean"?K:await K}async function ht(){var e;if(Q(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.digest)!="function")throw new Error("No digest implementation could be found")}async function St(){var e;if(Q(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.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 Ze(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function Qe(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function er(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}async function qn(){return await Xe(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function fe(e){if(await Ze(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let r=await crypto.subtle.exportKey("raw",e),[t]=V().deserialize(new Uint8Array(r));return t}async function me(e,r){await Qe();let t=await crypto.subtle.sign("Ed25519",e,r);return new Uint8Array(t)}async function Jn(e,r,t){return await er(),await crypto.subtle.verify("Ed25519",e,r,t)}a();function eo(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=I.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a blockhash`,{cause:r})}}function ro({version:e}){let r={instructions:[],version:e};return Object.freeze(r),r}function to(e,r){if("feePayer"in r&&e===r.feePayer)return r;let t;if("signatures"in r){let{signatures:n,...o}=r;t={...o,feePayer:e};}else t={...r,feePayer:e};return Object.freeze(t),t}function ye(e,r){let t;if("signatures"in e){let{signatures:n,...o}=e;t={...o,instructions:r};}else t={...e,instructions:r};return t}function no(e,r){let t=[...r.instructions,e],n=ye(r,t);return Object.freeze(n),n}function oo(e,r){let t=[e,...r.instructions],n=ye(r,t);return Object.freeze(n),n}var O=(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))(O||{}),rr=1;function $(e){return e>=2}function _(e){return (e&rr)!==0}function ge(e,r){return e|r}function he(e,r,t){e[r]=t(e[r]??{role:O.READONLY});}var m=Symbol("AddressMapTypeProperty");function tr(e,r){let t={[e]:{[m]:0,role:O.WRITABLE_SIGNER}},n=new Set;for(let o of r){he(t,o.programAddress,i=>{if(n.add(o.programAddress),m in i){if(_(i.role))switch(i[m]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[m]===2)return i}return {[m]:2,role:O.READONLY}});let s;if(o.accounts)for(let i of o.accounts)he(t,i.address,c=>{let{address:u,...d}=i;if(m in c)switch(c[m]){case 0:return c;case 1:{let p=ge(c.role,d.role);if("lookupTableAddress"in d){if(c.lookupTableAddress!==d.lookupTableAddress&&(s||(s=q()))(d.lookupTableAddress,c.lookupTableAddress)<0)return {[m]:1,...d,role:p}}else if($(d.role))return {[m]:2,role:p};return c.role!==p?{...c,role:p}:c}case 2:{let p=ge(c.role,d.role);if(n.has(i.address)){if(_(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&&!$(c.role)?{...d,[m]:1,role:p}:c.role!==p?{...c,role:p}:c}}return "lookupTableAddress"in d?{...d,[m]:1}:{...d,[m]:2}});}return t}function nr(e){let r;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[m]!==i[m]){if(o[m]===0)return -1;if(i[m]===0)return 1;if(o[m]===2)return -1;if(i[m]===2)return 1}let c=$(o.role);if(c!==$(i.role))return c?-1:1;let u=_(o.role);return u!==_(i.role)?u?-1:1:(r||(r=q()),o[m]===1&&i[m]===1&&o.lookupTableAddress!==i.lookupTableAddress?r(o.lookupTableAddress,i.lookupTableAddress):r(n,s))}).map(([n,o])=>({address:n,...o}))}function or(e){var r;let t={};for(let n of e){if(!("lookupTableAddress"in n))continue;let o=t[r=n.lookupTableAddress]||(t[r]={readableIndices:[],writableIndices:[]});n.role===O.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(t).sort(q()).map(n=>({lookupTableAddress:n,...t[n]}))}function sr(e){let r=0,t=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=_(o.role);$(o.role)?(n++,s||t++):s||r++;}return {numReadonlyNonSignerAccounts:r,numReadonlySignerAccounts:t,numSignerAccounts:n}}function ir(e){let r={};for(let[t,n]of e.entries())r[n.address]=t;return r}function ar(e,r){let t=ir(r);return e.map(({accounts:n,data:o,programAddress:s})=>({programAddressIndex:t[s],...n?{accountIndices:n.map(({address:i})=>t[i])}:null,...o?{data:o}:null}))}function cr(e){return "nonce"in e?e.nonce:e.blockhash}function ur(e){let r=e.findIndex(n=>"lookupTableAddress"in n);return (r===-1?e:e.slice(0,r)).map(({address:n})=>n)}function xe(e){let r=tr(e.feePayer,e.instructions),t=nr(r);return {...e.version!=="legacy"?{addressTableLookups:or(t)}:null,header:sr(t),instructions:ar(e.instructions,t),lifetimeToken:cr(e.lifetimeConstraint),staticAccounts:ur(t),version:e.version}}function dr(){return A([["lookupTableAddress",V(void 0)],["writableIndices",z(E(),{...null,size:x()})],["readableIndices",z(E(),{...void 0,size:x()})]],void 0)}function lr(){return A([["numSignerAccounts",E(void 0)],["numReadonlySignerAccounts",E(void 0)],["numReadonlyNonSignerAccounts",E(void 0)]],void 0)}function pr(){return P(A([["programAddressIndex",E(void 0)],["addressIndices",z(E({description:""}),{description:"",size:x()})],["data",H({description:"",size:x()})]]),e=>e.addressIndices!==void 0&&e.data!==void 0?e:{...e,addressIndices:e.addressIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.addressIndices.length&&e.data.byteLength)return e;let{addressIndices:r,data:t,...n}=e;return {...n,...r.length?{addressIndices:r}:null,...t.byteLength?{data:t}:null}})}function fr(e,r){let t=r+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${r}. Use \`get${t}()\` if you need a ${e}, and \`get${r}Codec()\` if you need to both encode and decode ${r}`)}function we(e){return ()=>{throw fr("decoder",e)}}var ne=128,mr={description:"",fixedSize:null,maxSize:1};function gr(e,r=0){let t=e[r];return t&ne?[t^ne,r+1]:["legacy",r]}function hr(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|ne])}function br(){return {...mr,deserialize:gr,serialize:hr}}var yr={description:"",fixedSize:null,maxSize:null};function xr(e){return e.version==="legacy"?A(be()).serialize(e):P(A([...be(),["addressTableLookups",wr()]]),r=>r.version==="legacy"?r:{...r,addressTableLookups:r.addressTableLookups??[]}).serialize(e)}function be(){return [["version",br()],["header",lr()],["staticAccounts",z(V(),{description:"",size:x()})],["lifetimeToken",B({description:"",encoding:I,size:32})],["instructions",z(pr(),{description:"",size:x()})]]}function wr(){return z(dr(),{...null,size:x()})}function Se(){return {...yr,deserialize:we("CompiledMessage"),serialize:xr}}async function Sr(e,r){let t=Se().serialize(e);return await me(r,t)}async function so(e,r){let t=xe(r),[n,o]=await Promise.all([fe(e.publicKey),Sr(t,e.privateKey)]),s={..."signatures"in r?r.signatures:null,[n]:o},i={...r,signatures:s};return Object.freeze(i),i}function Er(e){let r=xe(e),t;if("signatures"in e){t=[];for(let n=0;n<r.header.numSignerAccounts;n++)t[n]=e.signatures[r.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else t=Array(r.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:r,signatures:t}}var zr={description:"",fixedSize:null,maxSize:null};function Ar(e){let r=Er(e);return A([["signatures",z(H({size:64}),{...null,size:x()})],["compiledMessage",Se()]]).serialize(r)}function Tr(){return {...zr,deserialize:we("CompiledMessage"),serialize:Ar}}function io(e){let r=Tr().serialize(e);return btoa(String.fromCharCode(...r))}a();a();function oe(e,r,t){if(Array.isArray(e))return e.map((n,o)=>oe(n,[...r,o],t));if(typeof e=="object"&&e!==null){let n={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=oe(e[o],[...r,o],t));return n}else return typeof e=="bigint"?(t&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&t(r,e),Number(e)):e}function Ir(e,r){return oe(e,[],r)}var f={},Rr={getAccountInfo:[["value","data","parsed","info","lastExtendedSlotStartIndex"],["value","data","parsed","info","slashPenalty"],["value","data","parsed","info","warmupCooldownRate"],["value","data","parsed","info","tokenAmount","decimals"],["value","data","parsed","info","tokenAmount","uiAmount"],["value","data","parsed","info","rentExemptReserve","decimals"],["value","data","parsed","info","delegatedAmount","decimals"],["value","data","parsed","info","extensions",f,"state","olderTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","newerTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","preUpdateAverageRate"],["value","data","parsed","info","extensions",f,"state","currentRate"],["value","data","parsed","info","decimals"],["value","data","parsed","info","numRequiredSigners"],["value","data","parsed","info","numValidSigners"],["value","data","parsed","info","stake","delegation","warmupCooldownRate"],["value","data","parsed","info","exemptionThreshold"],["value","data","parsed","info","burnPercent"],["value","data","parsed","info","commission"],["value","data","parsed","info","votes",f,"confirmationCount"]],getBlockTime:[[]],getInflationReward:[[f,"commission"]],getRecentPerformanceSamples:[[f,"samplePeriodSecs"]],getTokenLargestAccounts:[["value",f,"decimals"],["value",f,"uiAmount"]],getTransaction:[["meta","preTokenBalances",f,"accountIndex"],["meta","preTokenBalances",f,"uiTokenAmount","decimals"],["meta","postTokenBalances",f,"accountIndex"],["meta","postTokenBalances",f,"uiTokenAmount","decimals"],["meta","rewards",f,"commission"],["meta","innerInstructions",f,"index"],["meta","innerInstructions",f,"instructions",f,"programIdIndex"],["meta","innerInstructions",f,"instructions",f,"accounts",f],["transaction","message","addressTableLookups",f,"writableIndexes",f],["transaction","message","addressTableLookups",f,"readonlyIndexes",f],["transaction","message","instructions",f,"programIdIndex"],["transaction","message","instructions",f,"accounts",f],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVoteAccounts:[["current",f,"commission"],["delinquent",f,"commission"]]};function Ee(e,r){return e.filter(t=>t[0]===f&&typeof r=="number"||t[0]===r).map(t=>t.slice(1))}function se(e,r){if(Array.isArray(e))return e.map((t,n)=>{let o=Ee(r,n);return se(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[n,o]of Object.entries(e)){let s=Ee(r,n);t[n]=se(o,s);}return t}else return typeof e=="number"&&r.length===0&&Number.isInteger(e)?BigInt(e):e}function Nr(e,r){let t=r?Rr[r]:void 0;return se(e,t??[])}function ze(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...r){let[t,n]=r,o=n.toString();return function(...s){let i=e?.onIntegerOverflow,c=Ir(s,i?(u,d)=>i(o,u,d):void 0);return {methodName:o,params:c,responseProcessor:u=>Nr(u,o)}}}})}a();var vr=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"}},ie=0;function Cr(){let e=ie;return ie=(ie+1)%Number.MAX_SAFE_INTEGER,e}function kr(e,r){return {id:Cr(),jsonrpc:"2.0",method:e,params:r}}function Br(e,r){return {async send(t){let{methodName:n,params:o,responseProcessor:s}=r,i=kr(n,o),c=await e.transport({payload:i,signal:t?.abortSignal});if("error"in c)throw new vr(c.error);return s?s(c.result):c.result}}}function Or(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(r,t,n){return function(...o){let s=t.toString(),i=Reflect.get(r,s,n),c=i?i(...o):{methodName:s,params:o};return Br(e,c)}}})}function Te(e){return Or(e)}var $r=globalThis.fetch,_r=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 Ur(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Ie({httpAgentNodeOnly:e,headers:r,url:t}){let n=void 0;let o=r&&Ur(r);return async function({payload:i,signal:c}){let u=JSON.stringify(i),d={agent:n,body:u,headers:{...o,accept:"application/json","content-length":u.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:c},p=await $r(t,d);if(!p.ok)throw new _r({message:p.statusText,statusCode:p.status});return await p.json()}}a();a();var Y=class extends Error{constructor(t,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",c=s%10,u=s%100;c==1&&u!=11?i=s+"st":c==2&&u!=12?i=s+"nd":c==3&&u!=13?i=s+"rd":i=s+"th";let d=n.length>1?n.slice(1).map(p=>typeof p=="number"?`[${p}]`:p).join("."):null;super(`The ${i} argument to the \`${t}\` 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=t,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Re={onIntegerOverflow(e,r,t){throw new Y(e,r,t)}};function To(e){return Te({...e,api:ze(Re)})}a();a();function Ne(e,r){let t;return async function(o){let{payload:s,signal:i}=o,c=r(s);if(c===void 0)return await e(o);if(t||(Promise.resolve().then(()=>{t=void 0;}),t={}),t[c]==null){let d=new AbortController;t[c]={abortController:d,numConsumers:0,responsePromise:e({...o,signal:d.signal})};}let u=t[c];if(u.numConsumers++,i){let d=u.responsePromise;return await new Promise((p,h)=>{let X=Oe=>{i.removeEventListener("abort",X),u.numConsumers-=1,u.numConsumers===0&&u.abortController.abort();let $e=new DOMException(Oe.target.reason,"AbortError");h($e);};i.addEventListener("abort",X),d.then(p).finally(()=>{i.removeEventListener("abort",X);});})}else return await u.responsePromise}}a();var ke=We(Ce(),1);function Be(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, ke.default)([e.method,e.params])}function Kr(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Do(e){return Ne(Ie({...e,headers:{...e.headers?Kr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),Be)}
9
+ For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function yt(){var e;if(Q(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.exportKey)!="function")throw new Error("No key export implementation could be found")}async function wt(){var e;if(Q(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.sign)!="function")throw new Error("No signing implementation could be found")}async function Et(){var e;if(Q(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.verify)!="function")throw new Error("No signature verification implementation could be found")}var ve,Ne;function Be(){return ve||(ve=_()),ve}function Wn(){return Ne||(Ne=V()),Ne}function Mn(e){return !(e.length<32||e.length>44||Be().encode(e).byteLength!==32)}function ee(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=Be().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 $n(e){return ee(e),e}function pe(){return W(fe({encoding:Be(),size:32}),e=>$n(e))}function te(){return me({encoding:Wn(),size:32})}function Ct(){return P(pe(),te())}function be(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var Vn=37095705934669439343138083508754565189542113879843219016388785533085940283555n,C=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Tt=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function x(e){let t=e%C;return t>=0n?t:C+t}function N(e,t){let n=e;for(;t-- >0n;)n*=n,n%=C;return n}function Kn(e){let n=e*e%C*e%C,r=N(n,2n)*n%C,o=N(r,1n)*e%C,i=N(o,5n)*o%C,a=N(i,10n)*i%C,s=N(a,20n)*a%C,c=N(s,40n)*s%C,d=N(c,80n)*c%C,f=N(d,80n)*c%C,m=N(f,10n)*i%C;return N(m,2n)*e%C}function Gn(e,t){let n=x(t*t*t),r=x(n*n*t),o=Kn(e*r),i=x(e*n*o),a=x(t*i*i),s=i,c=x(i*Tt),d=a===e,f=a===x(-e),m=a===x(-e*Tt);return d&&(i=s),(f||m)&&(i=c),(x(i)&1n)===1n&&(i=x(-i)),!d&&!f?null:i}function Hn(e,t){let n=x(e*e),r=x(n-1n),o=x(Vn*n+1n),i=Gn(r,o);if(i===null)return !1;let a=(t&128)!==0;return !(i===0n&&a)}function jn(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function qn(e){let n=`0x${e.reduce((r,o,i)=>`${jn(i===31?o&-129:o)}${r}`,"")}`;return BigInt(n)}async function Yn(e){if(e.byteLength!==32)return !1;let t=qn(e);return Hn(t,e[31])}function Mo(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 $o(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: [Address, 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]}.`);ee(e[0]);}var It=32,At=16,ge=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Rt=class extends Error{};async function Jn({programAddress:e,seeds:t}){if(await ht(),t.length>At)throw new Error(`A maximum of ${At} seeds may be supplied when creating an address`);let n,r=t.reduce((c,d,f)=>{let m=typeof d=="string"?(n||(n=new TextEncoder)).encode(d):d;if(m.byteLength>It)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return c.push(...m),c},[]),o=Ct(),i=o.encode(e),a=await crypto.subtle.digest("SHA-256",new Uint8Array([...r,...i,...ge])),s=new Uint8Array(a);if(await Yn(s))throw new Rt("Invalid seeds; point must fall off the Ed25519 curve");return o.decode(s)}async function Vo({programAddress:e,seeds:t}){let n=255;for(;n>0;)try{return [await Jn({programAddress:e,seeds:[...t,new Uint8Array([n])]}),n]}catch(r){if(r instanceof Rt)n--;else throw r}throw new Error("Unable to find a viable program address bump seed")}async function Ko({baseAddress:e,programAddress:t,seed:n}){let{encode:r,decode:o}=Ct(),i=typeof n=="string"?new TextEncoder().encode(n):n;if(i.byteLength>It)throw new Error("The seed exceeds the maximum length of 32 bytes");let a=r(t);if(a.length>=ge.length&&a.slice(-ge.length).every((d,f)=>d===ge[f]))throw new Error("programAddress cannot end with the PDA marker");let s=await crypto.subtle.digest("SHA-256",new Uint8Array([...r(e),...i,...a])),c=new Uint8Array(s);return o(c)}async function xt(e){if(await yt(),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);return te().decode(new Uint8Array(t))}l();var Xn=(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))(Xn||{}),vt=2,De=1;function qo(e){return e&~vt}function Yo(e){return e&~De}function Jo(e){return e>=2}function Xo(e){return (e&De)!==0}function Zo(e,t){return e|t}function Qo(e){return e|vt}function ei(e){return e|De}l();async function ii(){return await St(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}function Zn(e){return new Uint8Array([48,46,2,1,0,48,5,6,3,43,101,112,4,34,4,32,...e])}async function ai(e,t){if(e.byteLength!==32)throw new Error("Private key bytes must be of length 32");let n=Zn(e);return await crypto.subtle.importKey("pkcs8",n,"Ed25519",t!=null?t:!1,["sign"])}var q;function Qn(e){q||(q=_());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=q.encode(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 signature`,{cause:t})}}function si(e){return q||(q=_()),!(e.length<64||e.length>88||q.encode(e).byteLength!==64)}async function Nt(e,t){await wt();let n=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(n)}function ci(e){return Qn(e),e}async function ui(e,t,n){return await Et(),await crypto.subtle.verify("Ed25519",e,t,n)}l();function Bt(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 he(e,t){return e===t?0:Bt(e)<Bt(t)?-1:1}var Dt=18446744073709551615n;function fi(e){return e>=0&&e<=Dt}function er(e){if(e<0)throw new Error("Input for 64-bit unsigned integer cannot be negative");if(e>Dt)throw new Error("Input number is too large to be represented as a 64-bit unsigned integer")}function mi(e){return er(e),e}function gi(e){try{return BigInt(e),!0}catch{return !1}}function tr(e){try{BigInt(e);}catch(t){throw new Error(`\`${e}\` cannot be parsed as a BigInt`,{cause:t})}}function pi(e){return tr(e),e}function bi(e){return !Number.isNaN(Number(e))}function nr(e){if(Number.isNaN(Number(e)))throw new Error(`\`${e}\` cannot be parsed as a Number`)}function hi(e){return nr(e),e}function Si(e){return !(e>864e13||e<-864e13)}function rr(e){try{if(e>864e13||e<-864e13)throw new Error("Expected input number to be in the range [-8.64e15, 8.64e15]")}catch(t){throw new Error(`\`${e}\` is not a timestamp`,{cause:t})}}function yi(e){return rr(e),e}l();l();function or(e,t,n){if(t!==n)throw new Error(`Expected [${e}] to have ${t} items, got ${n}.`)}function Se(e){return e.reduce((t,n)=>t===null||n===null?null:t+n,0)}function we(e){return R(e)?e.fixedSize:null}function Ee(e){var t;return R(e)?e.fixedSize:(t=e.maxSize)!=null?t:null}function F(e,t={}){var i,a;let n=(i=t.size)!=null?i:de();n==="remainder"&&xe(e,'Codecs of "remainder" size must have fixed-size items.');let r=ye(n,we(e)),o=(a=ye(n,Ee(e)))!=null?a:void 0;return E({...r!==null?{fixedSize:r}:{getSizeFromValue:s=>(typeof n=="object"?v(s.length,n):0)+[...s].reduce((d,f)=>d+v(f,e),0),maxSize:o},write:(s,c,d)=>(typeof n=="number"&&or("array",n,s.length),typeof n=="object"&&(d=n.write(s.length,c,d)),s.forEach(f=>{d=e.write(f,c,d);}),d)})}function L(e,t={}){var a,s;let n=(a=t.size)!=null?a:le();n==="remainder"&&xe(e,'Codecs of "remainder" size must have fixed-size items.');let r=we(e),o=ye(n,r),i=(s=ye(n,Ee(e)))!=null?s:void 0;return A({...o!==null?{fixedSize:o}:{maxSize:i},read:(c,d)=>{let f=[];if(typeof n=="object"&&c.slice(d).length===0)return [f,d];let[m,g]=ir(n,r,c,d);d=g;for(let y=0;y<m;y+=1){let[p,b]=e.read(c,d);d=b,f.push(p);}return [f,d]}})}function ir(e,t,n,r){if(typeof e=="number")return [e,r];if(typeof e=="object")return e.read(n,r);if(e==="remainder"){if(t===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');let o=Math.max(0,n.length-r);if(o%t!==0)throw new Error(`The remainder of the byte array (${o} bytes) cannot be split into chunks of ${t} bytes. Codecs of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${o} modulo ${t} should be equal to zero.`);return [o/t,r]}throw new Error(`Unrecognized array-like codec size: ${JSON.stringify(e)}`)}function ye(e,t){return typeof e!="number"?null:e===0?0:t===null?null:t*e}function ke(e={}){var r;let t=(r=e.size)!=null?r:"variable",n=E({getSizeFromValue:o=>o.length,write:(o,i,a)=>(i.set(o,a),a+o.length)});return t==="variable"?n:typeof t=="number"?ce(n,t):E({getSizeFromValue:o=>v(o.length,t)+o.length,write:(o,i,a)=>(a=t.write(o.length,i,a),n.write(o,i,a))})}function ze(e={}){var r;let t=(r=e.size)!=null?r:"variable",n=A({read:(o,i)=>{let a=o.slice(i);return [a,i+a.length]}});return t==="variable"?n:typeof t=="number"?ue(n,t):A({read:(o,i)=>{j("bytes",o,i);let[a,s]=t.read(o,i),c=Number(a);i=s;let d=o.slice(i,i+c);U("bytes",c,d);let[f,m]=n.read(d,0);return i+=m,[f,i]}})}function G(e){var o;let t=e.map(([,i])=>i),n=Se(t.map(we)),r=(o=Se(t.map(Ee)))!=null?o:void 0;return E({...n===null?{getSizeFromValue:i=>e.map(([a,s])=>v(i[a],s)).reduce((a,s)=>a+s,0),maxSize:r}:{fixedSize:n},write:(i,a,s)=>(e.forEach(([c,d])=>{s=d.write(i[c],a,s);}),s)})}function Y(e){var o;let t=e.map(([,i])=>i),n=Se(t.map(we)),r=(o=Se(t.map(Ee)))!=null?o:void 0;return A({...n===null?{maxSize:r}:{fixedSize:n},read:(i,a)=>{let s={};return e.forEach(([c,d])=>{let[f,m]=d.read(i,a);a=m,s[c]=f;}),[s,a]}})}l();function O(e,...t){return t.reduce((n,r)=>r(n),e)}function re(e){if("signatures"in e){let{signatures:t,...n}=e;return n}else return e}var Pe;function ar(e){Pe||(Pe=_());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=Pe.encode(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 sr(e){if(!("lifetimeConstraint"in e&&typeof e.lifetimeConstraint.blockhash=="string"&&typeof e.lifetimeConstraint.lastValidBlockHeight=="bigint"))return !1;try{return ar(e.lifetimeConstraint.blockhash),!0}catch{return !1}}function _i(e){if(!sr(e))throw new Error("Transaction does not have a blockhash lifetime")}function cr(e,t){if("lifetimeConstraint"in t&&t.lifetimeConstraint.blockhash===e.blockhash&&t.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return t;let n={...re(t),lifetimeConstraint:e};return Object.freeze(n),n}function ur({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var I=(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))(I||{}),dr=1;function H(e){return e>=2}function ne(e){return (e&dr)!==0}function kt(e,t){return e|t}var Lt="SysvarRecentB1ockHashes11111111111111111111",Ot="11111111111111111111111111111111";function Fi(e){if(!Ut(e))throw new Error("Transaction is not a durable nonce transaction")}function zt(e,t){return {accounts:[{address:e,role:I.WRITABLE},{address:Lt,role:I.READONLY},{address:t,role:I.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:Ot}}function Ge(e){var t;return e.programAddress===Ot&&e.data!=null&&lr(e.data)&&((t=e.accounts)==null?void 0:t.length)===3&&e.accounts[0].address!=null&&e.accounts[0].role===I.WRITABLE&&e.accounts[1].address===Lt&&e.accounts[1].role===I.READONLY&&e.accounts[2].address!=null&&H(e.accounts[2].role)}function lr(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Ut(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&Ge(e.instructions[0])}function fr(e,t,n){return e.accounts[0].address===t&&e.accounts[2].address===n}function mr({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:n},r){let o,i=r.instructions[0];if(i&&Ge(i))if(fr(i,t,n)){if(Ut(r)&&r.lifetimeConstraint.nonce===e)return r;o=[i,...r.instructions.slice(1)];}else o=[zt(t,n),...r.instructions.slice(1)];else o=[zt(t,n),...r.instructions];let a={...re(r),instructions:o,lifetimeConstraint:{nonce:e}};return Object.freeze(a),a}function gr(e,t){if("feePayer"in t&&e===t.feePayer)return t;let n={...re(t),feePayer:e};return Object.freeze(n),n}function pr(e,t){let n={...re(t),instructions:[...t.instructions,e]};return Object.freeze(n),n}function Li(e,t){let n={...re(t),instructions:[e,...t.instructions]};return Object.freeze(n),n}function Pt(e,t,n){var r;e[t]=n((r=e[t])!=null?r:{role:I.READONLY});}var w=Symbol("AddressMapTypeProperty");function br(e,t){let n={[e]:{[w]:0,role:I.WRITABLE_SIGNER}},r=new Set;for(let o of t){Pt(n,o.programAddress,a=>{if(r.add(o.programAddress),w in a){if(ne(a.role))switch(a[w]){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(a[w]===2)return a}return {[w]:2,role:I.READONLY}});let i;if(o.accounts)for(let a of o.accounts)Pt(n,a.address,s=>{let{address:c,...d}=a;if(w in s)switch(s[w]){case 0:return s;case 1:{let f=kt(s.role,d.role);if("lookupTableAddress"in d){if(s.lookupTableAddress!==d.lookupTableAddress&&(i||(i=be()))(d.lookupTableAddress,s.lookupTableAddress)<0)return {[w]:1,...d,role:f}}else if(H(d.role))return {[w]:2,role:f};return s.role!==f?{...s,role:f}:s}case 2:{let f=kt(s.role,d.role);if(r.has(a.address)){if(ne(d.role))throw new Error(`This transaction includes an address (\`${a.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return s.role!==f?{...s,role:f}:s}else return "lookupTableAddress"in d&&!H(s.role)?{...d,[w]:1,role:f}:s.role!==f?{...s,role:f}:s}}return "lookupTableAddress"in d?{...d,[w]:1}:{...d,[w]:2}});}return n}function hr(e){let t;return Object.entries(e).sort(([r,o],[i,a])=>{if(o[w]!==a[w]){if(o[w]===0)return -1;if(a[w]===0)return 1;if(o[w]===2)return -1;if(a[w]===2)return 1}let s=H(o.role);if(s!==H(a.role))return s?-1:1;let c=ne(o.role);return c!==ne(a.role)?c?-1:1:(t||(t=be()),o[w]===1&&a[w]===1&&o.lookupTableAddress!==a.lookupTableAddress?t(o.lookupTableAddress,a.lookupTableAddress):t(r,i))}).map(([r,o])=>({address:r,...o}))}function Sr(e){var n;let t={};for(let r of e){if(!("lookupTableAddress"in r))continue;let o=t[n=r.lookupTableAddress]||(t[n]={readableIndices:[],writableIndices:[]});r.role===I.WRITABLE?o.writableIndices.push(r.addressIndex):o.readableIndices.push(r.addressIndex);}return Object.keys(t).sort(be()).map(r=>({lookupTableAddress:r,...t[r]}))}function yr(e){let t=0,n=0,r=0;for(let o of e){if("lookupTableAddress"in o)break;let i=ne(o.role);H(o.role)?(r++,i||n++):i||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:n,numSignerAccounts:r}}function wr(e){let t={};for(let[n,r]of e.entries())t[r.address]=n;return t}function Er(e,t){let n=wr(t);return e.map(({accounts:r,data:o,programAddress:i})=>({programAddressIndex:n[i],...r?{accountIndices:r.map(({address:a})=>n[a])}:null,...o?{data:o}:null}))}function Tr(e){return "nonce"in e?e.nonce:e.blockhash}function Ar(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=br(e.feePayer,e.instructions),n=hr(t);return {...e.version!=="legacy"?{addressTableLookups:Sr(n)}:null,header:yr(n),instructions:Er(e.instructions,n),lifetimeToken:Tr(e.lifetimeConstraint),staticAccounts:Ar(n),version:e.version}}var _e;function Cr(){return _e||(_e=G([["lookupTableAddress",pe()],["writableIndices",F(M(),{size:B()})],["readableIndices",F(M(),{size:B()})]])),_e}var Fe;function Ir(){return Fe||(Fe=Y([["lookupTableAddress",te()],["writableIndices",L($(),{size:D()})],["readableIndices",L($(),{size:D()})]])),Fe}var Le;function Oe(){return Le||(Le=M()),Le}var Ue;function We(){return Ue||(Ue=$()),Ue}function Rr(){return G([["numSignerAccounts",Oe()],["numReadonlySignerAccounts",Oe()],["numReadonlyNonSignerAccounts",Oe()]])}function xr(){return Y([["numSignerAccounts",We()],["numReadonlySignerAccounts",We()],["numReadonlyNonSignerAccounts",We()]])}var Me;function vr(){return Me||(Me=W(G([["programAddressIndex",M()],["accountIndices",F(M(),{size:B()})],["data",ke({size:B()})]]),e=>{var t,n;return e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:(t=e.accountIndices)!=null?t:[],data:(n=e.data)!=null?n:new Uint8Array(0)}})),Me}var $e;function Nr(){return $e||($e=Z(Y([["programAddressIndex",$()],["accountIndices",L($(),{size:D()})],["data",ze({size:D()})]]),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}})),$e}var Ke=128;function Br(){return E({getSizeFromValue:e=>e==="legacy"?0:1,maxSize:1,write:(e,t,n)=>{if(e==="legacy")return n;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return t.set([e|Ke],n),n+1}})}function Dr(){return A({maxSize:1,read:(e,t)=>{let n=e[t];return n&Ke?[n^Ke,t+1]:["legacy",t]}})}function _t(){return G(Mt())}function Ft(){return W(G([...Mt(),["addressTableLookups",zr()]]),e=>{var t;return e.version==="legacy"?e:{...e,addressTableLookups:(t=e.addressTableLookups)!=null?t:[]}})}function Mt(){return [["version",Br()],["header",Rr()],["staticAccounts",F(pe(),{size:B()})],["lifetimeToken",fe({encoding:_(),size:32})],["instructions",F(vr(),{size:B()})]]}function kr(){return [["version",Dr()],["header",xr()],["staticAccounts",L(te(),{size:D()})],["lifetimeToken",me({encoding:V(),size:32})],["instructions",L(Nr(),{size:D()})],["addressTableLookups",Pr()]]}function zr(){return F(Cr(),{size:B()})}function Pr(){return L(Ir(),{size:D()})}function He(){return E({getSizeFromValue:e=>e.version==="legacy"?_t().getSizeFromValue(e):Ft().getSizeFromValue(e),write:(e,t,n)=>e.version==="legacy"?_t().write(e,t,n):Ft().write(e,t,n)})}function $t(){return Z(Y(kr()),({addressTableLookups:e,...t})=>t.version==="legacy"||!(e!=null&&e.length)?t:{...t,addressTableLookups:e})}function Oi(){return P(He(),$t())}function _r(e){var r;let t=Wt(e),n;if("signatures"in e){n=[];for(let o=0;o<t.header.numSignerAccounts;o++)n[o]=(r=e.signatures[t.staticAccounts[o]])!=null?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 Fr(e){let{header:t}=e,n=t.numSignerAccounts-t.numReadonlySignerAccounts,r=e.staticAccounts.length-t.numSignerAccounts-t.numReadonlyNonSignerAccounts,o=[],i=0;for(let a=0;a<n;a++)o.push({address:e.staticAccounts[i],role:I.WRITABLE_SIGNER}),i++;for(let a=0;a<t.numReadonlySignerAccounts;a++)o.push({address:e.staticAccounts[i],role:I.READONLY_SIGNER}),i++;for(let a=0;a<r;a++)o.push({address:e.staticAccounts[i],role:I.WRITABLE}),i++;for(let a=0;a<t.numReadonlyNonSignerAccounts;a++)o.push({address:e.staticAccounts[i],role:I.READONLY}),i++;return o}function Lr(e,t){var i,a;let n=(i=t[e.programAddressIndex])==null?void 0:i.address;if(!n)throw new Error(`Could not find program address at index ${e.programAddressIndex}`);let r=(a=e.accountIndices)==null?void 0:a.map(s=>t[s]),{data:o}=e;return {programAddress:n,...r&&r.length?{accounts:r}:{},...o&&o.length?{data:o}:{}}}function Or(e,t,n){if(!t||!Ge(t))return {blockhash:e,lastValidBlockHeight:n!=null?n:2n**64n-1n};{let r=t.accounts[0].address;ee(r);let o=t.accounts[2].address;return ee(o),{nonce:e,nonceAccountAddress:r,nonceAuthorityAddress:o}}}function Ur(e){let{compiledMessage:{staticAccounts:t},signatures:n}=e;return n.reduce((r,o,i)=>{if(o.every(c=>c===0))return r;let s=t[i];return {...r,[s]:o}},{})}function Wr(e,t){let{compiledMessage:n}=e;if("addressTableLookups"in n&&n.addressTableLookups.length>0)throw new Error("Cannot convert transaction with addressTableLookups");let r=n.staticAccounts[0];if(!r)throw new Error("No fee payer set in CompiledTransaction");let o=Fr(n),i=n.instructions.map(d=>Lr(d,o)),a=i[0],s=Or(n.lifetimeToken,a,t),c=Ur(e);return O(ur({version:n.version}),d=>gr(r,d),d=>i.reduce((f,m)=>pr(m,f),d),d=>"blockhash"in s?cr(s,d):mr(s,d),d=>e.signatures.length?{...d,signatures:c}:d)}function Mr(){return G([["signatures",F(ke({size:64}),{size:B()})],["compiledMessage",He()]])}function $r(){return Y([["signatures",L(ze({size:64}),{size:D()})],["compiledMessage",$t()]])}function Vt(){return W(Mr(),_r)}function Vr(e){return Z($r(),t=>Wr(t,e))}function Ui(e){return P(Vt(),Vr(e))}var Ve;function je(e){Ve||(Ve=V());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 Ve.decode(t)}async function Kr(e,t){let n=Wt(t),r="signatures"in t?{...t.signatures}:{},o=He().encode(n),i=await Promise.all(e.map(s=>Promise.all([xt(s.publicKey),Nt(s.privateKey,o)])));for(let[s,c]of i)r[s]=c;let a={...t,signatures:r};return Object.freeze(a),a}async function Wi(e,t){let n=await Kr(e,t);return Gr(n),Object.freeze(n),n}function Gr(e){let t=e.instructions.flatMap(r=>{var o,i;return (i=(o=r.accounts)==null?void 0:o.filter(a=>H(a.role)))!=null?i:[]}).map(r=>r.address);new Set([e.feePayer,...t]).forEach(r=>{if(!e.signatures[r])throw new Error(`Transaction is missing signature for address \`${r}\``)});}function Kt(e){let t=Vt().encode(e);return bt().decode(t)}l();l();l();async function oe(e,t,n){let{abortSignal:r,commitment:o,getRecentSignatureConfirmationPromise:i}=t;r==null||r.throwIfAborted();let a=new AbortController;if(r){let s=()=>{a.abort();};r.addEventListener("abort",s,{signal:a.signal});}try{let s=n({...t,abortSignal:a.signal});return await Promise.race([i({abortSignal:a.signal,commitment:o,signature:e}),...s])}finally{a.abort();}}l();function ie(e,t){return async function({abortSignal:r,commitment:o,signature:i}){let a=new AbortController;function s(){a.abort();}r.addEventListener("abort",s,{signal:a.signal});let c=await t.signatureNotifications(i,{commitment:o}).subscribe({abortSignal:a.signal}),d=(async()=>{for await(let m of c){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:a.signal}),g=m[0];g&&g.confirmationStatus&&he(g.confirmationStatus,o)>=0||await new Promise(()=>{});})();try{return await Promise.race([d,f])}finally{a.abort();}}}l();async function Gt({abortSignal:e,commitment:t}){return await new Promise((n,r)=>{let o=c=>{clearTimeout(s);let d=new DOMException(c.target.reason,"AbortError");r(d);};e.addEventListener("abort",o);let i=t==="processed"?3e4:6e4,a=performance.now(),s=setTimeout(()=>{let c=performance.now()-a;r(new DOMException(`Timeout elapsed after ${c} ms`,"TimeoutError"));},i);})}function Ht({rpc:e,rpcSubscriptions:t}){let n=ie(e,t);return async function(o){await Hr({...o,getRecentSignatureConfirmationPromise:n,getTimeoutPromise:Gt});}}async function Hr(e){await oe(e.signature,e,function({abortSignal:n,commitment:r,getTimeoutPromise:o}){return [o({abortSignal:n,commitment:r})]});}function oa({rpc:e,rpcSubscriptions:t}){let n=Ht({rpc:e,rpcSubscriptions:t});return async function(o){return await jr({...o,confirmSignatureOnlyTransaction:n,rpc:e})}}async function jr({abortSignal:e,commitment:t,confirmSignatureOnlyTransaction:n,lamports:r,recipientAddress:o,rpc:i}){let a=await i.requestAirdrop(o,r,{commitment:t}).send({abortSignal:e});return await n({abortSignal:e,commitment:t,signature:a}),a}l();l();function Je(e,t,n){if(Array.isArray(e))return e.map((r,o)=>Je(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]=Je(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 qt(e,t){return Je(e,[],t)}var u={},Xe=[["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=[...Xe,["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"]],qe,Ye;function qr(){return qe||(qe={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]])}),qe}function Yr(){return Ye||(Ye={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:Xe.map(e=>["value",u,"account",...e]),getTokenAccountsByOwner:Xe.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])}),Ye}function jt(e,t){return e.filter(n=>n[0]===u&&typeof t=="number"||n[0]===t).map(n=>n.slice(1))}function Te(e,t){if(Array.isArray(e))return e.map((n,r)=>{let o=jt(t,r);return Te(n,o)});if(typeof e=="object"&&e!==null){let n={};for(let[r,o]of Object.entries(e)){let i=jt(t,r);n[r]=Te(o,i);}return n}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function Jr(e,t){let n=t?Yr()[t]:void 0;return Te(e,n!=null?n:[])}function Xr(e,t){let n=t?qr()[t]:void 0;return Te(e,n!=null?n:[])}function Yt(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[n,r]=t,o=r.toString();return function(...i){let a=e==null?void 0:e.onIntegerOverflow,s=qt(i,a?(c,d)=>a(o,c,d):void 0);return {methodName:o,params:s,responseProcessor:c=>Jr(c,o)}}}})}function Ze(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[n,r]=t,o=r.toString();return function(...i){let a=e==null?void 0:e.onIntegerOverflow;return {params:qt(i,a?(c,d)=>a(o,c,d):void 0),responseProcessor:c=>Xr(c,o),subscribeMethodName:o.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:o.replace(/Notifications$/,"Unsubscribe")}}}})}function Jt(e){return Ze(e)}l();var Qt=class extends Error{constructor(t){super(`JSON-RPC 2.0 error (${t.code}): ${t.message}`);z(this,"code");z(this,"data");Error.captureStackTrace(this,this.constructor),this.code=t.code,this.data=t.data;}get name(){return "SolanaJsonRpcError"}},Qe=0;function Zr(){let e=Qe;return Qe=(Qe+1)%Number.MAX_SAFE_INTEGER,e}function et(e,t){return {id:Zr(),jsonrpc:"2.0",method:e,params:t}}function Qr(e,t){return {async send(n){let{methodName:r,params:o,responseProcessor:i}=t,a=et(r,o),s=await e.transport({payload:a,signal:n==null?void 0:n.abortSignal});if("error"in s)throw new Qt(s.error);return i?i(s.result):s.result}}}function eo(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,n,r){return function(...o){let i=n.toString(),a=Reflect.get(t,i,r),s=a?a(...o):{methodName:i,params:o};return Qr(e,s)}}})}function en(e){return eo(e)}function to(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function no(e,{params:t,subscribeMethodName:n,unsubscribeMethodName:r,responseProcessor:o}){return {async subscribe({abortSignal:i}){i.throwIfAborted();let a;function s(){if(a!==void 0){let g=et(r,[a]);f.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(g).finally(()=>{c.abort();});}else c.abort();}i.addEventListener("abort",s);let c=new AbortController,d=et(n,t),f=await e.transport({payload:d,signal:c.signal});function m(){i.removeEventListener("abort",s);}to(f,m);for await(let g of f)if("id"in g&&g.id===d.id){if("error"in g)throw new Qt(g.error);a=g.result;break}if(a==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!==a)continue;let y=g.params.result;yield o?o(y):y;}}}}}}function ro(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,n,r){return function(...o){let i=n.toString(),a=Reflect.get(t,i,r);if(n.toString().endsWith("Notifications")===!1&&!a)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 s=a?a(...o):{params:o,subscribeMethodName:i.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:i.replace(/Notifications$/,"Unsubscribe")};return no(e,s)}}})}function tt(e){return ro(e)}var oo=globalThis.fetch,io=class extends Error{constructor(t){super(`HTTP error (${t.statusCode}): ${t.message}`);z(this,"statusCode");Error.captureStackTrace(this,this.constructor),this.statusCode=t.statusCode;}get name(){return "SolanaHttpError"}};function uo(e){let t={};for(let n in e)t[n.toLowerCase()]=e[n];return t}function tn({headers:e,url:t}){let n=e&&uo(e);return async function({payload:o,signal:i}){let a=JSON.stringify(o),s={body:a,headers:{...n,accept:"application/json","content-length":a.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:i},c=await oo(t,s);if(!c.ok)throw new io({message:c.statusText,statusCode:c.status});return await c.json()}}var ae=globalThis.WebSocket,Xt=Symbol(void 0);async function lo({sendBufferHighWatermark:e,signal:t,url:n}){return new Promise((r,o)=>{t.addEventListener("abort",s,{once:!0});let i=new Map;function a(b){let S=[...i.values()].filter(T=>T.__hasPolled).map(({onError:T})=>T);i.clear(),S.forEach(T=>{try{T(b);}catch{}});}function s(){a(Xt),p.readyState!==ae.CLOSED&&p.readyState!==ae.CLOSING&&p.close(1e3);}function c(b){m==null||m.onCancel(),t.removeEventListener("abort",s),p.removeEventListener("close",c),p.removeEventListener("error",d),p.removeEventListener("open",g),p.removeEventListener("message",y),a(b);}function d(b){f||o(new Error("WebSocket failed to connect",{cause:b}));}let f=!1,m;function g(){f=!0,r({async send(b){let S=JSON.stringify(b);if(!m&&p.readyState===ae.OPEN&&p.bufferedAmount>e){let T,k=new Promise((X,hn)=>{let it=setInterval(()=>{(p.readyState!==ae.OPEN||!(p.bufferedAmount>e))&&(clearInterval(it),m=void 0,X());},16);T=()=>{m=void 0,clearInterval(it),hn(new Error("WebSocket was closed before payload could be sent"));};});m={onCancel:T,promise:k};}m&&await m.promise,p.send(S);},async*[Symbol.asyncIterator](){let b=Symbol();i.set(b,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let S=i.get(b);if(!S)throw new Error("Invariant: WebSocket message iterator is missing state storage");if(S.__hasPolled)throw new Error("Invariant: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise");let T=S.queuedMessages;if(T.length)S.queuedMessages=[],yield*T;else try{yield await new Promise((k,X)=>{i.set(b,{__hasPolled:!0,onError:X,onMessage:k});});}catch(k){if(k===Xt)return;throw new Error("WebSocket connection closed",{cause:k})}}}finally{i.delete(b);}}});}function y({data:b}){let S=JSON.parse(b);i.forEach((T,k)=>{if(T.__hasPolled){let{onMessage:X}=T;i.set(k,{__hasPolled:!1,queuedMessages:[]}),X(S);}else T.queuedMessages.push(S);});}let p=new ae(n);p.addEventListener("close",c),p.addEventListener("error",d),p.addEventListener("open",g),p.addEventListener("message",y);})}function nn({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==null||o.throwIfAborted();let i=await lo({sendBufferHighWatermark:e,signal:o,url:t});return o==null||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 an=at(nt(),1);l();l();var Ae=class extends Error{constructor(n,r,o){let i=(typeof r[0]=="number"?r[0]:parseInt(r[0],10))+1,a="",s=i%10,c=i%100;s==1&&c!=11?a=i+"st":s==2&&c!=12?a=i+"nd":s==3&&c!=13?a=i+"rd":a=i+"th";let d=r.length>1?r.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${a} argument to the \`${n}\` 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\`.`);z(this,"methodName");z(this,"keyPath");z(this,"value");this.keyPath=r,this.methodName=n,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Ce={onIntegerOverflow(e,t,n){throw new Ae(e,t,n)}};l();l();function go(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function Ie({getAbortSignalFromInputArgs:e,getCacheEntryMissingError:t,getCacheKeyFromInputArgs:n,onCacheHit:r,onCreateIterable:o}){let i=new Map;function a(s){let c=i.get(s);if(!c)throw t(s);return c}return async(...s)=>{let c=n(...s),d=e(...s);if(c===void 0)return await o(d,...s);let f=()=>{i.delete(c),d.removeEventListener("abort",m);},m=()=>{let g=a(c);g.purgeScheduled!==!0&&(g.purgeScheduled=!0,globalThis.queueMicrotask(()=>{g.purgeScheduled=!1,g.referenceCount===0&&(g.abortController.abort(),f());})),g.referenceCount--;};d.addEventListener("abort",m);try{let g=i.get(c);if(g){g.referenceCount++;let y=g.iterable,p="then"in y?await y:y;return await r(p,...s),p}else {let y=new AbortController,p=o(y.signal,...s),b={abortController:y,iterable:p,purgeScheduled:!1,referenceCount:1};i.set(c,b);let S=await p;return go(S,f),b.iterable=S,S}}catch(g){throw f(),g}}}var rt=Symbol(void 0);function po(e,t){(async()=>{try{for await(let n of e);}catch{}finally{t();}})();}function on({getDeduplicationKey:e,rpcSubscriptions:t}){let n=new Map;return new Proxy(t,{defineProperty(){return !1},deleteProperty(){return !1},get(r,o,i){let a=Reflect.get(r,o,i);return typeof a!="function"?a:function(...s){let c=e(o,s);if(c===void 0)return a(...s);if(n.has(c))return n.get(c);let d=Ie({getAbortSignalFromInputArgs:({abortSignal:m})=>m,getCacheEntryMissingError(m){return new Error(`Found no cache entry for subscription with deduplication key \`${m==null?void 0:m.toString()}\``)},getCacheKeyFromInputArgs:()=>c,async onCacheHit(m,g){},async onCreateIterable(m,g){let p=await a(...s).subscribe({...g,abortSignal:m});return po(p,()=>{n.delete(c);}),p}}),f={async subscribe(...m){let g=await d(...m),{abortSignal:y}=m[0],p;return {...g,async*[Symbol.asyncIterator](){p||(p=y.aborted?Promise.reject(rt):new Promise((b,S)=>{y.addEventListener("abort",()=>{S(rt);});}));try{let b=g[Symbol.asyncIterator]();for(;;){let S=await Promise.race([b.next(),p]);if(S.done)return;yield S.value;}}catch(b){if(b===rt)return;throw n.delete(c),b}}}}};return n.set(c,f),f}}})}function _a(e){return en({...e,api:Yt(Ce)})}function Fa(e){return O(tt({...e,api:Ze(Ce)}),t=>on({getDeduplicationKey:(...n)=>(0, an.default)(n),rpcSubscriptions:t}))}function La(e){return tt({...e,api:Jt(Ce)})}l();l();function sn(e,t){let n;return async function(o){let{payload:i,signal:a}=o,s=t(i);if(s===void 0)return await e(o);if(n||(Promise.resolve().then(()=>{n=void 0;}),n={}),n[s]==null){let d=new AbortController;n[s]={abortController:d,numConsumers:0,responsePromise:e({...o,signal:d.signal})};}let c=n[s];if(c.numConsumers++,a){let d=c.responsePromise;return await new Promise((f,m)=>{let g=y=>{a.removeEventListener("abort",g),c.numConsumers-=1,c.numConsumers===0&&c.abortController.abort();let p=new DOMException(y.target.reason,"AbortError");m(p);};a.addEventListener("abort",g),d.then(f).finally(()=>{a.removeEventListener("abort",g);});})}else return await c.responsePromise}}l();var cn=at(nt(),1);function bo(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 un(e){return bo(e)?(0, cn.default)([e.method,e.params]):void 0}function ho(e){let t={};for(let n in e)t[n.toLowerCase()]=e[n];return t}function qa(e){return O(tn({...e,headers:{...e.headers?ho(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),t=>sn(t,un))}l();l();var So={jsonrpc:"2.0",method:"ping"};function dn({intervalMs:e,transport:t}){let n=new Map;return async(...r)=>{let o=await t(...r),i;function a(){o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(So);}function s(){clearInterval(i),i=setInterval(a,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)=>(s(),o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...f))}),(async()=>{try{for await(let f of o)s();}catch{}finally{n.delete(o),clearInterval(i),c&&globalThis.window.removeEventListener("offline",c),d&&globalThis.window.removeEventListener("online",d);}})(),globalThis.navigator.onLine&&s();let c,d;c=()=>{clearInterval(i);},d=()=>{a(),s();},globalThis.window.addEventListener("offline",c),globalThis.window.addEventListener("online",d);}return n.get(o)}}l();var yo=Symbol(void 0);function ln({getShard:e,transport:t}){return Ie({getAbortSignalFromInputArgs:({signal:n})=>n,getCacheEntryMissingError(n){return new Error(`Found no cache entry for connection with shard key \`${n==null?void 0:n.toString()}\``)},getCacheKeyFromInputArgs:({payload:n})=>e?e(n):yo,onCacheHit:(n,{payload:r})=>n.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(r),onCreateIterable:(n,r)=>t({...r,signal:n})})}function as(e){var o;let{getShard:t,intervalMs:n,...r}=e;return O(nn({...r,sendBufferHighWatermark:(o=e.sendBufferHighWatermark)!=null?o:131072}),i=>dn({intervalMs:n!=null?n:5e3,transport:i}),i=>ln({getShard:t,transport:i}))}l();l();l();function fn(e){return async function({abortSignal:n,lastValidBlockHeight:r}){let o=new AbortController;function i(){o.abort();}n.addEventListener("abort",i,{signal:o.signal});let a=await e.slotNotifications().subscribe({abortSignal:o.signal});try{for await(let s of a)if(s.slot>r)throw new Error("The network has progressed past the last block for which this transaction could have committed.")}finally{o.abort();}}}l();var ot=40;function mn(e,t){return async function({abortSignal:r,commitment:o,currentNonceValue:i,nonceAccountAddress:a}){let s=new AbortController;function c(){s.abort();}r.addEventListener("abort",c,{signal:s.signal});let d=await t.accountNotifications(a,{commitment:o,encoding:"base64"}).subscribe({abortSignal:s.signal}),f=V(),m=pt();function g([b]){let T=m.encode(b).slice(ot,ot+32);return f.decode(T)}let y=(async()=>{for await(let b of d){let S=g(b.value.data);if(S!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${S}\`.`)}})(),p=(async()=>{let{value:b}=await e.getAccountInfo(a,{commitment:o,dataSlice:{length:32,offset:ot},encoding:"base58"}).send({abortSignal:s.signal});if(!b)throw new Error(`No nonce account could be found at address \`${a}\`.`);let S=b.data[0];if(S!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${S}\`.`);await new Promise(()=>{});})();try{return await Promise.race([y,p])}finally{s.abort();}}}function gn({rpc:e,rpcSubscriptions:t}){let n=mn(e,t),r=ie(e,t);return async function(i){await wo({...i,getNonceInvalidationPromise:n,getRecentSignatureConfirmationPromise:r});}}function pn({rpc:e,rpcSubscriptions:t}){let n=fn(t),r=ie(e,t);return async function(i){await Eo({...i,getBlockHeightExceedencePromise:n,getRecentSignatureConfirmationPromise:r});}}async function wo(e){await oe(je(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 Eo(e){await oe(je(e.transaction),e,function({abortSignal:n,getBlockHeightExceedencePromise:r,transaction:o}){return [r({abortSignal:n,lastValidBlockHeight:o.lifetimeConstraint.lastValidBlockHeight})]});}function To(e,t){return !(t!=null&&t.preflightCommitment)&&he(e,"finalized")<0?{...t,preflightCommitment:e}:t}async function bn({abortSignal:e,commitment:t,rpc:n,transaction:r,...o}){let i=Kt(r);return await n.sendTransaction(i,{...To(t,o),encoding:"base64"}).send({abortSignal:e})}function Ps({rpc:e,rpcSubscriptions:t}){let n=gn({rpc:e,rpcSubscriptions:t});return async function(o,i){await Ao({...i,confirmDurableNonceTransaction:n,rpc:e,transaction:o});}}function _s({rpc:e,rpcSubscriptions:t}){let n=pn({rpc:e,rpcSubscriptions:t});return async function(o,i){await Co({...i,confirmRecentTransaction:n,rpc:e,transaction:o});}}async function Ao({abortSignal:e,commitment:t,confirmDurableNonceTransaction:n,rpc:r,transaction:o,...i}){let a=await bn({...i,abortSignal:e,commitment:t,rpc:r,transaction:o});return await n({abortSignal:e,commitment:t,transaction:o}),a}async function Co({abortSignal:e,commitment:t,confirmRecentTransaction:n,rpc:r,transaction:o,...i}){let a=await bn({...i,abortSignal:e,commitment:t,rpc:r,transaction:o});return await n({abortSignal:e,commitment:t,transaction:o}),a}
10
10
 
11
- exports.AccountRole = Ge;
12
- exports.appendTransactionInstruction = no;
13
- exports.assertIsBase58EncodedAddress = Vn;
14
- exports.assertIsBlockhash = eo;
15
- exports.createDefaultRpcTransport = Do;
16
- exports.createSolanaRpc = To;
17
- exports.createTransaction = ro;
18
- exports.downgradeRoleToNonSigner = Hr;
19
- exports.downgradeRoleToReadonly = Vr;
20
- exports.generateKeyPair = qn;
21
- exports.getBase58EncodedAddressCodec = V;
22
- exports.getBase58EncodedAddressComparator = q;
23
- exports.getBase58EncodedAddressFromPublicKey = fe;
24
- exports.getBase64EncodedWireTransaction = io;
25
- exports.isSignerRole = qr;
26
- exports.isWritableRole = Jr;
27
- exports.mergeRoles = Yr;
28
- exports.prependTransactionInstruction = oo;
29
- exports.setTransactionFeePayer = to;
30
- exports.signBytes = me;
31
- exports.signTransaction = so;
32
- exports.upgradeRoleToSigner = Xr;
33
- exports.upgradeRoleToWritable = Zr;
34
- exports.verifySignature = Jn;
11
+ exports.AccountRole = Xn;
12
+ exports.address = $n;
13
+ exports.appendTransactionInstruction = pr;
14
+ exports.assertIsAddress = ee;
15
+ exports.assertIsBlockhash = ar;
16
+ exports.assertIsDurableNonceTransaction = Fi;
17
+ exports.assertIsLamports = er;
18
+ exports.assertIsProgramDerivedAddress = $o;
19
+ exports.assertIsSignature = Qn;
20
+ exports.assertIsStringifiedBigInt = tr;
21
+ exports.assertIsStringifiedNumber = nr;
22
+ exports.assertIsTransactionWithBlockhashLifetime = _i;
23
+ exports.assertIsUnixTimestamp = rr;
24
+ exports.assertTransactionIsFullySigned = Gr;
25
+ exports.commitmentComparator = he;
26
+ exports.compileMessage = Wt;
27
+ exports.createAddressWithSeed = Ko;
28
+ exports.createBlockHeightExceedencePromiseFactory = fn;
29
+ exports.createDefaultAirdropRequester = oa;
30
+ exports.createDefaultDurableNonceTransactionConfirmer = gn;
31
+ exports.createDefaultDurableNonceTransactionSender = Ps;
32
+ exports.createDefaultRecentTransactionConfirmer = pn;
33
+ exports.createDefaultRpcSubscriptionsTransport = as;
34
+ exports.createDefaultRpcTransport = qa;
35
+ exports.createDefaultTransactionSender = _s;
36
+ exports.createNonceInvalidationPromiseFactory = mn;
37
+ exports.createPrivateKeyFromBytes = ai;
38
+ exports.createRecentSignatureConfirmationPromiseFactory = ie;
39
+ exports.createSolanaRpc = _a;
40
+ exports.createSolanaRpcSubscriptions = Fa;
41
+ exports.createSolanaRpcSubscriptions_UNSTABLE = La;
42
+ exports.createTransaction = ur;
43
+ exports.downgradeRoleToNonSigner = qo;
44
+ exports.downgradeRoleToReadonly = Yo;
45
+ exports.generateKeyPair = ii;
46
+ exports.getAddressCodec = Ct;
47
+ exports.getAddressComparator = be;
48
+ exports.getAddressDecoder = te;
49
+ exports.getAddressEncoder = pe;
50
+ exports.getAddressFromPublicKey = xt;
51
+ exports.getBase64EncodedWireTransaction = Kt;
52
+ exports.getCompiledMessageCodec = Oi;
53
+ exports.getCompiledMessageDecoder = $t;
54
+ exports.getCompiledMessageEncoder = He;
55
+ exports.getProgramDerivedAddress = Vo;
56
+ exports.getSignatureFromTransaction = je;
57
+ exports.getTransactionCodec = Ui;
58
+ exports.getTransactionDecoder = Vr;
59
+ exports.getTransactionEncoder = Vt;
60
+ exports.isAddress = Mn;
61
+ exports.isAdvanceNonceAccountInstruction = Ge;
62
+ exports.isLamports = fi;
63
+ exports.isProgramDerivedAddress = Mo;
64
+ exports.isSignature = si;
65
+ exports.isSignerRole = Jo;
66
+ exports.isStringifiedBigInt = gi;
67
+ exports.isStringifiedNumber = bi;
68
+ exports.isUnixTimestamp = Si;
69
+ exports.isWritableRole = Xo;
70
+ exports.lamports = mi;
71
+ exports.mergeRoles = Zo;
72
+ exports.partiallySignTransaction = Kr;
73
+ exports.prependTransactionInstruction = Li;
74
+ exports.requestAndConfirmAirdrop = jr;
75
+ exports.sendAndConfirmDurableNonceTransaction = Ao;
76
+ exports.sendAndConfirmTransaction = Co;
77
+ exports.setTransactionFeePayer = gr;
78
+ exports.setTransactionLifetimeUsingBlockhash = cr;
79
+ exports.setTransactionLifetimeUsingDurableNonce = mr;
80
+ exports.signBytes = Nt;
81
+ exports.signTransaction = Wi;
82
+ exports.signature = ci;
83
+ exports.stringifiedBigInt = pi;
84
+ exports.stringifiedNumber = hi;
85
+ exports.unixTimestamp = yi;
86
+ exports.upgradeRoleToSigner = Qo;
87
+ exports.upgradeRoleToWritable = ei;
88
+ exports.verifySignature = ui;
89
+ exports.waitForDurableNonceTransactionConfirmation = wo;
90
+ exports.waitForRecentTransactionConfirmation = Eo;
35
91
 
36
92
  return exports;
37
93
 
@@ -0,0 +1,19 @@
1
+ import { Signature } from '@solana/keys';
2
+ import type { GetSignatureStatusesApi, SignatureNotificationsApi } from '@solana/rpc-core';
3
+ import type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';
4
+ import { BaseTransactionConfirmationStrategyConfig } from './transaction-confirmation-strategy-racer.js';
5
+ import { getTimeoutPromise } from './transaction-confirmation-strategy-timeout.js';
6
+ interface DefaultSignatureOnlyRecentTransactionConfirmerConfig {
7
+ rpc: Rpc<GetSignatureStatusesApi>;
8
+ rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;
9
+ }
10
+ interface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {
11
+ getTimeoutPromise: typeof getTimeoutPromise;
12
+ signature: Signature;
13
+ }
14
+ /** @deprecated */
15
+ export declare function createDefaultSignatureOnlyRecentTransactionConfirmer({ rpc, rpcSubscriptions, }: DefaultSignatureOnlyRecentTransactionConfirmerConfig): (config: Omit<Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0], 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'>) => Promise<void>;
16
+ /** @deprecated */
17
+ export declare function waitForRecentTransactionConfirmationUntilTimeout(config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig): Promise<void>;
18
+ export {};
19
+ //# sourceMappingURL=airdrop-confirmer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"airdrop-confirmer.d.ts","sourceRoot":"","sources":["../../src/airdrop-confirmer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,yCAAyC,EAAkB,MAAM,2CAA2C,CAAC;AAEtH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,UAAU,oDAAoD;IAC1D,GAAG,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;CACjE;AAED,UAAU,+DACN,SAAQ,yCAAyC;IACjD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,kBAAkB;AAClB,wBAAgB,oDAAoD,CAAC,EACjE,GAAG,EACH,gBAAgB,GACnB,EAAE,oDAAoD,YAMvC,KACJ,WAAW,uDAAuD,CAAC,CAAC,CAAC,CAAC,EACtE,uCAAuC,GAAG,mBAAmB,CAChE,mBAQR;AAED,kBAAkB;AAClB,wBAAsB,gDAAgD,CAClE,MAAM,EAAE,+DAA+D,GACxE,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,21 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { Signature } from '@solana/keys';
3
+ import type { GetSignatureStatusesApi, RequestAirdropApi, SignatureNotificationsApi } from '@solana/rpc-core';
4
+ import type { Rpc, RpcSubscriptions } from '@solana/rpc-transport';
5
+ import { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';
6
+ import { createDefaultSignatureOnlyRecentTransactionConfirmer } from './airdrop-confirmer.js';
7
+ type AirdropRequesterConfig = Readonly<{
8
+ rpc: Rpc<RequestAirdropApi & GetSignatureStatusesApi>;
9
+ rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;
10
+ }>;
11
+ export declare function createDefaultAirdropRequester({ rpc, rpcSubscriptions }: AirdropRequesterConfig): (config: Omit<Parameters<typeof requestAndConfirmAirdrop>[0], 'confirmSignatureOnlyTransaction' | 'rpc'>) => Promise<Signature>;
12
+ export declare function requestAndConfirmAirdrop({ abortSignal, commitment, confirmSignatureOnlyTransaction, lamports, recipientAddress, rpc, }: Readonly<{
13
+ abortSignal?: AbortSignal;
14
+ commitment: Commitment;
15
+ confirmSignatureOnlyTransaction: ReturnType<typeof createDefaultSignatureOnlyRecentTransactionConfirmer>;
16
+ lamports: LamportsUnsafeBeyond2Pow53Minus1;
17
+ recipientAddress: Address;
18
+ rpc: Rpc<RequestAirdropApi>;
19
+ }>): Promise<Signature>;
20
+ export {};
21
+ //# sourceMappingURL=airdrop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"airdrop.d.ts","sourceRoot":"","sources":["../../src/airdrop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,EAAE,oDAAoD,EAAE,MAAM,qBAAqB,CAAC;AAE3F,KAAK,sBAAsB,GAAG,QAAQ,CAAC;IACnC,GAAG,EAAE,GAAG,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,CAAC;IACtD,gBAAgB,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;CACjE,CAAC,CAAC;AAEH,wBAAgB,6BAA6B,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,sBAAsB,YAM/E,KAAK,WAAW,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,iCAAiC,GAAG,KAAK,CAAC,wBAQ9G;AAED,wBAAsB,wBAAwB,CAAC,EAC3C,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,QAAQ,EACR,gBAAgB,EAChB,GAAG,GACN,EAAE,QAAQ,CAAC;IACR,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,+BAA+B,EAAE,UAAU,CAAC,OAAO,oDAAoD,CAAC,CAAC;IACzG,QAAQ,EAAE,gCAAgC,CAAC;IAC3C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC/B,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAUtB"}
@@ -0,0 +1,11 @@
1
+ type CacheKey = string | symbol;
2
+ type Config<TInput extends unknown[], TIterable extends AsyncIterable<unknown>> = Readonly<{
3
+ getAbortSignalFromInputArgs: (...args: TInput) => AbortSignal;
4
+ getCacheEntryMissingError: (cacheKey: CacheKey) => Error;
5
+ getCacheKeyFromInputArgs: (...args: TInput) => CacheKey | undefined;
6
+ onCacheHit: (iterable: TIterable, ...args: TInput) => Promise<void>;
7
+ onCreateIterable: (abortSignal: AbortSignal, ...args: TInput) => Promise<TIterable>;
8
+ }>;
9
+ export declare function getCachedAbortableIterableFactory<TInput extends unknown[], TIterable extends AsyncIterable<unknown>>({ getAbortSignalFromInputArgs, getCacheEntryMissingError, getCacheKeyFromInputArgs, onCacheHit, onCreateIterable, }: Config<TInput, TIterable>): (...args: TInput) => Promise<TIterable>;
10
+ export {};
11
+ //# sourceMappingURL=cached-abortable-iterable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached-abortable-iterable.d.ts","sourceRoot":"","sources":["../../src/cached-abortable-iterable.ts"],"names":[],"mappings":"AAMA,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,CAAC,MAAM,SAAS,OAAO,EAAE,EAAE,SAAS,SAAS,aAAa,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;IACvF,2BAA2B,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;IAC9D,yBAAyB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC;IACzD,wBAAwB,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,KACpC,QAAQ,GAER,SAAS,CAAC;IAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CACvF,CAAC,CAAC;AAgBH,wBAAgB,iCAAiC,CAAC,MAAM,SAAS,OAAO,EAAE,EAAE,SAAS,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,EAClH,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,GACnB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CA+DrE"}