PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/viem/experimental/erc7846/decorators

Просмотр файла: erc7846.ts

import type { Client } from '../../../clients/createClient.js'
import type { Transport } from '../../../clients/transports/createTransport.js'
import type { Chain } from '../../../types/chain.js'
import {
  type ConnectParameters,
  type ConnectReturnType,
  connect,
} from '../actions/connect.js'
import { disconnect } from '../actions/disconnect.js'

export type Erc7846Actions = {
  /**
   * Requests to connect to a wallet.
   *
   * - Docs: https://viem.sh/experimental/erc7846/connect
   * - JSON-RPC Methods: [`wallet_connect`](https://github.com/ethereum/ERCs/blob/abd1c9f4eda2d6ad06ade0e3af314637a27d1ee7/ERCS/erc-7846.md)
   *
   * @param client - Client to use
   * @param parameters - {@link ConnectParameters}
   * @returns List of accounts managed by a wallet {@link ConnectReturnType}
   *
   * @example
   * import { createWalletClient, custom } from 'viem'
   * import { mainnet } from 'viem/chains'
   * import { erc7846Actions } from 'viem/experimental/erc7846'
   *
   * const client = createWalletClient({
   *   chain: mainnet,
   *   transport: custom(window.ethereum),
   * }).extend(erc7846Actions())
   *
   * const response = await client.connect()
   */
  connect: (
    parameters?: ConnectParameters | undefined,
  ) => Promise<ConnectReturnType>
  /**
   * Requests to disconnect connected accounts.
   *
   * - Docs: https://viem.sh/experimental/erc7846/disconnect
   * - JSON-RPC Methods: [`wallet_disconnect`](https://github.com/ethereum/ERCs/blob/abd1c9f4eda2d6ad06ade0e3af314637a27d1ee7/ERCS/erc-7846.md)
   *
   * @param client - Client to use
   * @returns void
   *
   * @example
   * import { createWalletClient, custom } from 'viem'
   * import { mainnet } from 'viem/chains'
   * import { erc7846Actions } from 'viem/experimental/erc7846'
   *
   * const client = createWalletClient({
   *   chain: mainnet,
   *   transport: custom(window.ethereum),
   * }).extend(erc7846Actions())
   *
   * await client.disconnect()
   */
  disconnect: () => Promise<void>
}

/**
 * A suite of ERC-7846 Wallet Actions.
 *
 * @example
 * import { createPublicClient, createWalletClient, http } from 'viem'
 * import { mainnet } from 'viem/chains'
 * import { erc7846Actions } from 'viem/experimental/erc7846'
 *
 * const client = createWalletClient({
 *   chain: mainnet,
 *   transport: http(),
 * }).extend(erc7846Actions())
 *
 * const response = await client.connect()
 */
export function erc7846Actions() {
  return <
    transport extends Transport,
    chain extends Chain | undefined = Chain | undefined,
  >(
    client: Client<transport, chain>,
  ): Erc7846Actions => {
    return {
      connect: (parameters) => connect(client, parameters),
      disconnect: () => disconnect(client),
    }
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!