import { ethers } from 'ethers'; import { Domain } from './domains'; declare type Provider = ethers.providers.Provider; /** * The MultiProvider manages a collection of [Domains]{@link Domain} and allows * developers to enroll ethers Providers and Signers for each domain. It is * intended to enable faster multi-chain development by grouping all chain * connections under a single roof. * * @example * import {mainnet} from 'optics-provider'; * mainnet.registerRpcProvider('celo', 'https://forno.celo.org'); * mainnet.registerRpcProvider('polygon', '...'); * mainnet.registerRpcProvider('ethereum', '...'); * mainnet.registerSigner('celo', celoProvider); * mainnet.registerSigner('polygon', polygonProvider); * mainnet.registerSigner('ethereum', ethereumProvider); */ export declare class MultiProvider { private domains; private providers; private signers; constructor(); /** * Resgister a domain with the MultiProvider. This allows the multiprovider * to resolves tha domain info, and reference it by name or number. * * @param domain The Domain object to register. */ registerDomain(domain: Domain): void; get domainNumbers(): number[]; get missingProviders(): number[]; /** * Resolve a domain name (or number) to the canonical number. * * This function is used extensively to disambiguate domains, and allows * devs to reference domains using their preferred nomenclature. * * @param nameOrDomain A domain name or number. * @returns The canonical domain number. */ resolveDomain(nameOrDomain: string | number): number; /** * Check whether the {@link MultiProvider} is aware of a domain. * * @param nameOrDomain A domain name or number. * @returns true if the {@link Domain} has been registered, else false. */ knownDomain(nameOrDomain: string | number): boolean; /** * Get the registered {@link Domain} object (if any) * * @param nameOrDomain A domain name or number. * @returns A {@link Domain} (if the domain has been registered) */ getDomain(nameOrDomain: number | string): Domain | undefined; /** * Get the registered {@link Domain} object (or error) * * @param nameOrDomain A domain name or number. * @returns A {@link Domain} * @throws if the domain has not been registered */ mustGetDomain(nameOrDomain: number | string): Domain; /** * Resolve the name of a registered {@link Domain}, from its name or number. * * Similar to `resolveDomain`. * * @param nameOrDomain A domain name or number. * @returns The name (or undefined) */ resolveDomainName(nameOrDomain: string | number): string | undefined; /** * Register an ethers Provider for a specified domain. * * @param nameOrDomain A domain name or number. * @param provider An ethers Provider to be used by requests to that domain. */ registerProvider(nameOrDomain: string | number, provider: Provider): void; /** * Shortcut to register a provider by its HTTP RPC URL. * * @param nameOrDomain A domain name or number. * @param rpc The HTTP RPC Url */ registerRpcProvider(nameOrDomain: string | number, rpc: string): void; /** * Get the Provider associated with a doman (if any) * * @param nameOrDomain A domain name or number. * @returns The currently registered Provider (or none) */ getProvider(nameOrDomain: string | number): Provider | undefined; /** * Get the Provider associated with a doman (or error) * * @param nameOrDomain A domain name or number. * @returns A Provider * @throws If no provider has been registered for the specified domain */ mustGetProvider(nameOrDomain: string | number): Provider; /** * Register an ethers Signer for a specified domain. * * @param nameOrDomain A domain name or number. * @param signer An ethers Signer to be used by requests to that domain. */ registerSigner(nameOrDomain: string | number, signer: ethers.Signer): void; /** * Remove the registered ethers Signer from a domain. This function will * attempt to preserve any Provider that was previously connected to this * domain. * * @param nameOrDomain A domain name or number. */ unregisterSigner(nameOrDomain: string | number): void; /** * Clear all signers from all registered domains. */ clearSigners(): void; /** * A shortcut for registering a basic local privkey signer on a domain. * * @param nameOrDomain A domain name or number. * @param privkey A private key string passed to `ethers.Wallet` */ registerWalletSigner(nameOrDomain: string | number, privkey: string): void; /** * Return the signer registered to a domain (if any). * * @param nameOrDomain A domain name or number. * @returns The registered signer (or undefined) */ getSigner(nameOrDomain: string | number): ethers.Signer | undefined; /** * Returns the most priveleged connection registered to a domain. E.g. * this function will attempt to return a Signer, then attempt to return the * Provider (if no Signer is registered). If neither Signer nor Provider is * registered for a domain, it will return undefined * * @param nameOrDomain A domain name or number. * @returns A Signer (if any), otherwise a Provider (if any), otherwise * undefined */ getConnection(nameOrDomain: string | number): ethers.Signer | ethers.providers.Provider | undefined; /** * Resolves the address of a Signer on a domain (or undefined, if no Signer) * * @param nameOrDomain A domain name or number. * @returns A Promise for the address of the registered signer (if any) */ getAddress(nameOrDomain: string | number): Promise; } export {}; //# sourceMappingURL=provider.d.ts.map