///
import React, { PropsWithChildren } from 'react';
import { Injected } from '@polkadot/extension-inject/types';
import { WalletAdapter } from '@solana/wallet-adapter-base';
import SolanaWallets from '@solana/wallet-adapter-wallets';
import { TorusCtorArgs, TorusParams } from '@toruslabs/torus-embed';
import { EIP1193Provider, CustomNetwork, Platform } from '@web3-onboard/common';
import * as _polkadot_api from '@polkadot/api';
import * as _solana_wallet_adapter_react from '@solana/wallet-adapter-react';
import * as _ethersproject_providers from '@ethersproject/providers';
type WalletOptions = {
accountAvatarPosition?: 'left' | 'right';
showAccountAvatar?: boolean;
showBalance?: boolean;
};
type WalletProps = {
options?: WalletOptions;
};
declare const Wallet: React.FC;
interface EVMProviderConfigs {
ledger?: {
customNetwork?: CustomNetwork;
filter?: Platform[];
};
trezor?: {
email: string;
appUrl: string;
customNetwork?: CustomNetwork;
filter?: Platform[];
};
walletconnect?: {
bridge?: string;
qrcodeModalOptions?: {
mobileLinks: string[];
};
connectFirstChainId?: boolean;
};
gnosis?: {
whitelistedDomains?: RegExp[];
};
fortmatic?: {
apiKey: string;
};
portis?: {
apiKey: string;
};
enkrypt?: boolean;
subwallet?: boolean;
talisman?: boolean;
mew?: boolean;
torus?: TorusCtorArgs & TorusParams;
}
interface PolkadotProviderConfigs {
enkrypt?: boolean;
polkadotJsExtension?: boolean;
subwallet?: boolean;
talisman?: boolean;
}
interface SolanaProviderConfigs {
walletconnect?: SolanaWallets.WalletConnectWalletAdapterConfig;
ledger?: SolanaWallets.LedgerWalletAdapterConfig;
solflare?: SolanaWallets.SolflareWalletAdapterConfig;
sollet?: SolanaWallets.SolletWalletAdapterConfig;
torus?: SolanaWallets.TorusWalletAdapterConfig;
blocto?: SolanaWallets.BloctoWalletAdapterConfig;
phantom?: SolanaWallets.PhantomWalletAdapterConfig;
backpack?: SolanaWallets.BackpackWalletAdapterConfig;
nightly?: {};
clover?: SolanaWallets.CloverWalletAdapterConfig;
coin98?: SolanaWallets.Coin98WalletAdapterConfig;
slope?: SolanaWallets.SlopeWalletAdapterConfig;
solong?: SolanaWallets.SolongWalletAdapterConfig;
exodus?: SolanaWallets.ExodusWalletAdapterConfig;
math?: SolanaWallets.MathWalletAdapterConfig;
}
interface ProviderConfigs {
evm?: EVMProviderConfigs;
polkadot?: PolkadotProviderConfigs;
solana?: SolanaProviderConfigs;
}
interface AtaWalletState {
label: string;
icon: string;
polkadotInjected?: Injected;
evmProvider?: EIP1193Provider;
solanaWalletAdapter?: WalletAdapter;
accounts: string[];
}
type NativeCurrency = {
name: string;
decimals: number;
symbol: string;
};
declare enum ChainType {
EVM = "evm",
Polkadot = "polkadot",
Solana = "solana"
}
interface Chain {
type: ChainType;
rpcUrls: string[];
blockExplorerUrls?: string[];
chainId: string;
chainName: string;
nativeCurrency?: NativeCurrency;
iconUrl?: string;
}
type Chains = Chain[];
interface WalletProviderProps {
appName?: string;
prefixCls?: string;
theme?: 'light' | 'dark';
providerConfigs: ProviderConfigs;
chains: Chains;
}
declare const WalletProvider: React.FC>;
/**
*
* @returns
*/
declare const useWallet: () => {
appName?: string | undefined;
account?: string | undefined;
chainId?: string | undefined;
chainName?: string | undefined;
chains: Chains;
walletState?: AtaWalletState | undefined;
ethersProvider?: _ethersproject_providers.Web3Provider | undefined;
solanaWallet?: _solana_wallet_adapter_react.WalletContextState | undefined;
polkadotApi?: _polkadot_api.ApiPromise | undefined;
loading: boolean;
prefixCls?: string | undefined;
theme?: "light" | "dark" | undefined;
connect: (chainId: string) => Promise;
disconnect: () => Promise;
switchChain: (chainId: string) => Promise;
};
/**
*
* @param chainId
* @returns
*/
declare const useChainIsSupported: (chainId: string | undefined) => boolean;
/**
* @param account
* @param prefix
* @param suffix
* @returns
*/
declare function truncateString(str: string, headNumber?: number, tailNumber?: number, replacement?: string): string;
/**
* @param u8a
* @returns
*/
declare const u8aToHex: (u8a: number[]) => `0x${string}`;
/**
* @param u8
* @returns
*/
declare const u8ToHex: (u8: number) => `0x${string}`;
export { AtaWalletState, Chain, ChainType, Chains, Wallet, WalletProvider, truncateString, u8ToHex, u8aToHex, useChainIsSupported, useWallet };