@solana/web3.js 2.0.0-experimental.3536b48 → 2.0.0-experimental.3690b65
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.
- package/LICENSE +1 -1
- package/README.md +1155 -43
- package/dist/index.browser.cjs +763 -8
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +746 -13
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +2617 -819
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +735 -11
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +752 -8
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +735 -13
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +76 -31
- package/dist/types/airdrop-confirmer.d.ts +20 -0
- package/dist/types/airdrop-confirmer.d.ts.map +1 -0
- package/dist/types/airdrop.d.ts +23 -0
- package/dist/types/airdrop.d.ts.map +1 -0
- package/dist/types/cached-abortable-iterable.d.ts +11 -0
- package/dist/types/cached-abortable-iterable.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/rpc-request-deduplication.d.ts.map +1 -1
- package/dist/types/rpc-subscription-coalescer.d.ts +10 -0
- package/dist/types/rpc-subscription-coalescer.d.ts.map +1 -0
- package/dist/types/rpc-transport.d.ts.map +1 -1
- package/dist/types/rpc-websocket-autopinger.d.ts +8 -0
- package/dist/types/rpc-websocket-autopinger.d.ts.map +1 -0
- package/dist/types/rpc-websocket-connection-sharding.d.ts +13 -0
- package/dist/types/rpc-websocket-connection-sharding.d.ts.map +1 -0
- package/dist/types/rpc-websocket-transport.d.ts +13 -0
- package/dist/types/rpc-websocket-transport.d.ts.map +1 -0
- package/dist/types/rpc.d.ts +5 -3
- package/dist/types/rpc.d.ts.map +1 -1
- package/dist/types/send-transaction.d.ts +38 -0
- package/dist/types/send-transaction.d.ts.map +1 -0
- package/dist/types/transaction-confirmation-strategy-blockheight.d.ts +10 -0
- package/dist/types/transaction-confirmation-strategy-blockheight.d.ts.map +1 -0
- package/dist/types/transaction-confirmation-strategy-nonce.d.ts +15 -0
- package/dist/types/transaction-confirmation-strategy-nonce.d.ts.map +1 -0
- package/dist/types/transaction-confirmation-strategy-racer.d.ts +14 -0
- package/dist/types/transaction-confirmation-strategy-racer.d.ts.map +1 -0
- package/dist/types/transaction-confirmation-strategy-recent-signature.d.ts +13 -0
- package/dist/types/transaction-confirmation-strategy-recent-signature.d.ts.map +1 -0
- package/dist/types/transaction-confirmation-strategy-timeout.d.ts +8 -0
- package/dist/types/transaction-confirmation-strategy-timeout.d.ts.map +1 -0
- package/dist/types/transaction-confirmation.d.ts +37 -0
- package/dist/types/transaction-confirmation.d.ts.map +1 -0
- package/package.json +21 -18
package/dist/index.node.js.map
CHANGED
|
@@ -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/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
|
|
1
|
+
{"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 { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { 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 { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\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 { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { RequestAirdropApi } from '@solana/rpc-core/dist/types/rpc-methods/requestAirdrop';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { 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 } from '@solana/rpc-transport';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { getRpcSubscriptionsWithSubscriptionCoalescing } from './rpc-subscription-coalescer';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n\nexport function createSolanaRpcSubscriptions(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions> {\n return pipe(\n createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi(DEFAULT_RPC_CONFIG),\n }),\n rpcSubscriptions =>\n getRpcSubscriptionsWithSubscriptionCoalescing({\n getDeduplicationKey: (...args) => fastStableStringify(args),\n rpcSubscriptions,\n })\n );\n}\n\nexport function createSolanaRpcSubscriptions_UNSTABLE(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions & SolanaRpcSubscriptionsUnstable> {\n return createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi_UNSTABLE(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","type CacheEntry<TIterable extends AsyncIterable<unknown>> = {\n abortController: AbortController;\n iterable: Promise<TIterable> | TIterable;\n purgeScheduled: boolean;\n referenceCount: number;\n};\ntype CacheKey = string | symbol;\ntype Config<TInput extends unknown[], TIterable extends AsyncIterable<unknown>> = Readonly<{\n getAbortSignalFromInputArgs: (...args: TInput) => AbortSignal;\n getCacheEntryMissingError: (cacheKey: CacheKey) => Error;\n getCacheKeyFromInputArgs: (...args: TInput) =>\n | CacheKey\n // `undefined` implies 'do not cache'\n | undefined;\n onCacheHit: (iterable: TIterable, ...args: TInput) => Promise<void>;\n onCreateIterable: (abortSignal: AbortSignal, ...args: TInput) => Promise<TIterable>;\n}>;\n\nfunction registerIterableCleanup(iterable: AsyncIterable<unknown>, cleanupFn: CallableFunction) {\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of iterable);\n } catch {\n /* empty */\n } finally {\n // Run the cleanup function.\n cleanupFn();\n }\n })();\n}\n\nexport function getCachedAbortableIterableFactory<TInput extends unknown[], TIterable extends AsyncIterable<unknown>>({\n getAbortSignalFromInputArgs,\n getCacheEntryMissingError,\n getCacheKeyFromInputArgs,\n onCacheHit,\n onCreateIterable,\n}: Config<TInput, TIterable>): (...args: TInput) => Promise<TIterable> {\n const cache = new Map<CacheKey, CacheEntry<TIterable>>();\n function getCacheEntryOrThrow(cacheKey: CacheKey) {\n const currentCacheEntry = cache.get(cacheKey);\n if (!currentCacheEntry) {\n throw getCacheEntryMissingError(cacheKey);\n }\n return currentCacheEntry;\n }\n return async (...args: TInput) => {\n const cacheKey = getCacheKeyFromInputArgs(...args);\n const signal = getAbortSignalFromInputArgs(...args);\n if (cacheKey === undefined) {\n return await onCreateIterable(signal, ...args);\n }\n const cleanup = () => {\n cache.delete(cacheKey);\n signal.removeEventListener('abort', handleAbort);\n };\n const handleAbort = () => {\n const cacheEntry = getCacheEntryOrThrow(cacheKey);\n if (cacheEntry.purgeScheduled !== true) {\n cacheEntry.purgeScheduled = true;\n globalThis.queueMicrotask(() => {\n cacheEntry.purgeScheduled = false;\n if (cacheEntry.referenceCount === 0) {\n cacheEntry.abortController.abort();\n cleanup();\n }\n });\n }\n cacheEntry.referenceCount--;\n };\n signal.addEventListener('abort', handleAbort);\n try {\n const cacheEntry = cache.get(cacheKey);\n if (!cacheEntry) {\n const singletonAbortController = new AbortController();\n const newIterablePromise = onCreateIterable(singletonAbortController.signal, ...args);\n const newCacheEntry: CacheEntry<TIterable> = {\n abortController: singletonAbortController,\n iterable: newIterablePromise,\n purgeScheduled: false,\n referenceCount: 1,\n };\n cache.set(cacheKey, newCacheEntry);\n const newIterable = await newIterablePromise;\n registerIterableCleanup(newIterable, cleanup);\n newCacheEntry.iterable = newIterable;\n return newIterable;\n } else {\n cacheEntry.referenceCount++;\n const iterableOrIterablePromise = cacheEntry.iterable;\n const cachedIterable =\n 'then' in iterableOrIterablePromise ? await iterableOrIterablePromise : iterableOrIterablePromise;\n await onCacheHit(cachedIterable, ...args);\n return cachedIterable;\n }\n } catch (e) {\n cleanup();\n throw e;\n }\n };\n}\n","import { PendingRpcSubscription, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\ntype CacheKey = string | undefined;\ntype Config<TRpcSubscriptionsMethods> = Readonly<{\n getDeduplicationKey: GetDeduplicationKeyFn;\n rpcSubscriptions: RpcSubscriptions<TRpcSubscriptionsMethods>;\n}>;\ntype GetDeduplicationKeyFn = (subscriptionMethod: string | symbol, payload: unknown) => CacheKey;\n\nconst EXPLICIT_ABORT_TOKEN = Symbol(\n __DEV__\n ? \"This symbol is thrown from a subscription's iterator when the subscription is \" +\n 'explicitly aborted by the user'\n : undefined\n);\n\nfunction registerIterableCleanup(iterable: AsyncIterable<unknown>, cleanupFn: CallableFunction) {\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of iterable);\n } catch {\n /* empty */\n } finally {\n // Run the cleanup function.\n cleanupFn();\n }\n })();\n}\n\nexport function getRpcSubscriptionsWithSubscriptionCoalescing<TRpcSubscriptionsMethods>({\n getDeduplicationKey,\n rpcSubscriptions,\n}: Config<TRpcSubscriptionsMethods>): RpcSubscriptions<TRpcSubscriptionsMethods> {\n const cache = new Map<CacheKey, PendingRpcSubscription<unknown>>();\n return new Proxy(rpcSubscriptions, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n const subscriptionMethod = Reflect.get(target, p, receiver);\n if (typeof subscriptionMethod !== 'function') {\n return subscriptionMethod;\n }\n return function (...rawParams: unknown[]) {\n const deduplicationKey = getDeduplicationKey(p, rawParams);\n if (deduplicationKey === undefined) {\n return (subscriptionMethod as CallableFunction)(...rawParams);\n }\n if (cache.has(deduplicationKey)) {\n return cache.get(deduplicationKey)!;\n }\n const iterableFactory = getCachedAbortableIterableFactory<\n Parameters<PendingRpcSubscription<unknown>['subscribe']>,\n AsyncIterable<unknown>\n >({\n getAbortSignalFromInputArgs: ({ abortSignal }) => abortSignal,\n getCacheEntryMissingError(deduplicationKey) {\n // TODO: Coded error.\n return new Error(\n `Found no cache entry for subscription with deduplication key \\`${deduplicationKey?.toString()}\\``\n );\n },\n getCacheKeyFromInputArgs: () => deduplicationKey,\n async onCacheHit(_iterable, _config) {\n /**\n * This transport's goal is to prevent duplicate subscriptions from\n * being made. If a cached iterable] is found, do not send the subscribe\n * message again.\n */\n },\n async onCreateIterable(abortSignal, config) {\n const pendingSubscription = (subscriptionMethod as CallableFunction)(\n ...rawParams\n ) as PendingRpcSubscription<unknown>;\n const iterable = await pendingSubscription.subscribe({\n ...config,\n abortSignal,\n });\n registerIterableCleanup(iterable, () => {\n cache.delete(deduplicationKey);\n });\n return iterable;\n },\n });\n const pendingSubscription: PendingRpcSubscription<unknown> = {\n async subscribe(...args) {\n const iterable = await iterableFactory(...args);\n const { abortSignal } = args[0];\n let abortPromise;\n return {\n ...iterable,\n async *[Symbol.asyncIterator]() {\n abortPromise ||= abortSignal.aborted\n ? Promise.reject(EXPLICIT_ABORT_TOKEN)\n : new Promise<never>((_, reject) => {\n abortSignal.addEventListener('abort', () => {\n reject(EXPLICIT_ABORT_TOKEN);\n });\n });\n try {\n const iterator = iterable[Symbol.asyncIterator]();\n while (true) {\n const iteratorResult = await Promise.race([iterator.next(), abortPromise]);\n if (iteratorResult.done) {\n return;\n } else {\n yield iteratorResult.value;\n }\n }\n } catch (e) {\n if (e === EXPLICIT_ABORT_TOKEN) {\n return;\n }\n cache.delete(deduplicationKey);\n throw e;\n }\n },\n };\n },\n };\n cache.set(deduplicationKey, pendingSubscription);\n return pendingSubscription;\n };\n },\n });\n}\n","import { pipe } from '@solana/functional';\nimport { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return pipe(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n transport => getRpcTransportWithRequestCoalescing(transport, getSolanaRpcPayloadDeduplicationKey)\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nfunction isJsonRpcPayload(payload: unknown): payload is Readonly<{ method: string; params: unknown }> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n","import { pipe } from '@solana/functional';\nimport { createWebSocketTransport } from '@solana/rpc-transport';\nimport { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getWebSocketTransportWithAutoping } from './rpc-websocket-autopinger';\nimport { getWebSocketTransportWithConnectionSharding } from './rpc-websocket-connection-sharding';\n\nexport function createDefaultRpcSubscriptionsTransport(\n config: Omit<Parameters<typeof createWebSocketTransport>[0], 'sendBufferHighWatermark'> & {\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows\n * for. Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string;\n intervalMs?: number;\n sendBufferHighWatermark?: number;\n }\n): IRpcWebSocketTransport {\n const { getShard, intervalMs, ...rest } = config;\n return pipe(\n createWebSocketTransport({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n }),\n transport =>\n getWebSocketTransportWithAutoping({\n intervalMs: intervalMs ?? 5_000,\n transport,\n }),\n transport =>\n getWebSocketTransportWithConnectionSharding({\n getShard,\n transport,\n })\n );\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype Config = Readonly<{\n intervalMs: number;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getWebSocketTransportWithAutoping({ intervalMs, transport }: Config): IRpcWebSocketTransport {\n const pingableConnections = new Map<\n Awaited<ReturnType<IRpcWebSocketTransport>>,\n Awaited<ReturnType<IRpcWebSocketTransport>>\n >();\n return async (...args) => {\n const connection = await transport(...args);\n let intervalId: string | number | NodeJS.Timeout | undefined;\n function sendPing() {\n connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(PING_PAYLOAD);\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n if (pingableConnections.has(connection) === false) {\n pingableConnections.set(connection, {\n [Symbol.asyncIterator]: connection[Symbol.asyncIterator].bind(connection),\n send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: (\n ...args: Parameters<typeof connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED>\n ) => {\n restartPingTimer();\n return connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...args);\n },\n });\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of connection) {\n restartPingTimer();\n }\n } catch {\n /* empty */\n } finally {\n pingableConnections.delete(connection);\n clearInterval(intervalId);\n if (handleOffline) {\n globalThis.window.removeEventListener('offline', handleOffline);\n }\n if (handleOnline) {\n globalThis.window.removeEventListener('online', handleOnline);\n }\n }\n })();\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n let handleOffline;\n let handleOnline;\n if (__BROWSER__) {\n handleOffline = () => {\n clearInterval(intervalId);\n };\n handleOnline = () => {\n sendPing();\n restartPingTimer();\n };\n globalThis.window.addEventListener('offline', handleOffline);\n globalThis.window.addEventListener('online', handleOnline);\n }\n }\n return pingableConnections.get(connection)!;\n };\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\ntype Config = Readonly<{\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows for.\n * Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string | symbol;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst NULL_SHARD_CACHE_KEY = Symbol(\n __DEV__ ? 'Cache key to use when there is no connection sharding strategy' : undefined\n);\n\nexport function getWebSocketTransportWithConnectionSharding({ getShard, transport }: Config): IRpcWebSocketTransport {\n return getCachedAbortableIterableFactory({\n getAbortSignalFromInputArgs: ({ signal }) => signal,\n getCacheEntryMissingError(shardKey) {\n // TODO: Coded error.\n return new Error(`Found no cache entry for connection with shard key \\`${shardKey?.toString()}\\``);\n },\n getCacheKeyFromInputArgs: ({ payload }) => (getShard ? getShard(payload) : NULL_SHARD_CACHE_KEY),\n onCacheHit: (connection, { payload }) => connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(payload),\n onCreateIterable: (abortSignal, config) =>\n transport({\n ...config,\n signal: abortSignal,\n }),\n });\n}\n","import { Signature } from '@solana/keys';\nimport { SendTransactionApi } from '@solana/rpc-core/dist/types/rpc-methods/sendTransaction';\nimport { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\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 { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport type { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport type { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport type { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport type { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport {\n getSignatureFromTransaction,\n IDurableNonceTransaction,\n ITransactionWithFeePayer,\n ITransactionWithSignatures,\n} from '@solana/transactions';\n\nimport { createBlockHeightExceedencePromiseFactory } from './transaction-confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './transaction-confirmation-strategy-nonce';\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './transaction-confirmation-strategy-racer';\nimport { createRecentSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-recent-signature';\n\ninterface DefaultDurableNonceTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi & GetAccountInfoApi>;\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi>;\n}\n\ninterface DefaultRecentTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;\n}\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {\n getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;\n transaction: ITransactionWithFeePayer & ITransactionWithSignatures & IDurableNonceTransaction;\n}\n\ninterface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;\n transaction: ITransactionWithFeePayer &\n ITransactionWithSignatures &\n Readonly<{\n lifetimeConstraint: {\n lastValidBlockHeight: Slot;\n };\n }>;\n}\n\nexport function createDefaultDurableNonceTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultDurableNonceTransactionConfirmerConfig) {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory(rpc, rpcSubscriptions);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions\n );\n return async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n };\n}\n\nexport function createDefaultRecentTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultRecentTransactionConfirmerConfig) {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory(rpcSubscriptions);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions\n );\n return async function confirmRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n };\n}\n\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.instructions[0].accounts[0].address,\n }),\n ];\n }\n );\n}\n\nexport async function waitForRecentTransactionConfirmation(\n config: WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, getBlockHeightExceedencePromise, transaction }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n }\n );\n}\n","import { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport { RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n lastValidBlockHeight: Slot;\n}) => Promise<void>;\n\nexport function createBlockHeightExceedencePromiseFactory(\n rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi>\n): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({ abortSignal: callerAbortSignal, lastValidBlockHeight }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n const slotNotifications = await rpcSubscriptions\n .slotNotifications()\n .subscribe({ abortSignal: abortController.signal });\n try {\n for await (const slotNotification of slotNotifications) {\n if (slotNotification.slot > lastValidBlockHeight) {\n // TODO: Coded error.\n throw new Error(\n 'The network has progressed past the last block for which this transaction ' +\n 'could have committed.'\n );\n }\n }\n } finally {\n abortController.abort();\n }\n };\n}\n","import { Address } from '@solana/addresses';\nimport { getBase58Decoder, getBase64Encoder } from '@solana/codecs-strings';\nimport { Base64EncodedDataResponse } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { 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)[0] as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced ` +\n `to \\`${nonceValue}\\`.`\n );\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new Error(`No nonce account could be found at address \\`${nonceAccountAddress}\\`.`);\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced to \\`${nonceValue}\\`.`\n );\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await Promise.race([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n"]}
|
|
@@ -2,41 +2,86 @@ this.globalThis = this.globalThis || {};
|
|
|
2
2
|
this.globalThis.solanaWeb3 = (function (exports) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var Nt=Object.create;var Ze=Object.defineProperty;var kt=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var Pt=Object.getPrototypeOf,_t=Object.prototype.hasOwnProperty;var Lt=(e,n)=>()=>(e&&(n=e(e=0)),n);var Ot=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Ft=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Bt(n))!_t.call(e,o)&&o!==t&&Ze(e,o,{get:()=>n[o],enumerable:!(r=kt(n,o))||r.enumerable});return e};var Qe=(e,n,t)=>(t=e!=null?Nt(Pt(e)):{},Ft(n||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e));var l=Lt(()=>{});var qe=Ot((zs,ht)=>{l();var zo=Object.prototype.toString,Do=Object.keys||function(e){var n=[];for(var t in e)n.push(t);return n};function oe(e,n){var t,r,o,i,s,a,d;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return oe(e.toJSON(),n);if(d=zo.call(e),d==="[object Array]"){for(o="[",r=e.length-1,t=0;t<r;t++)o+=oe(e[t],!0)+",";return r>-1&&(o+=oe(e[t],!0)),o+"]"}else if(d==="[object Object]"){for(i=Do(e).sort(),r=i.length,o="",t=0;t<r;)s=i[t],a=oe(e[s],!1),a!==void 0&&(o&&(o+=","),o+=JSON.stringify(s)+":"+a),t++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return n?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}ht.exports=function(e){var n=oe(e,!1);if(n!==void 0)return ""+n};});l();l();l();function M(e,n,t=0){if(n.length-t<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function P(e,n,t,r=0){let o=t.length-r;if(o<n)throw new Error(`Codec [${e}] expected ${n} bytes, got ${o}.`)}var H=e=>{let n=e.filter(i=>i.length);if(n.length===0)return e.length?e[0]:new Uint8Array;if(n.length===1)return n[0];let t=n.reduce((i,s)=>i+s.length,0),r=new Uint8Array(t),o=0;return n.forEach(i=>{r.set(i,o),o+=i.length;}),r},Ut=(e,n)=>{if(e.length>=n)return e;let t=new Uint8Array(n).fill(0);return t.set(e),t},we=(e,n)=>Ut(e.length<=n?e:e.slice(0,n),n);function _(e,n,t){if(e.fixedSize!==n.fixedSize)throw new Error(`Encoder and decoder must have the same fixed size, got [${e.fixedSize}] and [${n.fixedSize}].`);if(e.maxSize!==n.maxSize)throw new Error(`Encoder and decoder must have the same max size, got [${e.maxSize}] and [${n.maxSize}].`);if(t===void 0&&e.description!==n.description)throw new Error(`Encoder and decoder must have the same description, got [${e.description}] and [${n.description}]. Pass a custom description as a third argument if you want to override the description and bypass this error.`);return {decode:n.decode,description:t??e.description,encode:e.encode,fixedSize:e.fixedSize,maxSize:e.maxSize}}function en(e,n,t){return {description:t??`fixed(${n}, ${e.description})`,fixedSize:n,maxSize:n}}function ie(e,n,t){return {...en(e,n,t),encode:r=>we(e.encode(r),n)}}function se(e,n,t){return {...en(e,n,t),decode:(r,o=0)=>{P("fixCodec",n,r,o),(o>0||r.length>n)&&(r=r.slice(o,o+n)),e.fixedSize!==null&&(r=we(r,e.fixedSize));let[i]=e.decode(r,0);return [i,o+n]}}}function K(e,n){return {description:e.description,encode:t=>e.encode(n(t)),fixedSize:e.fixedSize,maxSize:e.maxSize}}function Y(e,n){return {decode:(t,r=0)=>{let[o,i]=e.decode(t,r);return [n(o,t,r),i]},description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize}}l();l();function nn(e,n,t,r){if(r<n||r>t)throw new Error(`Codec [${e}] expected number to be in the range [${n}, ${t}], got ${r}.`)}function tn(e){let n,t=e.name;return e.size>1&&(n=!("endian"in e.config)||e.config.endian===0,t+=n?"(le)":"(be)"),{description:e.config.description??t,fixedSize:e.size,littleEndian:n,maxSize:e.size}}function rn(e){let n=tn(e);return {description:n.description,encode(t){e.range&&nn(e.name,e.range[0],e.range[1],t);let r=new ArrayBuffer(e.size);return e.set(new DataView(r),t,n.littleEndian),new Uint8Array(r)},fixedSize:n.fixedSize,maxSize:n.maxSize}}function on(e){let n=tn(e);return {decode(t,r=0){M(n.description,t,r),P(n.description,e.size,t,r);let o=new DataView($t(t,r,e.size));return [e.get(o,n.littleEndian),r+e.size]},description:n.description,fixedSize:n.fixedSize,maxSize:n.maxSize}}function $t(e,n,t){let r=e.byteOffset+(n??0),o=t??e.byteLength;return e.buffer.slice(r,r+o)}var R=(e={})=>({description:e.description??"shortU16",encode:n=>{nn("shortU16",0,65535,n);let t=[0];for(let r=0;;r+=1){let o=n>>r*7;if(o===0)break;let i=127&o;t[r]=i,r>0&&(t[r-1]|=128);}return new Uint8Array(t)},fixedSize:null,maxSize:3}),v=(e={})=>({decode:(n,t=0)=>{let r=0,o=0;for(;++o;){let i=o-1,s=n[t+i],a=127&s;if(r|=a<<i*7,!(s&128))break}return [r,t+o]},description:e.description??"shortU16",fixedSize:null,maxSize:3});var ae=(e={})=>rn({config:e,name:"u32",range:[0,+"0xffffffff"],set:(n,t,r)=>n.setUint32(0,t,r),size:4}),ce=(e={})=>on({config:e,get:(n,t)=>n.getUint32(0,t),name:"u32",size:4});var L=(e={})=>rn({config:e,name:"u8",range:[0,+"0xff"],set:(n,t)=>n.setUint8(0,t),size:1}),O=(e={})=>on({config:e,get:n=>n.getUint8(0),name:"u8",size:1});function Wt(e,n,t=n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new Error(`Expected a string of base ${e.length}, got [${t}].`)}var Mt=e=>{let n=e.length,t=BigInt(n);return {description:`base${n}`,encode(r){if(Wt(e,r),r==="")return new Uint8Array;let o=[...r],i=o.findIndex(p=>p!==e[0]);i=i===-1?o.length:i;let s=Array(i).fill(0);if(i===o.length)return Uint8Array.from(s);let a=o.slice(i),d=0n,u=1n;for(let p=a.length-1;p>=0;p-=1)d+=u*BigInt(e.indexOf(a[p])),u*=t;let f=[];for(;d>0n;)f.unshift(Number(d%256n)),d/=256n;return Uint8Array.from(s.concat(f))},fixedSize:null,maxSize:null}},Ht=e=>{let n=e.length,t=BigInt(n);return {decode(r,o=0){let i=o===0?r:r.slice(o);if(i.length===0)return ["",0];let s=i.findIndex(f=>f!==0);s=s===-1?i.length:s;let a=e[0].repeat(s);if(s===i.length)return [a,r.length];let d=i.slice(s).reduce((f,p)=>f*256n+BigInt(p),0n),u=[];for(;d>0n;)u.unshift(e[Number(d%t)]),d/=t;return [a+u.join(""),r.length]},description:`base${n}`,fixedSize:null,maxSize:null}};var sn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",D=()=>Mt(sn),F=()=>Ht(sn);var an=()=>({description:"base64",encode(e){try{let n=atob(e).split("").map(t=>t.charCodeAt(0));return new Uint8Array(n)}catch{throw new Error(`Expected a string of base 64, got [${e}].`)}},fixedSize:null,maxSize:null}),cn=()=>({decode(e,n=0){let t=e.slice(n);return [btoa(String.fromCharCode(...t)),e.length]},description:"base64",fixedSize:null,maxSize:null});var Kt=e=>e.replace(/\u0000/g,"");var jt=globalThis.TextDecoder,Gt=globalThis.TextEncoder,Vt=()=>{let e;return {description:"utf8",encode:n=>new Uint8Array((e||(e=new Gt)).encode(n)),fixedSize:null,maxSize:null}},qt=()=>{let e;return {decode(n,t=0){let r=(e||(e=new jt)).decode(n.slice(t));return [Kt(r),n.length]},description:"utf8",fixedSize:null,maxSize:null}};var de=(e={})=>{let n=e.size??ae(),t=e.encoding??Vt(),r=e.description??`string(${t.description}; ${dn(n)})`;return n==="variable"?{...t,description:r}:typeof n=="number"?ie(t,n,r):{description:r,encode:o=>{let i=t.encode(o),s=n.encode(i.length);return H([s,i])},fixedSize:null,maxSize:null}},ue=(e={})=>{let n=e.size??ce(),t=e.encoding??qt(),r=e.description??`string(${t.description}; ${dn(n)})`;return n==="variable"?{...t,description:r}:typeof n=="number"?se(t,n,r):{decode:(o,i=0)=>{M("string",o,i);let[s,a]=n.decode(o,i),d=Number(s);i=a;let u=o.slice(i,i+d);P("string",d,u);let[f,p]=t.decode(u);return i+=p,[f,i]},description:r,fixedSize:null,maxSize:null}};function dn(e){return typeof e=="object"?e.description:`${e}`}l();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 U;async function Yt(e){return U===void 0&&(U=new Promise(n=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{n(U=!1);}).then(()=>{n(U=!0);});})),typeof U=="boolean"?U:await U}async function un(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function ln(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Yt(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 xe(){if($(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function Ee(){if($(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function Se(){if($(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}function fo(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=k.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 L(e){return P({description:e?.description??(""),encoding:k,size:32})}function re(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var pr=37095705934669439343138083508754565189542113879843219016388785533085940283555n,b=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Ae=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function w(e){let r=e%b;return r>=0n?r:b+r}function A(e,r){let t=e;for(;r-- >0n;)t*=t,t%=b;return t}function mr(e){let t=e*e%b*e%b,n=A(t,2n)*t%b,o=A(n,1n)*e%b,s=A(o,5n)*o%b,i=A(s,10n)*s%b,u=A(i,20n)*i%b,d=A(u,40n)*u%b,l=A(d,80n)*d%b,f=A(l,80n)*d%b,m=A(f,10n)*s%b;return A(m,2n)*e%b}function gr(e,r){let t=w(r*r*r),n=w(t*t*r),o=mr(e*n),s=w(e*t*o),i=w(r*s*s),u=s,d=w(s*Ae),l=i===e,f=i===w(-e),m=i===w(-e*Ae);return l&&(s=u),(f||m)&&(s=d),(w(s)&1n)===1n&&(s=w(-s)),!l&&!f?null:s}function hr(e,r){let t=w(e*e),n=w(t-1n),o=w(pr*t+1n),s=gr(n,o);if(s===null)return !1;let i=(r&128)!==0;return !(s===0n&&i)}function br(e){let r=e.toString(16);return r.length===1?`0${r}`:r}function yr(e){let t=`0x${e.reduce((n,o,s)=>`${br(s===31?o&-129:o)}${n}`,"")}`;return BigInt(t)}async function wr(e){if(e.byteLength!==32)return !1;let r=yr(e);return hr(r,e[31])}var ze=32,Te=16,ee=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Ie=class extends Error{};async function xr({programAddress:e,seeds:r}){if(await ye(),r.length>Te)throw new Error(`A maximum of ${Te} seeds may be supplied when creating an address`);let t,n=r.reduce((d,l,f)=>{let m=typeof l=="string"?(t||(t=new TextEncoder)).encode(l):l;if(m.byteLength>ze)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return d.push(...m),d},[]),o=L(),s=o.serialize(e),i=await crypto.subtle.digest("SHA-256",new Uint8Array([...n,...s,...ee])),u=new Uint8Array(i);if(await wr(u))throw new Ie("Invalid seeds; point must fall off the Ed25519 curve");return o.deserialize(u)[0]}async function po({programAddress:e,seeds:r}){let t=255;for(;t>0;)try{return {bumpSeed:t,pda:await xr({programAddress:e,seeds:[...r,new Uint8Array([t])]})}}catch(n){if(n instanceof Ie)t--;else throw n}throw new Error("Unable to find a viable program address bump seed")}async function mo({baseAddress:e,programAddress:r,seed:t}){let{serialize:n,deserialize:o}=L(),s=typeof t=="string"?new TextEncoder().encode(t):t;if(s.byteLength>ze)throw new Error("The seed exceeds the maximum length of 32 bytes");let i=n(r);if(i.length>=ee.length&&i.slice(-ee.length).every((l,f)=>l===ee[f]))throw new Error("programAddress cannot end with the PDA marker");let u=await crypto.subtle.digest("SHA-256",new Uint8Array([...n(e),...s,...i])),d=new Uint8Array(u);return o(d)[0]}async function Re(e){if(await xe(),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]=L().deserialize(new Uint8Array(r));return t}a();var Er=(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))(Er||{}),ve=2,ae=1;function yo(e){return e&~ve}function wo(e){return e&~ae}function xo(e){return e>=2}function Eo(e){return (e&ae)!==0}function So(e,r){return e|r}function Ao(e){return e|ve}function To(e){return e|ae}a();async function vo(){return await we(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function Ne(e,r){await Ee();let t=await crypto.subtle.sign("Ed25519",e,r);return new Uint8Array(t)}async function No(e,r,t){return await Se(),await crypto.subtle.verify("Ed25519",e,r,t)}a();function j(e){if("signatures"in e){let{signatures:r,...t}=e;return t}else return e}function Oo(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=k.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 Do(e,r){if("lifetimeConstraint"in r&&r.lifetimeConstraint.blockhash===e.blockhash&&r.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return r;let t={...j(r),lifetimeConstraint:e};return Object.freeze(t),t}function Po({version:e}){let r={instructions:[],version:e};return Object.freeze(r),r}var E=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(E||{}),Sr=1;function U(e){return e>=2}function M(e){return (e&Sr)!==0}function ke(e,r){return e|r}var _e="SysvarRecentB1ockHashes11111111111111111111",Le="11111111111111111111111111111111";function $o(e){if(!Oe(e))throw new Error("Transaction is not a durable nonce transaction")}function Ar(e,r){return {accounts:[{address:e,role:E.WRITABLE},{address:_e,role:E.READONLY},{address:r,role:E.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:Le}}function Tr(e){return e.programAddress===Le&&e.data!=null&&zr(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===E.WRITABLE&&e.accounts[1].address===_e&&e.accounts[1].role===E.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===E.READONLY_SIGNER}function zr(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Oe(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&Tr(e.instructions[0])}function Uo({nonce:e,nonceAccountAddress:r,nonceAuthorityAddress:t},n){let o=Oe(n);if(o&&n.lifetimeConstraint.nonce===e&&n.instructions[0].accounts[0].address===r&&n.instructions[0].accounts[2].address===t)return n;let s={...j(n),instructions:[Ar(r,t),...o?n.instructions.slice(1):n.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(s),s}function Mo(e,r){if("feePayer"in r&&e===r.feePayer)return r;let t={...j(r),feePayer:e};return Object.freeze(t),t}function jo(e,r){let t={...j(r),instructions:[...r.instructions,e]};return Object.freeze(t),t}function Wo(e,r){let t={...j(r),instructions:[e,...r.instructions]};return Object.freeze(t),t}function Ce(e,r,t){e[r]=t(e[r]??{role:E.READONLY});}var g=Symbol("AddressMapTypeProperty");function Ir(e,r){let t={[e]:{[g]:0,role:E.WRITABLE_SIGNER}},n=new Set;for(let o of r){Ce(t,o.programAddress,i=>{if(n.add(o.programAddress),g in i){if(M(i.role))switch(i[g]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[g]===2)return i}return {[g]:2,role:E.READONLY}});let s;if(o.accounts)for(let i of o.accounts)Ce(t,i.address,u=>{let{address:d,...l}=i;if(g in u)switch(u[g]){case 0:return u;case 1:{let f=ke(u.role,l.role);if("lookupTableAddress"in l){if(u.lookupTableAddress!==l.lookupTableAddress&&(s||(s=re()))(l.lookupTableAddress,u.lookupTableAddress)<0)return {[g]:1,...l,role:f}}else if(U(l.role))return {[g]:2,role:f};return u.role!==f?{...u,role:f}:u}case 2:{let f=ke(u.role,l.role);if(n.has(i.address)){if(M(l.role))throw new Error(`This transaction includes an address (\`${i.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return u.role!==f?{...u,role:f}:u}else return "lookupTableAddress"in l&&!U(u.role)?{...l,[g]:1,role:f}:u.role!==f?{...u,role:f}:u}}return "lookupTableAddress"in l?{...l,[g]:1}:{...l,[g]:2}});}return t}function Rr(e){let r;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[g]!==i[g]){if(o[g]===0)return -1;if(i[g]===0)return 1;if(o[g]===2)return -1;if(i[g]===2)return 1}let u=U(o.role);if(u!==U(i.role))return u?-1:1;let d=M(o.role);return d!==M(i.role)?d?-1:1:(r||(r=re()),o[g]===1&&i[g]===1&&o.lookupTableAddress!==i.lookupTableAddress?r(o.lookupTableAddress,i.lookupTableAddress):r(n,s))}).map(([n,o])=>({address:n,...o}))}function vr(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===E.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(t).sort(re()).map(n=>({lookupTableAddress:n,...t[n]}))}function Nr(e){let r=0,t=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=M(o.role);U(o.role)?(n++,s||t++):s||r++;}return {numReadonlyNonSignerAccounts:r,numReadonlySignerAccounts:t,numSignerAccounts:n}}function kr(e){let r={};for(let[t,n]of e.entries())r[n.address]=t;return r}function Cr(e,r){let t=kr(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 Br(e){return "nonce"in e?e.nonce:e.blockhash}function _r(e){let r=e.findIndex(n=>"lookupTableAddress"in n);return (r===-1?e:e.slice(0,r)).map(({address:n})=>n)}function De(e){let r=Ir(e.feePayer,e.instructions),t=Rr(r);return {...e.version!=="legacy"?{addressTableLookups:vr(t)}:null,header:Nr(t),instructions:Cr(e.instructions,t),lifetimeToken:Br(e.lifetimeConstraint),staticAccounts:_r(t),version:e.version}}function Lr(){return v([["lookupTableAddress",L(void 0)],["writableIndices",R(I(),{...null,size:S()})],["readableIndices",R(I(),{...void 0,size:S()})]],void 0)}function Or(){return v([["numSignerAccounts",I(void 0)],["numReadonlySignerAccounts",I(void 0)],["numReadonlyNonSignerAccounts",I(void 0)]],void 0)}function Dr(){return G(v([["programAddressIndex",I(void 0)],["accountIndices",R(I({description:""}),{description:"",size:S()})],["data",Q({description:"",size:S()})]]),e=>e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:e.accountIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.accountIndices.length&&e.data.byteLength)return e;let{accountIndices:r,data:t,...n}=e;return {...n,...r.length?{accountIndices:r}:null,...t.byteLength?{data:t}:null}})}function Pr(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 Pe(e){return ()=>{throw Pr("decoder",e)}}var ce=128,$r={description:"",fixedSize:null,maxSize:1};function Ur(e,r=0){let t=e[r];return t&ce?[t^ce,r+1]:["legacy",r]}function Mr(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|ce])}function jr(){return {...$r,deserialize:Ur,serialize:Mr}}var Wr={description:"",fixedSize:null,maxSize:null};function Fr(e){return e.version==="legacy"?v(Be()).serialize(e):G(v([...Be(),["addressTableLookups",Kr()]]),r=>r.version==="legacy"?r:{...r,addressTableLookups:r.addressTableLookups??[]}).serialize(e)}function Be(){return [["version",jr()],["header",Or()],["staticAccounts",R(L(),{description:"",size:S()})],["lifetimeToken",P({description:"",encoding:k,size:32})],["instructions",R(Dr(),{description:"",size:S()})]]}function Kr(){return R(Lr(),{...null,size:S()})}function $e(){return {...Wr,deserialize:Pe("CompiledMessage"),serialize:Fr}}async function Gr(e,r){let t=$e().serialize(e);return await Ne(r,t)}async function Fo(e,r){let t=De(r),[n,o]=await Promise.all([Re(e.publicKey),Gr(t,e.privateKey)]),s={..."signatures"in r?r.signatures:null,[n]:o},i={...r,signatures:s};return Object.freeze(i),i}function Hr(e){let r=De(e),t;if("signatures"in e){t=[];for(let n=0;n<r.header.numSignerAccounts;n++)t[n]=e.signatures[r.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else t=Array(r.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:r,signatures:t}}var Vr={description:"",fixedSize:null,maxSize:null};function qr(e){let r=Hr(e);return v([["signatures",R(Q({size:64}),{...null,size:S()})],["compiledMessage",$e()]]).serialize(r)}function Yr(){return {...Vr,deserialize:Pe("CompiledMessage"),serialize:qr}}function Ko(e){let r=Yr().serialize(e);return btoa(String.fromCharCode(...r))}a();a();function de(e,r,t){if(Array.isArray(e))return e.map((n,o)=>de(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]=de(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 Jr(e,r){return de(e,[],r)}var c={},ue;function Xr(){if(!ue){let e=[["data","parsed","info","tokenAmount","decimals"],["data","parsed","info","tokenAmount","uiAmount"],["data","parsed","info","rentExemptReserve","decimals"],["data","parsed","info","rentExemptReserve","uiAmount"],["data","parsed","info","delegatedAmount","decimals"],["data","parsed","info","delegatedAmount","uiAmount"],["data","parsed","info","extensions",c,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","preUpdateAverageRate"],["data","parsed","info","extensions",c,"state","currentRate"]],r=[...e,["data","parsed","info","lastExtendedSlotStartIndex"],["data","parsed","info","slashPenalty"],["data","parsed","info","warmupCooldownRate"],["data","parsed","info","decimals"],["data","parsed","info","numRequiredSigners"],["data","parsed","info","numValidSigners"],["data","parsed","info","stake","delegation","warmupCooldownRate"],["data","parsed","info","exemptionThreshold"],["data","parsed","info","burnPercent"],["data","parsed","info","commission"],["data","parsed","info","votes",c,"confirmationCount"]];ue={getAccountInfo:r.map(t=>["value",...t]),getBlock:[["blockTime"],["transactions",c,"meta","preTokenBalances",c,"accountIndex"],["transactions",c,"meta","preTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","postTokenBalances",c,"accountIndex"],["transactions",c,"meta","postTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","rewards",c,"commission"],["transactions",c,"meta","innerInstructions",c,"index"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"programIdIndex"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"accounts",c],["transactions",c,"transaction","message","addressTableLookups",c,"writableIndexes",c],["transactions",c,"transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transactions",c,"transaction","message","instructions",c,"programIdIndex"],["transactions",c,"transaction","message","instructions",c,"accounts",c],["transactions",c,"transaction","message","header","numReadonlySignedAccounts"],["transactions",c,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",c,"transaction","message","header","numRequiredSignatures"],["rewards",c,"commission"]],getBlockTime:[[]],getClusterNodes:[[c,"featureSet"],[c,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[c,"commission"]],getMultipleAccounts:r.map(t=>["value",c,...t]),getProgramAccounts:r.flatMap(t=>[["value",c,"account",...t],[c,"account",...t]]),getRecentPerformanceSamples:[[c,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:e.map(t=>["value",c,"account",...t]),getTokenAccountsByOwner:e.map(t=>["value",c,"account",...t]),getTokenLargestAccounts:[["value",c,"decimals"],["value",c,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",c,"accountIndex"],["meta","preTokenBalances",c,"uiTokenAmount","decimals"],["meta","postTokenBalances",c,"accountIndex"],["meta","postTokenBalances",c,"uiTokenAmount","decimals"],["meta","rewards",c,"commission"],["meta","innerInstructions",c,"index"],["meta","innerInstructions",c,"instructions",c,"programIdIndex"],["meta","innerInstructions",c,"instructions",c,"accounts",c],["transaction","message","addressTableLookups",c,"writableIndexes",c],["transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transaction","message","instructions",c,"programIdIndex"],["transaction","message","instructions",c,"accounts",c],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",c,"commission"],["delinquent",c,"commission"]],simulateTransaction:r.map(t=>["value","accounts",c,...t])};}return ue}function Ue(e,r){return e.filter(t=>t[0]===c&&typeof r=="number"||t[0]===r).map(t=>t.slice(1))}function le(e,r){if(Array.isArray(e))return e.map((t,n)=>{let o=Ue(r,n);return le(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[n,o]of Object.entries(e)){let s=Ue(r,n);t[n]=le(o,s);}return t}else return typeof e=="number"&&r.length===0&&Number.isInteger(e)?BigInt(e):e}function Zr(e,r){let t=r?Xr()[r]:void 0;return le(e,t??[])}function Me(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,u=Jr(s,i?(d,l)=>i(o,d,l):void 0);return {methodName:o,params:u,responseProcessor:d=>Zr(d,o)}}}})}a();var Qr=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"}},fe=0;function et(){let e=fe;return fe=(fe+1)%Number.MAX_SAFE_INTEGER,e}function rt(e,r){return {id:et(),jsonrpc:"2.0",method:e,params:r}}function tt(e,r){return {async send(t){let{methodName:n,params:o,responseProcessor:s}=r,i=rt(n,o),u=await e.transport({payload:i,signal:t?.abortSignal});if("error"in u)throw new Qr(u.error);return s?s(u.result):u.result}}}function nt(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),u=i?i(...o):{methodName:s,params:o};return tt(e,u)}}})}function We(e){return nt(e)}var ot=globalThis.fetch,st=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 ut(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Fe({httpAgentNodeOnly:e,headers:r,url:t}){let n=void 0;let o=r&&ut(r);return async function({payload:i,signal:u}){let d=JSON.stringify(i),l={agent:n,body:d,headers:{...o,accept:"application/json","content-length":d.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:u},f=await ot(t,l);if(!f.ok)throw new st({message:f.statusText,statusCode:f.status});return await f.json()}}a();a();var te=class extends Error{constructor(t,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",u=s%10,d=s%100;u==1&&d!=11?i=s+"st":u==2&&d!=12?i=s+"nd":u==3&&d!=13?i=s+"rd":i=s+"th";let l=n.length>1?n.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${i} argument to the \`${t}\` RPC method${l?` at path \`${l}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=n,this.methodName=t,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Ke={onIntegerOverflow(e,r,t){throw new te(e,r,t)}};function us(e){return We({...e,api:Me(Ke)})}a();a();function Ge(e,r){let t;return async function(o){let{payload:s,signal:i}=o,u=r(s);if(u===void 0)return await e(o);if(t||(Promise.resolve().then(()=>{t=void 0;}),t={}),t[u]==null){let l=new AbortController;t[u]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let d=t[u];if(d.numConsumers++,i){let l=d.responsePromise;return await new Promise((f,m)=>{let F=Je=>{i.removeEventListener("abort",F),d.numConsumers-=1,d.numConsumers===0&&d.abortController.abort();let Xe=new DOMException(Je.target.reason,"AbortError");m(Xe);};i.addEventListener("abort",F),l.then(f).finally(()=>{i.removeEventListener("abort",F);});})}else return await d.responsePromise}}a();var qe=ar(Ve(),1);function Ye(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, qe.default)([e.method,e.params])}function ft(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Es(e){return Ge(Fe({...e,headers:{...e.headers?ft(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),Ye)}
|
|
9
|
+
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function fn(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function pn(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function mn(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}var Ae,Te;function Ee(){return Ae||(Ae=D()),Ae}function Jt(){return Te||(Te=F()),Te}function Xt(e){return !(e.length<32||e.length>44||Ee().encode(e).byteLength!==32)}function X(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=Ee().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(n){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:n})}}function Zt(e){return X(e),e}function fe(e){return K(de({description:e?.description??"Address",encoding:Ee(),size:32}),n=>Zt(n))}function Z(e){return ue({description:e?.description??"Address",encoding:Jt(),size:32})}function hn(e){return _(fe(e),Z(e))}function pe(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var Qt=37095705934669439343138083508754565189542113879843219016388785533085940283555n,E=57896044618658097711785492504343953926634992332820282019728792003956564819949n,gn=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function I(e){let n=e%E;return n>=0n?n:E+n}function C(e,n){let t=e;for(;n-- >0n;)t*=t,t%=E;return t}function er(e){let t=e*e%E*e%E,r=C(t,2n)*t%E,o=C(r,1n)*e%E,i=C(o,5n)*o%E,s=C(i,10n)*i%E,a=C(s,20n)*s%E,d=C(a,40n)*a%E,u=C(d,80n)*d%E,f=C(u,80n)*d%E,p=C(f,10n)*i%E;return C(p,2n)*e%E}function nr(e,n){let t=I(n*n*n),r=I(t*t*n),o=er(e*r),i=I(e*t*o),s=I(n*i*i),a=i,d=I(i*gn),u=s===e,f=s===I(-e),p=s===I(-e*gn);return u&&(i=a),(f||p)&&(i=d),(I(i)&1n)===1n&&(i=I(-i)),!u&&!f?null:i}function tr(e,n){let t=I(e*e),r=I(t-1n),o=I(Qt*t+1n),i=nr(r,o);if(i===null)return !1;let s=(n&128)!==0;return !(i===0n&&s)}function rr(e){let n=e.toString(16);return n.length===1?`0${n}`:n}function or(e){let t=`0x${e.reduce((r,o,i)=>`${rr(i===31?o&-129:o)}${r}`,"")}`;return BigInt(t)}async function ir(e){if(e.byteLength!==32)return !1;let n=or(e);return tr(n,e[31])}function oi(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="number"&&e[1]>=0&&e[1]<=255&&Xt(e[0])}function ii(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]}.`);X(e[0]);}var Sn=32,bn=16,le=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],yn=class extends Error{};async function sr({programAddress:e,seeds:n}){if(await un(),n.length>bn)throw new Error(`A maximum of ${bn} seeds may be supplied when creating an address`);let t,r=n.reduce((d,u,f)=>{let p=typeof u=="string"?(t||(t=new TextEncoder)).encode(u):u;if(p.byteLength>Sn)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return d.push(...p),d},[]),o=hn(),i=o.encode(e),s=await crypto.subtle.digest("SHA-256",new Uint8Array([...r,...i,...le])),a=new Uint8Array(s);if(await ir(a))throw new yn("Invalid seeds; point must fall off the Ed25519 curve");return o.decode(a)[0]}async function si({programAddress:e,seeds:n}){let t=255;for(;t>0;)try{return [await sr({programAddress:e,seeds:[...n,new Uint8Array([t])]}),t]}catch(r){if(r instanceof yn)t--;else throw r}throw new Error("Unable to find a viable program address bump seed")}async function ai({baseAddress:e,programAddress:n,seed:t}){let{encode:r,decode:o}=hn(),i=typeof t=="string"?new TextEncoder().encode(t):t;if(i.byteLength>Sn)throw new Error("The seed exceeds the maximum length of 32 bytes");let s=r(n);if(s.length>=le.length&&s.slice(-le.length).every((u,f)=>u===le[f]))throw new Error("programAddress cannot end with the PDA marker");let a=await crypto.subtle.digest("SHA-256",new Uint8Array([...r(e),...i,...s])),d=new Uint8Array(a);return o(d)[0]}async function wn(e){if(await fn(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let n=await crypto.subtle.exportKey("raw",e),[t]=Z().decode(new Uint8Array(n));return t}l();var ar=(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))(ar||{}),An=2,xe=1;function li(e){return e&~An}function fi(e){return e&~xe}function pi(e){return e>=2}function mi(e){return (e&xe)!==0}function gi(e,n){return e|n}function bi(e){return e|An}function hi(e){return e|xe}l();async function Ti(){return await ln(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}var j;function cr(e){j||(j=D());try{if(e.length<64||e.length>88)throw new Error("Expected input string to decode to a byte array of length 64.");let t=j.encode(e).byteLength;if(t!==64)throw new Error(`Expected input string to decode to a byte array of length 64. Actual length: ${t}`)}catch(n){throw new Error(`\`${e}\` is not a signature`,{cause:n})}}function Ei(e){return j||(j=D()),!(e.length<64||e.length>88||j.encode(e).byteLength!==64)}async function Tn(e,n){await pn();let t=await crypto.subtle.sign("Ed25519",e,n);return new Uint8Array(t)}function xi(e){return cr(e),e}async function Ii(e,n,t){return await mn(),await crypto.subtle.verify("Ed25519",e,n,t)}l();function En(e){switch(e){case"finalized":return 2;case"confirmed":return 1;case"processed":return 0;default:return (n=>{throw new Error(`Unrecognized commitment \`${e}\`.`)})()}}function me(e,n){return e===n?0:En(e)<En(n)?-1:1}var xn=18446744073709551615n;function vi(e){return e>=0&&e<=xn}function dr(e){if(e<0)throw new Error("Input for 64-bit unsigned integer cannot be negative");if(e>xn)throw new Error("Input number is too large to be represented as a 64-bit unsigned integer")}function zi(e){return dr(e),e}function Di(e){try{return BigInt(e),!0}catch{return !1}}function ur(e){try{BigInt(e);}catch(n){throw new Error(`\`${e}\` cannot be parsed as a BigInt`,{cause:n})}}function Ni(e){return ur(e),e}function ki(e){return !Number.isNaN(Number(e))}function lr(e){if(Number.isNaN(Number(e)))throw new Error(`\`${e}\` cannot be parsed as a Number`)}function Bi(e){return lr(e),e}function Pi(e){return !(e>864e13||e<-864e13)}function fr(e){try{if(e>864e13||e<-864e13)throw new Error("Expected input number to be in the range [-8.64e15, 8.64e15]")}catch(n){throw new Error(`\`${e}\` is not a timestamp`,{cause:n})}}function _i(e){return fr(e),e}l();l();function ge(e){return e.reduce((n,t)=>n===null||t===null?null:n+t,0)}function pr(e,n,t,r){if(typeof e=="number")return [e,r];if(typeof e=="object")return e.decode(t,r);if(e==="remainder"){let o=ge(n);if(o===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');let i=t.slice(r).length;if(i%o!==0)throw new Error(`The remainder of the byte array (${i} bytes) cannot be split into chunks of ${o} bytes. Codecs of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${i} modulo ${o} should be equal to zero.`);return [i/o,r]}throw new Error(`Unrecognized array-like codec size: ${JSON.stringify(e)}`)}function mr(e){return typeof e=="object"?e.description:`${e}`}function In(e,n){if(typeof e!="number")return null;if(e===0)return 0;let t=ge(n);return t===null?null:t*e}function gr(e,n){return typeof e=="object"?e.encode(n):new Uint8Array}function br(e,n,t){if(n!==t)throw new Error(`Expected [${e}] to have ${n} items, got ${t}.`)}function Cn(e,n,t){if(n==="remainder"&&e.fixedSize===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');return {description:t??`array(${e.description}; ${mr(n)})`,fixedSize:In(n,[e.fixedSize]),maxSize:In(n,[e.maxSize])}}function N(e,n={}){let t=n.size??ae();return {...Cn(e,t,n.description),encode:r=>(typeof t=="number"&&br("array",t,r.length),H([gr(t,r.length),...r.map(o=>e.encode(o))]))}}function k(e,n={}){let t=n.size??ce();return {...Cn(e,t,n.description),decode:(r,o=0)=>{if(typeof t=="object"&&r.slice(o).length===0)return [[],o];let[i,s]=pr(t,[e.fixedSize],r,o);o=s;let a=[];for(let d=0;d<i;d+=1){let[u,f]=e.decode(r,o);a.push(u),o=f;}return [a,o]}}}function Ie(e={}){let n=e.size??"variable",t=typeof n=="object"?n.description:`${n}`,r=e.description??`bytes(${t})`,o={description:r,encode:i=>i,fixedSize:null,maxSize:null};return n==="variable"?o:typeof n=="number"?ie(o,n,r):{...o,encode:i=>{let s=o.encode(i),a=n.encode(s.length);return H([a,s])}}}function Ce(e={}){let n=e.size??"variable",t=typeof n=="object"?n.description:`${n}`,r=e.description??`bytes(${t})`,o={decode:(i,s=0)=>{let a=i.slice(s);return [a,s+a.length]},description:r,fixedSize:null,maxSize:null};return n==="variable"?o:typeof n=="number"?se(o,n,r):{...o,decode:(i,s=0)=>{M("bytes",i,s);let[a,d]=n.decode(i,s),u=Number(a);s=d;let f=i.slice(s,s+u);P("bytes",u,f);let[p,m]=o.decode(f);return s+=m,[p,s]}}}function Rn(e,n){let t=e.map(([r,o])=>`${String(r)}: ${o.description}`).join(", ");return {description:n??`struct(${t})`,fixedSize:ge(e.map(([,r])=>r.fixedSize)),maxSize:ge(e.map(([,r])=>r.maxSize))}}function $(e,n={}){return {...Rn(e,n.description),encode:t=>{let r=e.map(([o,i])=>i.encode(t[o]));return H(r)}}}function G(e,n={}){return {...Rn(e,n.description),decode:(t,r=0)=>{let o={};return e.forEach(([i,s])=>{let[a,d]=s.decode(t,r);r=d,o[i]=a;}),[o,r]}}}l();function B(e,...n){return n.reduce((t,r)=>r(t),e)}function ee(e){if("signatures"in e){let{signatures:n,...t}=e;return t}else return e}var Re;function Zi(e){Re||(Re=D());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=Re.encode(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(n){throw new Error(`\`${e}\` is not a blockhash`,{cause:n})}}function hr(e,n){if("lifetimeConstraint"in n&&n.lifetimeConstraint.blockhash===e.blockhash&&n.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return n;let t={...ee(n),lifetimeConstraint:e};return Object.freeze(t),t}function Sr({version:e}){let n={instructions:[],version:e};return Object.freeze(n),n}var x=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(x||{}),yr=1;function W(e){return e>=2}function Q(e){return (e&yr)!==0}function vn(e,n){return e|n}var Nn="SysvarRecentB1ockHashes11111111111111111111",kn="11111111111111111111111111111111";function Qi(e){if(!Bn(e))throw new Error("Transaction is not a durable nonce transaction")}function zn(e,n){return {accounts:[{address:e,role:x.WRITABLE},{address:Nn,role:x.READONLY},{address:n,role:x.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:kn}}function Fe(e){return e.programAddress===kn&&e.data!=null&&wr(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===x.WRITABLE&&e.accounts[1].address===Nn&&e.accounts[1].role===x.READONLY&&e.accounts[2].address!=null&&W(e.accounts[2].role)}function wr(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Bn(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&Fe(e.instructions[0])}function Ar(e,n,t){return e.accounts[0].address===n&&e.accounts[2].address===t}function Tr({nonce:e,nonceAccountAddress:n,nonceAuthorityAddress:t},r){let o,i=r.instructions[0];if(i&&Fe(i))if(Ar(i,n,t)){if(Bn(r)&&r.lifetimeConstraint.nonce===e)return r;o=[i,...r.instructions.slice(1)];}else o=[zn(n,t),...r.instructions.slice(1)];else o=[zn(n,t),...r.instructions];let s={...ee(r),instructions:o,lifetimeConstraint:{nonce:e}};return Object.freeze(s),s}function Er(e,n){if("feePayer"in n&&e===n.feePayer)return n;let t={...ee(n),feePayer:e};return Object.freeze(t),t}function xr(e,n){let t={...ee(n),instructions:[...n.instructions,e]};return Object.freeze(t),t}function es(e,n){let t={...ee(n),instructions:[e,...n.instructions]};return Object.freeze(t),t}function Dn(e,n,t){e[n]=t(e[n]??{role:x.READONLY});}var w=Symbol("AddressMapTypeProperty");function Ir(e,n){let t={[e]:{[w]:0,role:x.WRITABLE_SIGNER}},r=new Set;for(let o of n){Dn(t,o.programAddress,s=>{if(r.add(o.programAddress),w in s){if(Q(s.role))switch(s[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(s[w]===2)return s}return {[w]:2,role:x.READONLY}});let i;if(o.accounts)for(let s of o.accounts)Dn(t,s.address,a=>{let{address:d,...u}=s;if(w in a)switch(a[w]){case 0:return a;case 1:{let f=vn(a.role,u.role);if("lookupTableAddress"in u){if(a.lookupTableAddress!==u.lookupTableAddress&&(i||(i=pe()))(u.lookupTableAddress,a.lookupTableAddress)<0)return {[w]:1,...u,role:f}}else if(W(u.role))return {[w]:2,role:f};return a.role!==f?{...a,role:f}:a}case 2:{let f=vn(a.role,u.role);if(r.has(s.address)){if(Q(u.role))throw new Error(`This transaction includes an address (\`${s.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return a.role!==f?{...a,role:f}:a}else return "lookupTableAddress"in u&&!W(a.role)?{...u,[w]:1,role:f}:a.role!==f?{...a,role:f}:a}}return "lookupTableAddress"in u?{...u,[w]:1}:{...u,[w]:2}});}return t}function Cr(e){let n;return Object.entries(e).sort(([r,o],[i,s])=>{if(o[w]!==s[w]){if(o[w]===0)return -1;if(s[w]===0)return 1;if(o[w]===2)return -1;if(s[w]===2)return 1}let a=W(o.role);if(a!==W(s.role))return a?-1:1;let d=Q(o.role);return d!==Q(s.role)?d?-1:1:(n||(n=pe()),o[w]===1&&s[w]===1&&o.lookupTableAddress!==s.lookupTableAddress?n(o.lookupTableAddress,s.lookupTableAddress):n(r,i))}).map(([r,o])=>({address:r,...o}))}function Rr(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===x.WRITABLE?o.writableIndices.push(r.addressIndex):o.readableIndices.push(r.addressIndex);}return Object.keys(t).sort(pe()).map(r=>({lookupTableAddress:r,...t[r]}))}function vr(e){let n=0,t=0,r=0;for(let o of e){if("lookupTableAddress"in o)break;let i=Q(o.role);W(o.role)?(r++,i||t++):i||n++;}return {numReadonlyNonSignerAccounts:n,numReadonlySignerAccounts:t,numSignerAccounts:r}}function zr(e){let n={};for(let[t,r]of e.entries())n[r.address]=t;return n}function Dr(e,n){let t=zr(n);return e.map(({accounts:r,data:o,programAddress:i})=>({programAddressIndex:t[i],...r?{accountIndices:r.map(({address:s})=>t[s])}:null,...o?{data:o}:null}))}function Nr(e){return "nonce"in e?e.nonce:e.blockhash}function kr(e){let n=e.findIndex(r=>"lookupTableAddress"in r);return (n===-1?e:e.slice(0,n)).map(({address:r})=>r)}function Pn(e){let n=Ir(e.feePayer,e.instructions),t=Cr(n);return {...e.version!=="legacy"?{addressTableLookups:Rr(t)}:null,header:vr(t),instructions:Dr(e.instructions,t),lifetimeToken:Nr(e.lifetimeConstraint),staticAccounts:kr(t),version:e.version}}function Br(e){let n=Pn(e),t;if("signatures"in e){t=[];for(let r=0;r<n.header.numSignerAccounts;r++)t[r]=e.signatures[n.staticAccounts[r]]??new Uint8Array(Array(64).fill(0));}else t=Array(n.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:n,signatures:t}}function Pr(e){let{header:n}=e,t=n.numSignerAccounts-n.numReadonlySignerAccounts,r=e.staticAccounts.length-n.numSignerAccounts-n.numReadonlyNonSignerAccounts,o=[],i=0;for(let s=0;s<t;s++)o.push({address:e.staticAccounts[i],role:x.WRITABLE_SIGNER}),i++;for(let s=0;s<n.numReadonlySignerAccounts;s++)o.push({address:e.staticAccounts[i],role:x.READONLY_SIGNER}),i++;for(let s=0;s<r;s++)o.push({address:e.staticAccounts[i],role:x.WRITABLE}),i++;for(let s=0;s<n.numReadonlyNonSignerAccounts;s++)o.push({address:e.staticAccounts[i],role:x.READONLY}),i++;return o}function _r(e,n){let t=n[e.programAddressIndex]?.address;if(!t)throw new Error(`Could not find program address at index ${e.programAddressIndex}`);let r=e.accountIndices?.map(i=>n[i]),{data:o}=e;return {programAddress:t,...r&&r.length?{accounts:r}:{},...o&&o.length?{data:o}:{}}}function Lr(e,n,t){if(!n||!Fe(n))return {blockhash:e,lastValidBlockHeight:t??2n**64n-1n};{let r=n.accounts[0].address;X(r);let o=n.accounts[2].address;return X(o),{nonce:e,nonceAccountAddress:r,nonceAuthorityAddress:o}}}function Or(e){let{compiledMessage:{staticAccounts:n},signatures:t}=e;return t.reduce((r,o,i)=>{if(o.every(d=>d===0))return r;let a=n[i];return {...r,[a]:o}},{})}function Fr(e,n){let{compiledMessage:t}=e;if("addressTableLookups"in t&&t.addressTableLookups.length>0)throw new Error("Cannot convert transaction with addressTableLookups");let r=t.staticAccounts[0];if(!r)throw new Error("No fee payer set in CompiledTransaction");let o=Pr(t),i=t.instructions.map(u=>_r(u,o)),s=i[0],a=Lr(t.lifetimeToken,s,n),d=Or(e);return B(Sr({version:t.version}),u=>Er(r,u),u=>i.reduce((f,p)=>xr(p,f),u),u=>"blockhash"in a?hr(a,u):Tr(a,u),u=>e.signatures.length?{...u,signatures:d}:u)}var _n="lookupTableAddress",Ln="writableIndices",On="readableIndices",Fn="addressTableLookup",ve;function Ur(){return ve||(ve=$([["lookupTableAddress",fe({description:_n})],["writableIndices",N(L(),{description:Ln,size:R()})],["readableIndices",N(L(),{description:On,size:R()})]],{description:Fn})),ve}var ze;function $r(){return ze||(ze=G([["lookupTableAddress",Z({description:_n})],["writableIndices",k(O(),{description:Ln,size:v()})],["readableIndices",k(O(),{description:On,size:v()})]],{description:Fn})),ze}var De;function Wr(){return De||(De=L()),De}function Ne(e){let n=Wr();return {...n,description:e??n.description}}var ke;function Mr(){return ke||(ke=O()),ke}function Be(e){let n=Mr();return {...n,description:e??n.description}}var Un=void 0,$n=void 0,Wn=void 0,Mn=void 0;function Hr(){return $([["numSignerAccounts",Ne(Un)],["numReadonlySignerAccounts",Ne($n)],["numReadonlyNonSignerAccounts",Ne(Wn)]],{description:Mn})}function Kr(){return G([["numSignerAccounts",Be(Un)],["numReadonlySignerAccounts",Be($n)],["numReadonlyNonSignerAccounts",Be(Wn)]],{description:Mn})}var Hn="programAddressIndex",Kn=void 0,jn="accountIndices",Gn="data",Pe;function jr(){return Pe||(Pe=K($([["programAddressIndex",L({description:Hn})],["accountIndices",N(L({description:Kn}),{description:jn,size:R()})],["data",Ie({description:Gn,size:R()})]]),e=>e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:e.accountIndices??[],data:e.data??new Uint8Array(0)})),Pe}var _e;function Gr(){return _e||(_e=Y(G([["programAddressIndex",O({description:Hn})],["accountIndices",k(O({description:Kn}),{description:jn,size:v()})],["data",Ce({description:Gn,size:v()})]]),e=>{if(e.accountIndices.length&&e.data.byteLength)return e;let{accountIndices:n,data:t,...r}=e;return {...r,...n.length?{accountIndices:n}:null,...t.byteLength?{data:t}:null}})),_e}var Oe=128,Vn={description:"",fixedSize:null,maxSize:1};function Vr(e,n=0){let t=e[n];return t&Oe?[t^Oe,n+1]:["legacy",n]}function qr(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|Oe])}function Yr(){return {...Vn,decode:Vr}}function Jr(){return {...Vn,encode:qr}}var qn="staticAccounts",Yn="lifetimeToken",Jn="instructions",Xn="addressTableLookups";function Xr(){return $(Zn())}function Zr(){return K($([...Zn(),["addressTableLookups",eo()]]),e=>e.version==="legacy"?e:{...e,addressTableLookups:e.addressTableLookups??[]})}function Zn(){return [["version",Jr()],["header",Hr()],["staticAccounts",N(fe(),{description:qn,size:R()})],["lifetimeToken",de({description:Yn,encoding:D(),size:32})],["instructions",N(jr(),{description:Jn,size:R()})]]}function Qr(){return [["version",Yr()],["header",Kr()],["staticAccounts",k(Z(),{description:qn,size:v()})],["lifetimeToken",ue({description:Yn,encoding:F(),size:32})],["instructions",k(Gr(),{description:Jn,size:v()})],["addressTableLookups",no()]]}function eo(){return N(Ur(),{description:Xn,size:R()})}function no(){return k($r(),{description:Xn,size:v()})}var Qn="message";function et(){return {description:Qn,encode:e=>e.version==="legacy"?Xr().encode(e):Zr().encode(e),fixedSize:null,maxSize:null}}function to(){return Y(G(Qr(),{description:Qn}),({addressTableLookups:e,...n})=>n.version==="legacy"||!e?.length?n:{...n,addressTableLookups:e})}var nt="signatures",tt="transaction";function ro(){return $([["signatures",N(Ie({size:64}),{description:nt,size:R()})],["compiledMessage",et()]],{description:tt})}function oo(){return Y(Ce({size:64}),e=>e)}function io(){return G([["signatures",k(oo(),{description:nt,size:v()})],["compiledMessage",to()]],{description:tt})}function rt(){return K(ro(),Br)}function so(e){return Y(io(),n=>Fr(n,e))}function ns(e){return _(rt(),so(e))}var Le;function Ue(e){Le||(Le=F());let n=e.signatures[e.feePayer];if(!n)throw new Error("Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer.");return Le.decode(n)[0]}async function ao(e,n){let t=Pn(n),r="signatures"in n?{...n.signatures}:{},o=et().encode(t),i=await Promise.all(e.map(a=>Promise.all([wn(a.publicKey),Tn(a.privateKey,o)])));for(let[a,d]of i)r[a]=d;let s={...n,signatures:r};return Object.freeze(s),s}async function ts(e,n){let t=await ao(e,n);return co(t),Object.freeze(t),t}function co(e){let n=e.instructions.flatMap(r=>r.accounts?.filter(o=>W(o.role))??[]).map(r=>r.address);new Set([e.feePayer,...n]).forEach(r=>{if(!e.signatures[r])throw new Error(`Transaction is missing signature for address \`${r}\``)});}function ot(e){let n=rt().encode(e);return cn().decode(n)[0]}l();l();l();async function ne(e,n,t){let{abortSignal:r,commitment:o,getRecentSignatureConfirmationPromise:i}=n;r?.throwIfAborted();let s=new AbortController;if(r){let a=()=>{s.abort();};r.addEventListener("abort",a,{signal:s.signal});}try{let a=t({...n,abortSignal:s.signal});return await Promise.race([i({abortSignal:s.signal,commitment:o,signature:e}),...a])}finally{s.abort();}}l();function te(e,n){return async function({abortSignal:r,commitment:o,signature:i}){let s=new AbortController;function a(){s.abort();}r.addEventListener("abort",a,{signal:s.signal});let d=await n.signatureNotifications(i,{commitment:o}).subscribe({abortSignal:s.signal}),u=(async()=>{for await(let p of d){if(p.value.err)throw new Error(`The transaction with signature \`${i}\` failed.`,{cause:p.value.err});return}})(),f=(async()=>{let{value:p}=await e.getSignatureStatuses([i]).send({abortSignal:s.signal}),m=p[0];m&&m.confirmationStatus&&me(m.confirmationStatus,o)>=0||await new Promise(()=>{});})();try{return await Promise.race([u,f])}finally{s.abort();}}}l();async function it({abortSignal:e,commitment:n}){return await new Promise((t,r)=>{let o=d=>{clearTimeout(a);let u=new DOMException(d.target.reason,"AbortError");r(u);};e.addEventListener("abort",o);let i=n==="processed"?3e4:6e4,s=performance.now(),a=setTimeout(()=>{let d=performance.now()-s;r(new DOMException(`Timeout elapsed after ${d} ms`,"TimeoutError"));},i);})}function st({rpc:e,rpcSubscriptions:n}){let t=te(e,n);return async function(o){await uo({...o,getRecentSignatureConfirmationPromise:t,getTimeoutPromise:it});}}async function uo(e){await ne(e.signature,e,function({abortSignal:t,commitment:r,getTimeoutPromise:o}){return [o({abortSignal:t,commitment:r})]});}function ws({rpc:e,rpcSubscriptions:n}){let t=st({rpc:e,rpcSubscriptions:n});return async function(o){return await lo({...o,confirmSignatureOnlyTransaction:t,rpc:e})}}async function lo({abortSignal:e,commitment:n,confirmSignatureOnlyTransaction:t,lamports:r,recipientAddress:o,rpc:i}){let s=await i.requestAirdrop(o,r,{commitment:n}).send({abortSignal:e});return await t({abortSignal:e,commitment:n,signature:s}),s}l();l();function Me(e,n,t){if(Array.isArray(e))return e.map((r,o)=>Me(r,[...n,o],t));if(typeof e=="object"&&e!==null){let r={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Me(e[o],[...n,o],t));return r}else return typeof e=="bigint"?(t&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&t(n,e),Number(e)):e}function ct(e,n){return Me(e,[],n)}var c={},He=[["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",c,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","preUpdateAverageRate"],["data","parsed","info","extensions",c,"state","currentRate"]],V=[...He,["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",c,"confirmationCount"]],$e,We;function fo(){return $e||($e={accountNotifications:V.map(e=>["value",...e]),blockNotifications:[["value","block","blockTime"],["value","block","transactions",c,"meta","preTokenBalances",c,"accountIndex"],["value","block","transactions",c,"meta","preTokenBalances",c,"uiTokenAmount","decimals"],["value","block","transactions",c,"meta","postTokenBalances",c,"accountIndex"],["value","block","transactions",c,"meta","postTokenBalances",c,"uiTokenAmount","decimals"],["value","block","transactions",c,"meta","rewards",c,"commission"],["value","block","transactions",c,"meta","innerInstructions",c,"index"],["value","block","transactions",c,"meta","innerInstructions",c,"instructions",c,"programIdIndex"],["value","block","transactions",c,"meta","innerInstructions",c,"instructions",c,"accounts",c],["value","block","transactions",c,"transaction","message","addressTableLookups",c,"writableIndexes",c],["value","block","transactions",c,"transaction","message","addressTableLookups",c,"readonlyIndexes",c],["value","block","transactions",c,"transaction","message","instructions",c,"programIdIndex"],["value","block","transactions",c,"transaction","message","instructions",c,"accounts",c],["value","block","transactions",c,"transaction","message","header","numReadonlySignedAccounts"],["value","block","transactions",c,"transaction","message","header","numReadonlyUnsignedAccounts"],["value","block","transactions",c,"transaction","message","header","numRequiredSignatures"],["value","block","rewards",c,"commission"]],programNotifications:V.flatMap(e=>[["value",c,"account",...e],[c,"account",...e]])}),$e}function po(){return We||(We={getAccountInfo:V.map(e=>["value",...e]),getBlock:[["blockTime"],["transactions",c,"meta","preTokenBalances",c,"accountIndex"],["transactions",c,"meta","preTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","postTokenBalances",c,"accountIndex"],["transactions",c,"meta","postTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","rewards",c,"commission"],["transactions",c,"meta","innerInstructions",c,"index"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"programIdIndex"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"accounts",c],["transactions",c,"transaction","message","addressTableLookups",c,"writableIndexes",c],["transactions",c,"transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transactions",c,"transaction","message","instructions",c,"programIdIndex"],["transactions",c,"transaction","message","instructions",c,"accounts",c],["transactions",c,"transaction","message","header","numReadonlySignedAccounts"],["transactions",c,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",c,"transaction","message","header","numRequiredSignatures"],["rewards",c,"commission"]],getBlockTime:[[]],getClusterNodes:[[c,"featureSet"],[c,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[c,"commission"]],getMultipleAccounts:V.map(e=>["value",c,...e]),getProgramAccounts:V.flatMap(e=>[["value",c,"account",...e],[c,"account",...e]]),getRecentPerformanceSamples:[[c,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:He.map(e=>["value",c,"account",...e]),getTokenAccountsByOwner:He.map(e=>["value",c,"account",...e]),getTokenLargestAccounts:[["value",c,"decimals"],["value",c,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",c,"accountIndex"],["meta","preTokenBalances",c,"uiTokenAmount","decimals"],["meta","postTokenBalances",c,"accountIndex"],["meta","postTokenBalances",c,"uiTokenAmount","decimals"],["meta","rewards",c,"commission"],["meta","innerInstructions",c,"index"],["meta","innerInstructions",c,"instructions",c,"programIdIndex"],["meta","innerInstructions",c,"instructions",c,"accounts",c],["transaction","message","addressTableLookups",c,"writableIndexes",c],["transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transaction","message","instructions",c,"programIdIndex"],["transaction","message","instructions",c,"accounts",c],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",c,"commission"],["delinquent",c,"commission"]],simulateTransaction:V.map(e=>["value","accounts",c,...e])}),We}function at(e,n){return e.filter(t=>t[0]===c&&typeof n=="number"||t[0]===n).map(t=>t.slice(1))}function be(e,n){if(Array.isArray(e))return e.map((t,r)=>{let o=at(n,r);return be(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[r,o]of Object.entries(e)){let i=at(n,r);t[r]=be(o,i);}return t}else return typeof e=="number"&&n.length===0&&Number.isInteger(e)?BigInt(e):e}function mo(e,n){let t=n?po()[n]:void 0;return be(e,t??[])}function go(e,n){let t=n?fo()[n]:void 0;return be(e,t??[])}function dt(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...n){let[t,r]=n,o=r.toString();return function(...i){let s=e?.onIntegerOverflow,a=ct(i,s?(d,u)=>s(o,d,u):void 0);return {methodName:o,params:a,responseProcessor:d=>mo(d,o)}}}})}function Ke(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...n){let[t,r]=n,o=r.toString();return function(...i){let s=e?.onIntegerOverflow;return {params:ct(i,s?(d,u)=>s(o,d,u):void 0),responseProcessor:d=>go(d,o),subscribeMethodName:o.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:o.replace(/Notifications$/,"Unsubscribe")}}}})}function ut(e){return Ke(e)}l();var pt=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"}},je=0;function bo(){let e=je;return je=(je+1)%Number.MAX_SAFE_INTEGER,e}function Ge(e,n){return {id:bo(),jsonrpc:"2.0",method:e,params:n}}function ho(e,n){return {async send(t){let{methodName:r,params:o,responseProcessor:i}=n,s=Ge(r,o),a=await e.transport({payload:s,signal:t?.abortSignal});if("error"in a)throw new pt(a.error);return i?i(a.result):a.result}}}function So(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(n,t,r){return function(...o){let i=t.toString(),s=Reflect.get(n,i,r),a=s?s(...o):{methodName:i,params:o};return ho(e,a)}}})}function mt(e){return So(e)}function yo(e,n){(async()=>{try{for await(let t of e);}catch{}finally{n();}})();}function wo(e,{params:n,subscribeMethodName:t,unsubscribeMethodName:r,responseProcessor:o}){return {async subscribe({abortSignal:i}){i.throwIfAborted();let s;function a(){if(s!==void 0){let m=Ge(r,[s]);f.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(m).finally(()=>{d.abort();});}else d.abort();}i.addEventListener("abort",a);let d=new AbortController,u=Ge(t,n),f=await e.transport({payload:u,signal:d.signal});function p(){i.removeEventListener("abort",a);}yo(f,p);for await(let m of f)if("id"in m&&m.id===u.id){if("error"in m)throw new pt(m.error);s=m.result;break}if(s==null)throw new Error("Failed to obtain a subscription id from the server");return {async*[Symbol.asyncIterator](){for await(let m of f){if(!("params"in m)||m.params.subscription!==s)continue;let y=m.params.result;yield o?o(y):y;}}}}}}function Ao(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(n,t,r){return function(...o){let i=t.toString(),s=Reflect.get(n,i,r);if(t.toString().endsWith("Notifications")===!1&&!s)throw new Error("Either the notification name must end in 'Notifications' or the API must supply a subscription creator function to map between the notification name and the subscribe/unsubscribe method names.");let a=s?s(...o):{params:o,subscribeMethodName:i.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:i.replace(/Notifications$/,"Unsubscribe")};return wo(e,a)}}})}function Ve(e){return Ao(e)}var To=globalThis.fetch,Eo=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 Ro(e){let n={};for(let t in e)n[t.toLowerCase()]=e[t];return n}function gt({headers:e,url:n}){let t=e&&Ro(e);return async function({payload:o,signal:i}){let s=JSON.stringify(o),a={body:s,headers:{...t,accept:"application/json","content-length":s.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:i},d=await To(n,a);if(!d.ok)throw new Eo({message:d.statusText,statusCode:d.status});return await d.json()}}var re=globalThis.WebSocket,lt=Symbol(void 0);async function vo({sendBufferHighWatermark:e,signal:n,url:t}){return new Promise((r,o)=>{n.addEventListener("abort",a,{once:!0});let i=new Map;function s(h){let S=[...i.values()].filter(T=>T.__hasPolled).map(({onError:T})=>T);i.clear(),S.forEach(T=>{try{T(h);}catch{}});}function a(){s(lt),g.readyState!==re.CLOSED&&g.readyState!==re.CLOSING&&g.close(1e3);}function d(h){p?.onCancel(),n.removeEventListener("abort",a),g.removeEventListener("close",d),g.removeEventListener("error",u),g.removeEventListener("open",m),g.removeEventListener("message",y),s(h);}function u(h){f||o(new Error("WebSocket failed to connect",{cause:h}));}let f=!1,p;function m(){f=!0,r({async send(h){let S=JSON.stringify(h);if(!p&&g.readyState===re.OPEN&&g.bufferedAmount>e){let T,z=new Promise((q,Dt)=>{let Xe=setInterval(()=>{(g.readyState!==re.OPEN||!(g.bufferedAmount>e))&&(clearInterval(Xe),p=void 0,q());},16);T=()=>{p=void 0,clearInterval(Xe),Dt(new Error("WebSocket was closed before payload could be sent"));};});p={onCancel:T,promise:z};}p&&await p.promise,g.send(S);},async*[Symbol.asyncIterator](){let h=Symbol();i.set(h,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let S=i.get(h);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((z,q)=>{i.set(h,{__hasPolled:!0,onError:q,onMessage:z});});}catch(z){if(z===lt)return;throw new Error("WebSocket connection closed",{cause:z})}}}finally{i.delete(h);}}});}function y({data:h}){let S=JSON.parse(h);i.forEach((T,z)=>{if(T.__hasPolled){let{onMessage:q}=T;i.set(z,{__hasPolled:!1,queuedMessages:[]}),q(S);}else T.queuedMessages.push(S);});}let g=new re(t);g.addEventListener("close",d),g.addEventListener("error",u),g.addEventListener("open",m),g.addEventListener("message",y);})}function bt({sendBufferHighWatermark:e,url:n}){if(/^wss?:/i.test(n)===!1){let t=n.match(/^([^:]+):/);throw new DOMException(t?`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${t[1]}:' is not allowed.`:`Failed to construct 'WebSocket': The URL '${n}' is invalid.`)}return async function({payload:r,signal:o}){o?.throwIfAborted();let i=await vo({sendBufferHighWatermark:e,signal:o,url:n});return o?.throwIfAborted(),await i.send(r),{[Symbol.asyncIterator]:i[Symbol.asyncIterator].bind(i),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:i.send.bind(i)}}}var yt=Qe(qe(),1);l();l();var he=class extends Error{constructor(t,r,o){let i=(typeof r[0]=="number"?r[0]:parseInt(r[0],10))+1,s="",a=i%10,d=i%100;a==1&&d!=11?s=i+"st":a==2&&d!=12?s=i+"nd":a==3&&d!=13?s=i+"rd":s=i+"th";let u=r.length>1?r.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${s} argument to the \`${t}\` RPC method${u?` at path \`${u}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=r,this.methodName=t,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Se={onIntegerOverflow(e,n,t){throw new he(e,n,t)}};l();l();function No(e,n){(async()=>{try{for await(let t of e);}catch{}finally{n();}})();}function ye({getAbortSignalFromInputArgs:e,getCacheEntryMissingError:n,getCacheKeyFromInputArgs:t,onCacheHit:r,onCreateIterable:o}){let i=new Map;function s(a){let d=i.get(a);if(!d)throw n(a);return d}return async(...a)=>{let d=t(...a),u=e(...a);if(d===void 0)return await o(u,...a);let f=()=>{i.delete(d),u.removeEventListener("abort",p);},p=()=>{let m=s(d);m.purgeScheduled!==!0&&(m.purgeScheduled=!0,globalThis.queueMicrotask(()=>{m.purgeScheduled=!1,m.referenceCount===0&&(m.abortController.abort(),f());})),m.referenceCount--;};u.addEventListener("abort",p);try{let m=i.get(d);if(m){m.referenceCount++;let y=m.iterable,g="then"in y?await y:y;return await r(g,...a),g}else {let y=new AbortController,g=o(y.signal,...a),h={abortController:y,iterable:g,purgeScheduled:!1,referenceCount:1};i.set(d,h);let S=await g;return No(S,f),h.iterable=S,S}}catch(m){throw f(),m}}}var Ye=Symbol(void 0);function ko(e,n){(async()=>{try{for await(let t of e);}catch{}finally{n();}})();}function St({getDeduplicationKey:e,rpcSubscriptions:n}){let t=new Map;return new Proxy(n,{defineProperty(){return !1},deleteProperty(){return !1},get(r,o,i){let s=Reflect.get(r,o,i);return typeof s!="function"?s:function(...a){let d=e(o,a);if(d===void 0)return s(...a);if(t.has(d))return t.get(d);let u=ye({getAbortSignalFromInputArgs:({abortSignal:p})=>p,getCacheEntryMissingError(p){return new Error(`Found no cache entry for subscription with deduplication key \`${p?.toString()}\``)},getCacheKeyFromInputArgs:()=>d,async onCacheHit(p,m){},async onCreateIterable(p,m){let g=await s(...a).subscribe({...m,abortSignal:p});return ko(g,()=>{t.delete(d);}),g}}),f={async subscribe(...p){let m=await u(...p),{abortSignal:y}=p[0],g;return {...m,async*[Symbol.asyncIterator](){g||(g=y.aborted?Promise.reject(Ye):new Promise((h,S)=>{y.addEventListener("abort",()=>{S(Ye);});}));try{let h=m[Symbol.asyncIterator]();for(;;){let S=await Promise.race([h.next(),g]);if(S.done)return;yield S.value;}}catch(h){if(h===Ye)return;throw t.delete(d),h}}}}};return t.set(d,f),f}}})}function Ys(e){return mt({...e,api:dt(Se)})}function Js(e){return B(Ve({...e,api:Ke(Se)}),n=>St({getDeduplicationKey:(...t)=>(0, yt.default)(t),rpcSubscriptions:n}))}function Xs(e){return Ve({...e,api:ut(Se)})}l();l();function wt(e,n){let t;return async function(o){let{payload:i,signal:s}=o,a=n(i);if(a===void 0)return await e(o);if(t||(Promise.resolve().then(()=>{t=void 0;}),t={}),t[a]==null){let u=new AbortController;t[a]={abortController:u,numConsumers:0,responsePromise:e({...o,signal:u.signal})};}let d=t[a];if(d.numConsumers++,s){let u=d.responsePromise;return await new Promise((f,p)=>{let m=y=>{s.removeEventListener("abort",m),d.numConsumers-=1,d.numConsumers===0&&d.abortController.abort();let g=new DOMException(y.target.reason,"AbortError");p(g);};s.addEventListener("abort",m),u.then(f).finally(()=>{s.removeEventListener("abort",m);});})}else return await d.responsePromise}}l();var At=Qe(qe(),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 Tt(e){return Bo(e)?(0, At.default)([e.method,e.params]):void 0}function Po(e){let n={};for(let t in e)n[t.toLowerCase()]=e[t];return n}function ca(e){return B(gt({...e,headers:{...e.headers?Po(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),n=>wt(n,Tt))}l();l();var _o={jsonrpc:"2.0",method:"ping"};function Et({intervalMs:e,transport:n}){let t=new Map;return async(...r)=>{let o=await n(...r),i;function s(){o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(_o);}function a(){clearInterval(i),i=setInterval(s,e);}if(t.has(o)===!1){t.set(o,{[Symbol.asyncIterator]:o[Symbol.asyncIterator].bind(o),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:(...f)=>(a(),o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...f))}),(async()=>{try{for await(let f of o)a();}catch{}finally{t.delete(o),clearInterval(i),d&&globalThis.window.removeEventListener("offline",d),u&&globalThis.window.removeEventListener("online",u);}})(),globalThis.navigator.onLine&&a();let d,u;d=()=>{clearInterval(i);},u=()=>{s(),a();},globalThis.window.addEventListener("offline",d),globalThis.window.addEventListener("online",u);}return t.get(o)}}l();var Lo=Symbol(void 0);function xt({getShard:e,transport:n}){return ye({getAbortSignalFromInputArgs:({signal:t})=>t,getCacheEntryMissingError(t){return new Error(`Found no cache entry for connection with shard key \`${t?.toString()}\``)},getCacheKeyFromInputArgs:({payload:t})=>e?e(t):Lo,onCacheHit:(t,{payload:r})=>t.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(r),onCreateIterable:(t,r)=>n({...r,signal:t})})}function wa(e){let{getShard:n,intervalMs:t,...r}=e;return B(bt({...r,sendBufferHighWatermark:e.sendBufferHighWatermark??131072}),o=>Et({intervalMs:t??5e3,transport:o}),o=>xt({getShard:n,transport:o}))}l();l();l();function It(e){return async function({abortSignal:t,lastValidBlockHeight:r}){let o=new AbortController;function i(){o.abort();}t.addEventListener("abort",i,{signal:o.signal});let s=await e.slotNotifications().subscribe({abortSignal:o.signal});try{for await(let a of s)if(a.slot>r)throw new Error("The network has progressed past the last block for which this transaction could have committed.")}finally{o.abort();}}}l();var Je=40;function Ct(e,n){return async function({abortSignal:r,commitment:o,currentNonceValue:i,nonceAccountAddress:s}){let a=new AbortController;function d(){a.abort();}r.addEventListener("abort",d,{signal:a.signal});let u=await n.accountNotifications(s,{commitment:o,encoding:"base64"}).subscribe({abortSignal:a.signal}),f=F(),p=an();function m([h]){let T=p.encode(h).slice(Je,Je+32);return f.decode(T)[0]}let y=(async()=>{for await(let h of u){let S=m(h.value.data);if(S!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${S}\`.`)}})(),g=(async()=>{let{value:h}=await e.getAccountInfo(s,{commitment:o,dataSlice:{length:32,offset:Je},encoding:"base58"}).send({abortSignal:a.signal});if(!h)throw new Error(`No nonce account could be found at address \`${s}\`.`);let S=h.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,g])}finally{a.abort();}}}function Rt({rpc:e,rpcSubscriptions:n}){let t=Ct(e,n),r=te(e,n);return async function(i){await Oo({...i,getNonceInvalidationPromise:t,getRecentSignatureConfirmationPromise:r});}}function vt({rpc:e,rpcSubscriptions:n}){let t=It(n),r=te(e,n);return async function(i){await Fo({...i,getBlockHeightExceedencePromise:t,getRecentSignatureConfirmationPromise:r});}}async function Oo(e){await ne(Ue(e.transaction),e,function({abortSignal:t,commitment:r,getNonceInvalidationPromise:o,transaction:i}){return [o({abortSignal:t,commitment:r,currentNonceValue:i.lifetimeConstraint.nonce,nonceAccountAddress:i.instructions[0].accounts[0].address})]});}async function Fo(e){await ne(Ue(e.transaction),e,function({abortSignal:t,getBlockHeightExceedencePromise:r,transaction:o}){return [r({abortSignal:t,lastValidBlockHeight:o.lifetimeConstraint.lastValidBlockHeight})]});}function Uo(e,n){return !n?.preflightCommitment&&me(e,"finalized")<0?{...n,preflightCommitment:e}:n}async function zt({abortSignal:e,commitment:n,rpc:t,transaction:r,...o}){let i=ot(r);return await t.sendTransaction(i,{...Uo(n,o),encoding:"base64"}).send({abortSignal:e})}function qa({rpc:e,rpcSubscriptions:n}){let t=Rt({rpc:e,rpcSubscriptions:n});return async function(o,i){await $o({...i,confirmDurableNonceTransaction:t,rpc:e,transaction:o});}}function Ya({rpc:e,rpcSubscriptions:n}){let t=vt({rpc:e,rpcSubscriptions:n});return async function(o,i){await Wo({...i,confirmRecentTransaction:t,rpc:e,transaction:o});}}async function $o({abortSignal:e,commitment:n,confirmDurableNonceTransaction:t,rpc:r,transaction:o,...i}){let s=await zt({...i,abortSignal:e,commitment:n,rpc:r,transaction:o});return await t({abortSignal:e,commitment:n,transaction:o}),s}async function Wo({abortSignal:e,commitment:n,confirmRecentTransaction:t,rpc:r,transaction:o,...i}){let s=await zt({...i,abortSignal:e,commitment:n,rpc:r,transaction:o});return await t({abortSignal:e,commitment:n,transaction:o}),s}
|
|
10
10
|
|
|
11
|
-
exports.AccountRole =
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
29
|
-
exports.
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
32
|
-
exports.
|
|
33
|
-
exports.
|
|
34
|
-
exports.
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
37
|
-
exports.
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
11
|
+
exports.AccountRole = ar;
|
|
12
|
+
exports.address = Zt;
|
|
13
|
+
exports.appendTransactionInstruction = xr;
|
|
14
|
+
exports.assertIsAddress = X;
|
|
15
|
+
exports.assertIsBlockhash = Zi;
|
|
16
|
+
exports.assertIsDurableNonceTransaction = Qi;
|
|
17
|
+
exports.assertIsLamports = dr;
|
|
18
|
+
exports.assertIsProgramDerivedAddress = ii;
|
|
19
|
+
exports.assertIsSignature = cr;
|
|
20
|
+
exports.assertIsStringifiedBigInt = ur;
|
|
21
|
+
exports.assertIsStringifiedNumber = lr;
|
|
22
|
+
exports.assertIsUnixTimestamp = fr;
|
|
23
|
+
exports.assertTransactionIsFullySigned = co;
|
|
24
|
+
exports.commitmentComparator = me;
|
|
25
|
+
exports.createAddressWithSeed = ai;
|
|
26
|
+
exports.createBlockHeightExceedencePromiseFactory = It;
|
|
27
|
+
exports.createDefaultAirdropRequester = ws;
|
|
28
|
+
exports.createDefaultDurableNonceTransactionConfirmer = Rt;
|
|
29
|
+
exports.createDefaultDurableNonceTransactionSender = qa;
|
|
30
|
+
exports.createDefaultRecentTransactionConfirmer = vt;
|
|
31
|
+
exports.createDefaultRpcSubscriptionsTransport = wa;
|
|
32
|
+
exports.createDefaultRpcTransport = ca;
|
|
33
|
+
exports.createDefaultTransactionSender = Ya;
|
|
34
|
+
exports.createNonceInvalidationPromiseFactory = Ct;
|
|
35
|
+
exports.createRecentSignatureConfirmationPromiseFactory = te;
|
|
36
|
+
exports.createSolanaRpc = Ys;
|
|
37
|
+
exports.createSolanaRpcSubscriptions = Js;
|
|
38
|
+
exports.createSolanaRpcSubscriptions_UNSTABLE = Xs;
|
|
39
|
+
exports.createTransaction = Sr;
|
|
40
|
+
exports.downgradeRoleToNonSigner = li;
|
|
41
|
+
exports.downgradeRoleToReadonly = fi;
|
|
42
|
+
exports.generateKeyPair = Ti;
|
|
43
|
+
exports.getAddressCodec = hn;
|
|
44
|
+
exports.getAddressComparator = pe;
|
|
45
|
+
exports.getAddressDecoder = Z;
|
|
46
|
+
exports.getAddressEncoder = fe;
|
|
47
|
+
exports.getAddressFromPublicKey = wn;
|
|
48
|
+
exports.getBase64EncodedWireTransaction = ot;
|
|
49
|
+
exports.getProgramDerivedAddress = si;
|
|
50
|
+
exports.getSignatureFromTransaction = Ue;
|
|
51
|
+
exports.getTransactionCodec = ns;
|
|
52
|
+
exports.getTransactionDecoder = so;
|
|
53
|
+
exports.getTransactionEncoder = rt;
|
|
54
|
+
exports.isAddress = Xt;
|
|
55
|
+
exports.isAdvanceNonceAccountInstruction = Fe;
|
|
56
|
+
exports.isLamports = vi;
|
|
57
|
+
exports.isProgramDerivedAddress = oi;
|
|
58
|
+
exports.isSignature = Ei;
|
|
59
|
+
exports.isSignerRole = pi;
|
|
60
|
+
exports.isStringifiedBigInt = Di;
|
|
61
|
+
exports.isStringifiedNumber = ki;
|
|
62
|
+
exports.isUnixTimestamp = Pi;
|
|
63
|
+
exports.isWritableRole = mi;
|
|
64
|
+
exports.lamports = zi;
|
|
65
|
+
exports.mergeRoles = gi;
|
|
66
|
+
exports.partiallySignTransaction = ao;
|
|
67
|
+
exports.prependTransactionInstruction = es;
|
|
68
|
+
exports.requestAndConfirmAirdrop = lo;
|
|
69
|
+
exports.sendAndConfirmDurableNonceTransaction = $o;
|
|
70
|
+
exports.sendAndConfirmTransaction = Wo;
|
|
71
|
+
exports.setTransactionFeePayer = Er;
|
|
72
|
+
exports.setTransactionLifetimeUsingBlockhash = hr;
|
|
73
|
+
exports.setTransactionLifetimeUsingDurableNonce = Tr;
|
|
74
|
+
exports.signBytes = Tn;
|
|
75
|
+
exports.signTransaction = ts;
|
|
76
|
+
exports.signature = xi;
|
|
77
|
+
exports.stringifiedBigInt = Ni;
|
|
78
|
+
exports.stringifiedNumber = Bi;
|
|
79
|
+
exports.unixTimestamp = _i;
|
|
80
|
+
exports.upgradeRoleToSigner = bi;
|
|
81
|
+
exports.upgradeRoleToWritable = hi;
|
|
82
|
+
exports.verifySignature = Ii;
|
|
83
|
+
exports.waitForDurableNonceTransactionConfirmation = Oo;
|
|
84
|
+
exports.waitForRecentTransactionConfirmation = Fo;
|
|
40
85
|
|
|
41
86
|
return exports;
|
|
42
87
|
|