viem 0.2.5 → 0.2.6
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/dist/abi.d.ts +3 -3
- package/dist/abi.js +2 -2
- package/dist/abi.mjs +1 -1
- package/dist/accounts/index.d.ts +4 -4
- package/dist/accounts/index.js +17 -17
- package/dist/accounts/index.mjs +2 -2
- package/dist/{chain-5507c6f0.d.ts → chain-892805a2.d.ts} +1 -1
- package/dist/{chain-fe47467d.d.ts → chain-d06e2a80.d.ts} +1 -1
- package/dist/chains.d.ts +3 -3
- package/dist/chains.js +89 -89
- package/dist/chains.mjs +1 -1
- package/dist/{chunk-2QM6UMZ2.mjs → chunk-AWZ7ROLD.mjs} +6 -7
- package/dist/chunk-AWZ7ROLD.mjs.map +1 -0
- package/dist/{chunk-QWBI757J.js → chunk-GEN2W3H2.js} +6 -7
- package/dist/chunk-GEN2W3H2.js.map +1 -0
- package/dist/{chunk-7MFQVE5P.js → chunk-IPKAMASI.js} +6 -6
- package/dist/{chunk-LLPICH7U.mjs → chunk-UOOOQDP7.mjs} +2 -2
- package/dist/contract.d.ts +9 -8
- package/dist/contract.js +2 -2
- package/dist/contract.mjs +1 -1
- package/dist/{createTransport-21a0d2b3.d.ts → createTransport-9692876d.d.ts} +2 -2
- package/dist/{eip1193-2f3a9cd2.d.ts → eip1193-16c1b134.d.ts} +1 -1
- package/dist/{encodeFunctionResult-c5185b98.d.ts → encodeFunctionResult-5b30ddf1.d.ts} +12 -8
- package/dist/{encodePacked-98f67d09.d.ts → encodePacked-0ac1e458.d.ts} +1 -1
- package/dist/ens.d.ts +5 -5
- package/dist/ens.js +2 -2
- package/dist/ens.mjs +1 -1
- package/dist/ethers.d.ts +2 -2
- package/dist/ethers.js +4 -4
- package/dist/ethers.mjs +2 -2
- package/dist/{formatAbiItem-56dff508.d.ts → formatAbiItem-c722de85.d.ts} +1 -1
- package/dist/{getAbiItem-bfba73d1.d.ts → getAbiItem-6223ab36.d.ts} +1 -1
- package/dist/{getEnsResolver-ce85735b.d.ts → getEnsResolver-af3ad3a8.d.ts} +4 -4
- package/dist/index.d.ts +17 -16
- package/dist/index.js +95 -95
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/{parseGwei-280a3ff7.d.ts → parseGwei-3bead650.d.ts} +5 -5
- package/dist/public.d.ts +5 -5
- package/dist/public.js +2 -2
- package/dist/public.mjs +1 -1
- package/dist/{publicKeyToAddress-623eb398.d.ts → publicKeyToAddress-2e49b7cb.d.ts} +2 -2
- package/dist/{test-b67569fe.d.ts → test-1cc18fdd.d.ts} +3 -3
- package/dist/test.d.ts +5 -5
- package/dist/test.js +2 -2
- package/dist/test.mjs +1 -1
- package/dist/{typedData-46b4d81f.d.ts → typedData-969116ac.d.ts} +2 -2
- package/dist/utils/index.d.ts +16 -15
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.mjs +1 -1
- package/dist/wallet.d.ts +5 -5
- package/dist/wallet.js +2 -2
- package/dist/wallet.mjs +1 -1
- package/dist/window.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-2QM6UMZ2.mjs.map +0 -1
- package/dist/chunk-QWBI757J.js.map +0 -1
- /package/dist/{chunk-7MFQVE5P.js.map → chunk-IPKAMASI.js.map} +0 -0
- /package/dist/{chunk-LLPICH7U.mjs.map → chunk-UOOOQDP7.mjs.map} +0 -0
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":["transport","transports_","sample","size"],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\nimport type { ClientConfig } from '../createClient'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n pollingInterval?: ClientConfig['pollingInterval']\n retryCount?: TransportConfig['retryCount']\n timeout?: TransportConfig['timeout']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import type { Chain } from '../../types'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport { wait } from '../../utils/wait'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype RankOptions = {\n /**\n * The polling interval (in ms) at which the ranker should ping the RPC URL.\n * @default client.pollingInterval\n */\n interval?: number\n /**\n * The number of previous samples to perform ranking on.\n * @default 10\n */\n sampleCount?: number\n /**\n * Timeout when sampling transports.\n * @default 1_000\n */\n timeout?: number\n /**\n * Weights to apply to the scores. Weight values are proportional.\n */\n weights?: {\n /**\n * The weight to apply to the latency score.\n * @default 0.3\n */\n latency?: number\n /**\n * The weight to apply to the stability score.\n * @default 0.7\n */\n stability?: number\n }\n}\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** Toggle to enable ranking, or rank options. */\n rank?: boolean | RankOptions\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports_: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const {\n key = 'fallback',\n name = 'Fallback',\n rank = true,\n retryCount,\n retryDelay,\n } = config\n return ({ chain, pollingInterval = 4_000, timeout }) => {\n let transports = transports_\n\n const transport = createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0, timeout })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {}) as RankOptions\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n })\n }\n return transport\n }\n}\n\nexport function rankTransports({\n chain,\n interval = 4_000,\n onTransports,\n sampleCount = 10,\n timeout = 1_000,\n transports,\n weights = {},\n}: {\n chain?: Chain\n interval: RankOptions['interval']\n onTransports: (transports: Transport[]) => void\n sampleCount?: RankOptions['sampleCount']\n timeout?: RankOptions['timeout']\n transports: Transport[]\n weights?: RankOptions['weights']\n}) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } =\n weights\n\n type SampleData = { latency: number; success: number }\n type Sample = SampleData[]\n const samples: Sample[] = []\n\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample: Sample = await Promise.all(\n transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout })\n\n const start = Date.now()\n let end\n let success\n try {\n await transport_.request({ method: 'net_listening' })\n success = 1\n } catch {\n success = 0\n } finally {\n end = Date.now()\n }\n const latency = end - start\n return { latency, success }\n }),\n )\n\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample)\n if (samples.length > sampleCount) samples.shift()\n\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(\n ...samples.map((sample) =>\n Math.max(...sample.map(({ latency }) => latency)),\n ),\n )\n\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency)\n const meanLatency =\n latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length\n const latencyScore = 1 - meanLatency / maxLatency\n\n const successes = samples.map((sample) => sample[i].success)\n const stabilityScore =\n successes.reduce((acc, success) => acc + success, 0) /\n successes.length\n\n if (stabilityScore === 0) return [0, i]\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ]\n })\n .sort((a, b) => b[0] - a[0])\n\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]))\n\n // 6. Wait, and then rank again.\n await wait(interval)\n rankTransports_()\n }\n rankTransports_()\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain, pollingInterval })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from '../../actions/ens'\nimport {\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n} from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractFunctionConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractFunctionConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: () => transport({ retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":["transport","transports_","sample","size"],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\nimport type { ClientConfig } from '../createClient'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n pollingInterval?: ClientConfig['pollingInterval']\n retryCount?: TransportConfig['retryCount']\n timeout?: TransportConfig['timeout']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import type { Chain } from '../../types'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport { wait } from '../../utils/wait'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype RankOptions = {\n /**\n * The polling interval (in ms) at which the ranker should ping the RPC URL.\n * @default client.pollingInterval\n */\n interval?: number\n /**\n * The number of previous samples to perform ranking on.\n * @default 10\n */\n sampleCount?: number\n /**\n * Timeout when sampling transports.\n * @default 1_000\n */\n timeout?: number\n /**\n * Weights to apply to the scores. Weight values are proportional.\n */\n weights?: {\n /**\n * The weight to apply to the latency score.\n * @default 0.3\n */\n latency?: number\n /**\n * The weight to apply to the stability score.\n * @default 0.7\n */\n stability?: number\n }\n}\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** Toggle to enable ranking, or rank options. */\n rank?: boolean | RankOptions\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports_: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const {\n key = 'fallback',\n name = 'Fallback',\n rank = true,\n retryCount,\n retryDelay,\n } = config\n return ({ chain, pollingInterval = 4_000, timeout }) => {\n let transports = transports_\n\n const transport = createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0, timeout })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {}) as RankOptions\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n })\n }\n return transport\n }\n}\n\nexport function rankTransports({\n chain,\n interval = 4_000,\n onTransports,\n sampleCount = 10,\n timeout = 1_000,\n transports,\n weights = {},\n}: {\n chain?: Chain\n interval: RankOptions['interval']\n onTransports: (transports: Transport[]) => void\n sampleCount?: RankOptions['sampleCount']\n timeout?: RankOptions['timeout']\n transports: Transport[]\n weights?: RankOptions['weights']\n}) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } =\n weights\n\n type SampleData = { latency: number; success: number }\n type Sample = SampleData[]\n const samples: Sample[] = []\n\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample: Sample = await Promise.all(\n transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout })\n\n const start = Date.now()\n let end\n let success\n try {\n await transport_.request({ method: 'net_listening' })\n success = 1\n } catch {\n success = 0\n } finally {\n end = Date.now()\n }\n const latency = end - start\n return { latency, success }\n }),\n )\n\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample)\n if (samples.length > sampleCount) samples.shift()\n\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(\n ...samples.map((sample) =>\n Math.max(...sample.map(({ latency }) => latency)),\n ),\n )\n\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency)\n const meanLatency =\n latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length\n const latencyScore = 1 - meanLatency / maxLatency\n\n const successes = samples.map((sample) => sample[i].success)\n const stabilityScore =\n successes.reduce((acc, success) => acc + success, 0) /\n successes.length\n\n if (stabilityScore === 0) return [0, i]\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ]\n })\n .sort((a, b) => b[0] - a[0])\n\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]))\n\n // 6. Wait, and then rank again.\n await wait(interval)\n rankTransports_()\n }\n rankTransports_()\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain, pollingInterval })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from '../../actions/ens'\nimport {\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n} from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractFunctionConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractFunctionConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: (opts) => transport({ ...opts, retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
@@ -265,7 +265,7 @@ import {
|
|
265
265
|
watchPendingTransactions,
|
266
266
|
weiUnits,
|
267
267
|
writeContract
|
268
|
-
} from "./chunk-
|
268
|
+
} from "./chunk-AWZ7ROLD.mjs";
|
269
269
|
|
270
270
|
// src/clients/transports/createTransport.ts
|
271
271
|
function createTransport({
|
@@ -721,7 +721,7 @@ function createWalletClient({
|
|
721
721
|
key,
|
722
722
|
name,
|
723
723
|
pollingInterval,
|
724
|
-
transport: () => transport({ retryCount: 0 }),
|
724
|
+
transport: (opts) => transport({ ...opts, retryCount: 0 }),
|
725
725
|
type: "walletClient"
|
726
726
|
}),
|
727
727
|
account: account ? parseAccount(account) : void 0
|
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\nimport type { ClientConfig } from '../createClient'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n pollingInterval?: ClientConfig['pollingInterval']\n retryCount?: TransportConfig['retryCount']\n timeout?: TransportConfig['timeout']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import type { Chain } from '../../types'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport { wait } from '../../utils/wait'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype RankOptions = {\n /**\n * The polling interval (in ms) at which the ranker should ping the RPC URL.\n * @default client.pollingInterval\n */\n interval?: number\n /**\n * The number of previous samples to perform ranking on.\n * @default 10\n */\n sampleCount?: number\n /**\n * Timeout when sampling transports.\n * @default 1_000\n */\n timeout?: number\n /**\n * Weights to apply to the scores. Weight values are proportional.\n */\n weights?: {\n /**\n * The weight to apply to the latency score.\n * @default 0.3\n */\n latency?: number\n /**\n * The weight to apply to the stability score.\n * @default 0.7\n */\n stability?: number\n }\n}\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** Toggle to enable ranking, or rank options. */\n rank?: boolean | RankOptions\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports_: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const {\n key = 'fallback',\n name = 'Fallback',\n rank = true,\n retryCount,\n retryDelay,\n } = config\n return ({ chain, pollingInterval = 4_000, timeout }) => {\n let transports = transports_\n\n const transport = createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0, timeout })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {}) as RankOptions\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n })\n }\n return transport\n }\n}\n\nexport function rankTransports({\n chain,\n interval = 4_000,\n onTransports,\n sampleCount = 10,\n timeout = 1_000,\n transports,\n weights = {},\n}: {\n chain?: Chain\n interval: RankOptions['interval']\n onTransports: (transports: Transport[]) => void\n sampleCount?: RankOptions['sampleCount']\n timeout?: RankOptions['timeout']\n transports: Transport[]\n weights?: RankOptions['weights']\n}) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } =\n weights\n\n type SampleData = { latency: number; success: number }\n type Sample = SampleData[]\n const samples: Sample[] = []\n\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample: Sample = await Promise.all(\n transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout })\n\n const start = Date.now()\n let end\n let success\n try {\n await transport_.request({ method: 'net_listening' })\n success = 1\n } catch {\n success = 0\n } finally {\n end = Date.now()\n }\n const latency = end - start\n return { latency, success }\n }),\n )\n\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample)\n if (samples.length > sampleCount) samples.shift()\n\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(\n ...samples.map((sample) =>\n Math.max(...sample.map(({ latency }) => latency)),\n ),\n )\n\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency)\n const meanLatency =\n latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length\n const latencyScore = 1 - meanLatency / maxLatency\n\n const successes = samples.map((sample) => sample[i].success)\n const stabilityScore =\n successes.reduce((acc, success) => acc + success, 0) /\n successes.length\n\n if (stabilityScore === 0) return [0, i]\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ]\n })\n .sort((a, b) => b[0] - a[0])\n\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]))\n\n // 6. Wait, and then rank again.\n await wait(interval)\n rankTransports_()\n }\n rankTransports_()\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain, pollingInterval })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from '../../actions/ens'\nimport {\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n} from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractFunctionConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractFunctionConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: () => transport({ retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"],"mappings":"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","names":["transport","transports_","sample","size"]}
|
1
|
+
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\nimport type { ClientConfig } from '../createClient'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n pollingInterval?: ClientConfig['pollingInterval']\n retryCount?: TransportConfig['retryCount']\n timeout?: TransportConfig['timeout']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import type { Chain } from '../../types'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport { wait } from '../../utils/wait'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype RankOptions = {\n /**\n * The polling interval (in ms) at which the ranker should ping the RPC URL.\n * @default client.pollingInterval\n */\n interval?: number\n /**\n * The number of previous samples to perform ranking on.\n * @default 10\n */\n sampleCount?: number\n /**\n * Timeout when sampling transports.\n * @default 1_000\n */\n timeout?: number\n /**\n * Weights to apply to the scores. Weight values are proportional.\n */\n weights?: {\n /**\n * The weight to apply to the latency score.\n * @default 0.3\n */\n latency?: number\n /**\n * The weight to apply to the stability score.\n * @default 0.7\n */\n stability?: number\n }\n}\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** Toggle to enable ranking, or rank options. */\n rank?: boolean | RankOptions\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports_: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const {\n key = 'fallback',\n name = 'Fallback',\n rank = true,\n retryCount,\n retryDelay,\n } = config\n return ({ chain, pollingInterval = 4_000, timeout }) => {\n let transports = transports_\n\n const transport = createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0, timeout })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {}) as RankOptions\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n })\n }\n return transport\n }\n}\n\nexport function rankTransports({\n chain,\n interval = 4_000,\n onTransports,\n sampleCount = 10,\n timeout = 1_000,\n transports,\n weights = {},\n}: {\n chain?: Chain\n interval: RankOptions['interval']\n onTransports: (transports: Transport[]) => void\n sampleCount?: RankOptions['sampleCount']\n timeout?: RankOptions['timeout']\n transports: Transport[]\n weights?: RankOptions['weights']\n}) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } =\n weights\n\n type SampleData = { latency: number; success: number }\n type Sample = SampleData[]\n const samples: Sample[] = []\n\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample: Sample = await Promise.all(\n transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout })\n\n const start = Date.now()\n let end\n let success\n try {\n await transport_.request({ method: 'net_listening' })\n success = 1\n } catch {\n success = 0\n } finally {\n end = Date.now()\n }\n const latency = end - start\n return { latency, success }\n }),\n )\n\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample)\n if (samples.length > sampleCount) samples.shift()\n\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(\n ...samples.map((sample) =>\n Math.max(...sample.map(({ latency }) => latency)),\n ),\n )\n\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency)\n const meanLatency =\n latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length\n const latencyScore = 1 - meanLatency / maxLatency\n\n const successes = samples.map((sample) => sample[i].success)\n const stabilityScore =\n successes.reduce((acc, success) => acc + success, 0) /\n successes.length\n\n if (stabilityScore === 0) return [0, i]\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ]\n })\n .sort((a, b) => b[0] - a[0])\n\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]))\n\n // 6. Wait, and then rank again.\n await wait(interval)\n rankTransports_()\n }\n rankTransports_()\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain, pollingInterval })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from '../../actions/ens'\nimport {\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n} from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractFunctionConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractFunctionConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: (opts) => transport({ ...opts, retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,SAAS,gBAId;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EACA;AACF,GACA,OAC8C;AAC9C,SAAO;AAAA,IACL,QAAQ,EAAE,KAAK,MAAM,SAAS,YAAY,YAAY,SAAS,KAAK;AAAA,IACpE,SAAS,aAAa,SAAS,EAAE,YAAY,WAAW,CAAC;AAAA,IACzD;AAAA,EACF;AACF;;;AC5CO,SAAS,OACd,UACA,SAAgC,CAAC,GAChB;AACjB,QAAM,EAAE,MAAM,UAAU,OAAO,mBAAmB,WAAW,IAAI;AACjE,SAAO,CAAC,EAAE,YAAY,kBAAkB,MACtC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAAS,SAAS,QAAQ,KAAK,QAAQ;AAAA,IACvC,YAAY,OAAO,cAAc;AAAA,IACjC;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACL;;;ACkBO,SAAS,SACd,aACA,SAAkC,CAAC,GAChB;AACnB,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SAAO,CAAC,EAAE,OAAO,kBAAkB,KAAO,QAAQ,MAAM;AACtD,QAAI,aAAa;AAEjB,UAAM,YAAY;AAAA,MAChB;AAAA,QACE;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAChC,gBAAM,QAAQ,OAAO,IAAY,MAAoB;AACnD,kBAAMA,aAAY,WAAW,CAAC,EAAE,EAAE,OAAO,YAAY,GAAG,QAAQ,CAAC;AACjE,gBAAI;AACF,qBAAO,MAAMA,WAAU,QAAQ;AAAA,gBAC7B;AAAA,gBACA;AAAA,cACF,CAAQ;AAAA,YACV,SAAS,KAAP;AAGA,kBAAI,qBAAqB,GAAY;AAAG,sBAAM;AAG9C,kBAAI,MAAM,WAAW,SAAS;AAAG,sBAAM;AAGvC,qBAAO,MAAM,IAAI,CAAC;AAAA,YACpB;AAAA,UACF;AACA,iBAAO,MAAM;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,YAAY,WAAW;AAAA,UACrB,CAAC,OAAO,GAAG,EAAE,OAAO,YAAY,EAAE,CAAC;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM;AACR,YAAM,cAAe,OAAO,SAAS,WAAW,OAAO,CAAC;AACxD,qBAAe;AAAA,QACb;AAAA,QACA,UAAU,YAAY,YAAY;AAAA,QAClC,cAAc,CAACC,iBAAiB,aAAaA;AAAA,QAC7C,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB;AAAA,QACA,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA,UAAU,CAAC;AACb,GAQG;AACD,QAAM,EAAE,WAAW,kBAAkB,KAAK,SAAS,gBAAgB,IAAI,IACrE;AAIF,QAAM,UAAoB,CAAC;AAE3B,QAAM,kBAAkB,YAAY;AAElC,UAAM,SAAiB,MAAM,QAAQ;AAAA,MACnC,WAAW,IAAI,OAAO,cAAc;AAClC,cAAM,aAAa,UAAU,EAAE,OAAO,YAAY,GAAG,QAAQ,CAAC;AAE9D,cAAM,QAAQ,KAAK,IAAI;AACvB,YAAI;AACJ,YAAI;AACJ,YAAI;AACF,gBAAM,WAAW,QAAQ,EAAE,QAAQ,gBAAgB,CAAC;AACpD,oBAAU;AAAA,QACZ,QAAE;AACA,oBAAU;AAAA,QACZ,UAAE;AACA,gBAAM,KAAK,IAAI;AAAA,QACjB;AACA,cAAM,UAAU,MAAM;AACtB,eAAO,EAAE,SAAS,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH;AAIA,YAAQ,KAAK,MAAM;AACnB,QAAI,QAAQ,SAAS;AAAa,cAAQ,MAAM;AAGhD,UAAM,aAAa,KAAK;AAAA,MACtB,GAAG,QAAQ;AAAA,QAAI,CAACC,YACd,KAAK,IAAI,GAAGA,QAAO,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO,CAAC;AAAA,MAClD;AAAA,IACF;AAGA,UAAM,SAAS,WACZ,IAAI,CAAC,GAAG,MAAM;AACb,YAAM,YAAY,QAAQ,IAAI,CAACA,YAAWA,QAAO,CAAC,EAAE,OAAO;AAC3D,YAAM,cACJ,UAAU,OAAO,CAAC,KAAK,YAAY,MAAM,SAAS,CAAC,IACnD,UAAU;AACZ,YAAM,eAAe,IAAI,cAAc;AAEvC,YAAM,YAAY,QAAQ,IAAI,CAACA,YAAWA,QAAO,CAAC,EAAE,OAAO;AAC3D,YAAM,iBACJ,UAAU,OAAO,CAAC,KAAK,YAAY,MAAM,SAAS,CAAC,IACnD,UAAU;AAEZ,UAAI,mBAAmB;AAAG,eAAO,CAAC,GAAG,CAAC;AACtC,aAAO;AAAA,QACL,gBAAgB,eAAe,kBAAkB;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC,EACA,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAG7B,iBAAa,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;AAGjD,UAAM,KAAK,QAAQ;AACnB,oBAAgB;AAAA,EAClB;AACA,kBAAgB;AAClB;;;AClLO,SAAS,KAEd,KACA,SAA8B,CAAC,GAChB;AACf,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,EACF,IAAI;AACJ,SAAO,CAAC,EAAE,OAAO,YAAY,aAAa,SAAS,SAAS,MAAM;AAChE,UAAM,aAAa,OAAO,cAAc;AACxC,UAAM,UAAU,YAAY,OAAO,WAAW;AAC9C,UAAM,OAAO,OAAO,OAAO,QAAQ,QAAQ,KAAK,CAAC;AACjD,QAAI,CAAC;AAAM,YAAM,IAAI,iBAAiB;AACtC,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAChC,gBAAM,EAAE,OAAO,IAAI,MAAM,IAAI,KAAK,MAAM;AAAA,YACtC,MAAM;AAAA,cACJ;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrBO,SAAS,UAEd,KACA,SAAmC,CAAC,GAChB;AACpB,QAAM,EAAE,MAAM,aAAa,OAAO,sBAAsB,WAAW,IAAI;AACvE,SAAO,CAAC,EAAE,OAAO,YAAY,aAAa,SAAS,SAAS,MAAM;AAChE,UAAM,aAAa,OAAO,cAAc;AACxC,UAAM,UAAU,YAAY,OAAO,WAAW;AAC9C,UAAM,OAAO,OAAO,OAAO,QAAQ,QAAQ,YAAY,CAAC;AACxD,QAAI,CAAC;AAAM,YAAM,IAAI,iBAAiB;AACtC,WAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAChC,gBAAM,SAAS,MAAM,UAAU,IAAI;AACnC,gBAAM,EAAE,OAAO,IAAI,MAAM,IAAI,eAAe,QAAQ;AAAA,YAClD,MAAM,EAAE,QAAQ,OAAO;AAAA,YACvB;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,YAAY;AACV,iBAAO,UAAU,IAAI;AAAA,QACvB;AAAA,QACA,MAAM,UAAU,EAAE,QAAQ,QAAQ,QAAQ,GAAQ;AAChD,gBAAM,SAAS,MAAM,UAAU,IAAI;AACnC,gBAAM,EAAE,QAAQ,eAAe,IAAI,MAAM,IAAI;AAAA,YAC3C,CAAC,SAAS,WACR,IAAI,UAAU,QAAQ;AAAA,cACpB,MAAM;AAAA,gBACJ,QAAQ;AAAA,gBACR;AAAA,cACF;AAAA,cACA,QAAQ,CAAC,SAAS;AAChB,oBAAI,OAAO,KAAK,OAAO,UAAU;AAC/B,0BAAQ,IAAI;AACZ;AAAA,gBACF;AACA,oBAAI,KAAK,WAAW;AAAoB;AACxC,uBAAO,KAAK,MAAM;AAAA,cACpB;AAAA,cACA,SAAS,CAAC,UAAU;AAClB,uBAAO,KAAK;AACZ,0BAAU,KAAK;AAAA,cACjB;AAAA,YACF,CAAC;AAAA,UACL;AACA,iBAAO;AAAA,YACL;AAAA,YACA,MAAM,cAAc;AAClB,qBAAO,IAAI;AAAA,gBAAa,CAAC,SAAS,WAChC,IAAI,UAAU,QAAQ;AAAA,kBACpB,MAAM;AAAA,oBACJ,QAAQ;AAAA,oBACR,QAAQ,CAAC,cAAc;AAAA,kBACzB;AAAA,kBACA,QAAQ;AAAA,kBACR,SAAS;AAAA,gBACX,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AChIA,IAAIC,QAAO;AACX,IAAI,QAAQA;AACZ,IAAI;AAEG,SAAS,IAAI,SAAS,IAAI;AAC/B,MAAI,CAAC,UAAU,QAAQ,SAASA,QAAO,GAAG;AACxC,aAAS;AACT,YAAQ;AACR,aAAS,IAAI,GAAG,IAAIA,OAAM,KAAK;AAC7B,iBAAY,MAAM,KAAK,OAAO,IAAI,MAAO,GAAG,SAAS,EAAE,EAAE,UAAU,CAAC;AAAA,IACtE;AAAA,EACF;AACA,SAAO,OAAO,UAAU,OAAO,UAAU,MAAM;AACjD;;;ACuCO,SAAS,aAId;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB;AAAA,EACA,OAAO;AACT,GAA4E;AAC1E,QAAM,EAAE,QAAQ,SAAS,MAAM,IAAI,UAAU,EAAE,OAAO,gBAAgB,CAAC;AACvE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,EAAE,GAAG,QAAQ,GAAG,MAAM;AAAA,IACjC;AAAA,IACA,KAAK,IAAI;AAAA,EACX;AACF;;;ACqMO,IAAM,gBAAgB,CAI3B,YACuC;AAAA,EACvC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI;AAAA,EACjC,mBAAmB,MAAM,kBAAkB,MAAM;AAAA,EACjD,2BAA2B,CAAC,SAAS,0BAA0B,QAAQ,IAAI;AAAA,EAC3E,mBAAmB,CAAC,SAAS,kBAAkB,QAAQ,IAAI;AAAA,EAC3D,gCAAgC,MAAM,+BAA+B,MAAM;AAAA,EAC3E,qBAAqB,CAAC,SAAS,oBAAoB,QAAQ,IAAI;AAAA,EAC/D,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,EAC/C,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,EAC7C,UAAU,CAAC,SAAS,SAAS,QAAQ,IAAI;AAAA,EACzC,gBAAgB,CAAC,SAAS,eAAe,QAAQ,IAAI;AAAA,EACrD,0BAA0B,CAAC,SAAS,yBAAyB,QAAQ,IAAI;AAAA,EACzE,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,EAC/C,YAAY,MAAM,WAAW,MAAM;AAAA,EACnC,eAAe,CAAC,SAAS,cAAc,QAAQ,IAAI;AAAA,EACnD,cAAc,CAAC,SAAS,aAAa,QAAQ,IAAI;AAAA,EACjD,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,EAC7C,gBAAgB,CAAC,SAAS,eAAe,QAAQ,IAAI;AAAA,EACrD,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,EAC7C,eAAe,CAAC,SAAS,cAAc,QAAQ,IAAI;AAAA,EACnD,kBAAkB,CAAC,SAAS,iBAAiB,QAAQ,IAAI;AAAA,EACzD,eAAe,CAAC,SAAS,cAAc,QAAQ,IAAI;AAAA,EACnD,aAAa,MAAM,YAAY,MAAM;AAAA,EACrC,SAAS,CAAC,SAAS,QAAQ,QAAQ,IAAI;AAAA,EACvC,cAAc,CAAC,SAAS,aAAa,QAAQ,IAAI;AAAA,EACjD,gBAAgB,CAAC,SAAS,eAAe,QAAQ,IAAI;AAAA,EACrD,6BAA6B,CAAC,SAC5B,4BAA4B,QAAQ,IAAI;AAAA,EAC1C,qBAAqB,CAAC,SAAS,oBAAoB,QAAQ,IAAI;AAAA,EAC/D,uBAAuB,CAAC,SAAS,sBAAsB,QAAQ,IAAI;AAAA,EACnE,WAAW,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,EAC3C,cAAc,CAAC,SAAS,aAAa,QAAQ,IAAI;AAAA,EACjD,kBAAkB,CAAC,SAAS,iBAAiB,QAAQ,IAAI;AAAA,EACzD,iBAAiB,CAAC,SAAS,gBAAgB,QAAQ,IAAI;AAAA,EACvD,2BAA2B,CAAC,SAAS,0BAA0B,QAAQ,IAAI;AAAA,EAC3E,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,EAC/C,kBAAkB,CAAC,SAAS,iBAAiB,QAAQ,IAAI;AAAA,EACzD,oBAAoB,CAAC,SAAS,mBAAmB,QAAQ,IAAI;AAAA,EAC7D,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,EAC7C,0BAA0B,CAAC,SAAS,yBAAyB,QAAQ,IAAI;AAC3E;;;ACxNO,SAAS,YACd,QACa;AACb,SAAO;AAAA,IACL,iBAAiB,CAAC,SAAS,gBAAgB,QAAQ,IAAI;AAAA,IACvD,aAAa,MAAM,YAAY,MAAM;AAAA,IACrC,kBAAkB,MAAM,iBAAiB,MAAM;AAAA,IAC/C,iBAAiB,MAAM,gBAAgB,MAAM;AAAA,IAC7C,oBAAoB,CAAC,SAAS,mBAAmB,QAAQ,IAAI;AAAA,IAC7D,cAAc,CAAC,SAAS,aAAa,QAAQ,IAAI;AAAA,IACjD,eAAe,MAAM,cAAc,MAAM;AAAA,IACzC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI;AAAA,IACjC,8BAA8B,MAAM,6BAA6B,MAAM;AAAA,IACvE,OAAO,CAAC,SAAS,MAAM,QAAQ,IAAI;AAAA,IACnC,QAAQ,CAAC,SAAS,OAAO,QAAQ,IAAI;AAAA,IACrC,yBAAyB,CAAC,SAAS,wBAAwB,QAAQ,IAAI;AAAA,IACvE,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,IAC/C,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,IAC7C,kBAAkB,CAAC,SAAS,iBAAiB,QAAQ,IAAI;AAAA,IACzD,2BAA2B,CAAC,SAC1B,0BAA0B,QAAQ,IAAI;AAAA,IACxC,SAAS,CAAC,SAAS,QAAQ,QAAQ,IAAI;AAAA,IACvC,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,IAC/C,mBAAmB,CAAC,SAAS,kBAAkB,QAAQ,IAAI;AAAA,IAC3D,mBAAmB,CAAC,SAAS,kBAAkB,QAAQ,IAAI;AAAA,IAC3D,gBAAgB,CAAC,SAAS,eAAe,QAAQ,IAAI;AAAA,IACrD,2BAA2B,CAAC,SAC1B,0BAA0B,QAAQ,IAAI;AAAA,IACxC,uBAAuB,CAAC,SAAS,sBAAsB,QAAQ,IAAI;AAAA,IACnE,UAAU,CAAC,SAAS,SAAS,QAAQ,IAAI;AAAA,IACzC,WAAW,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,IAC3C,cAAc,CAAC,SAAS,aAAa,QAAQ,IAAI;AAAA,IACjD,UAAU,MAAM,SAAS,MAAM;AAAA,IAC/B,0BAA0B,CAAC,SAAS,yBAAyB,QAAQ,IAAI;AAAA,EAC3E;AACF;;;AC/CO,IAAM,gBAAgB,CAK3B,YACqC;AAAA,EACrC,UAAU,CAAC,SAAS,SAAS,QAAQ,IAAI;AAAA,EACzC,gBAAgB,CAAC,SAAS,eAAe,QAAQ,IAAI;AAAA,EACrD,cAAc,MAAM,aAAa,MAAM;AAAA,EACvC,YAAY,MAAM,WAAW,MAAM;AAAA,EACnC,gBAAgB,MAAM,eAAe,MAAM;AAAA,EAC3C,kBAAkB,MAAM,iBAAiB,MAAM;AAAA,EAC/C,oBAAoB,CAAC,SAAS,mBAAmB,QAAQ,IAAI;AAAA,EAC7D,iBAAiB,CAAC,SAAS,gBAAgB,QAAQ,IAAI;AAAA,EACvD,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,EAC/C,eAAe,CAAC,SAAS,cAAc,QAAQ,IAAI;AAAA,EACnD,aAAa,CAAC,SAAS,YAAY,QAAQ,IAAI;AAAA,EAC/C,YAAY,CAAC,SAAS,WAAW,QAAQ,IAAI;AAAA,EAC7C,eAAe,CAAC,SAAS,cAAc,QAAQ,IAAI;AACrD;;;AClFO,SAAS,mBAGd;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAIE;AACA,QAAM,SAAS,aAAa;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,cAAc,MAAM;AAAA,EACzB;AACF;;;ACnBO,SAAS,iBAId;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AACF,GAKE;AACA,QAAM,SAAS;AAAA,IACb,GAAG,aAAa;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,IACD;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,YAAY,MAAM;AAAA,EACvB;AACF;;;ACnBO,SAAS,mBAId;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AACF,GAOE;AACA,QAAM,SAAS;AAAA,IACb,GAAG,aAAa;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,CAAC,SAAS,UAAU,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;AAAA,MACzD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,SAAS,UAAU,aAAa,OAAO,IAAI;AAAA,EAC7C;AAOA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,cAAc,MAAM;AAAA,EACzB;AACF;","names":["transport","transports_","sample","size"]}
|