import type { Chain, ChainId } from '@rarimo/shared'; import type { Providers } from './enums'; import type { IProvider, ProviderEventCallback, ProviderInstance, ProviderListeners, ProviderProxyConstructor, TransactionRequestBody, TransactionResponse } from './types'; import { Web3 } from './web3'; export type CreateProviderOpts = { web3Instance?: Web3; listeners?: ProviderListeners; }; /** * @description Represents a browser-based wallet. * * To connect to a wallet, create an object to represent the wallet to access with the `createProvider()` method. These wallet objects implement the `Provider` interface so you can access different types of wallets in a consistent way. * * @example * ```js * import { createProvider } from '@rarimo/provider' * import { MetamaskProvider } from '@rarimo/providers-evm' * * const getMetamaskWalletAddress = async () => { * // Connect to the Metamask wallet in the browser, using the MetamaskProvider interface to limit bundle size. * const provider = await createProvider(MetamaskProvider) * * // Get the address of the wallet * console.log(provider.address) * } * ``` */ export declare class Provider implements IProvider { #private; constructor(proxyConstructor: ProviderProxyConstructor); get chainType(): import("@rarimo/shared").ChainTypes | undefined; get providerType(): Providers | undefined; get isConnected(): boolean; get address(): string | undefined; get chainId(): ChainId | undefined; init(provider: ProviderInstance, listeners?: ProviderListeners): Promise; connect(): Promise; switchChain(chainId: ChainId): Promise; addChain(chain: Chain): Promise; signAndSendTx(txRequestBody: TransactionRequestBody): Promise; getHashFromTx(txResponse: TransactionResponse): string; getTxUrl(chain: Chain, txHash: string): string; getAddressUrl(chain: Chain, address: string): string; signMessage(message: string): Promise; getWeb3Provider(): import("@ethersproject/providers").Web3Provider; onAccountChanged(cb: ProviderEventCallback): void; onChainChanged(cb: ProviderEventCallback): void; onConnect(cb: ProviderEventCallback): void; onDisconnect(cb: ProviderEventCallback): void; onInitiated(cb: ProviderEventCallback): void; clearHandlers(): void; } /** * @description Creates an instance of a wallet provider * * @example * const provider = await createProvider(MetamaskProvider) * // or * const web3Instance = await new Web3().init() * const metamaskProvider = await createProvider(MetamaskProvider, { web3Instance }) * const phantomProvider = await createProvider(PhantomProvider, { web3Instance }) */ export declare const createProvider: (proxy: ProviderProxyConstructor, opts?: CreateProviderOpts) => Promise;