import { BlockchainEventMessage, DeviceEventMessage, TransportEventMessage } from '@trezor/connect-web';
import { BehaviorSubject } from 'rxjs';
import { AllCoins } from '../wallets/trezor';
import { EosContractCoins, ERC20Names } from '..';
import { WalletsNames } from './enums';
export interface ChainInfo {
    chainId: string;
    name: string;
}
export interface IProviderRpcError extends Error {
    message: string;
    code: number | string;
    data?: unknown;
}
export interface ProviderMessage {
    type: string;
    data: unknown;
}
export interface TransferEvent {
    operator?: string;
    from: string;
    to: string;
    values?: number[];
    ids?: number[];
    event: string;
}
export interface TransferToken {
    addressTo: string;
    value: number;
}
export interface TransferERC721Token {
    addressTo: string;
    tokenId: number;
}
export interface TransferContractToken {
    addressFrom?: string;
    addressTo: string;
    tokenIds?: number[];
    values?: number[];
    data?: string;
}
export interface ApproveToken {
    address: string;
    amount?: string;
    tokenId?: number;
}
export interface SetApprovalForAll {
    operator: string;
    approved: boolean;
}
export interface GetContractBalance {
    addresses?: string[];
    ids?: number[];
}
export interface GlobalState<T> {
    place: string;
    payload: T;
}
export interface AccountInfo {
    address?: string;
    balance?: number | string;
    coin?: AllCoins;
}
export interface WalletsWrapperProps {
    type?: WalletsNames;
    infuraApiKey: string;
}
export interface WalletStateProps {
    address$: BehaviorSubject<string[]>;
    chainId$: BehaviorSubject<ChainInfo | null>;
    isConnected$: BehaviorSubject<boolean>;
    subscriptionMessage$: BehaviorSubject<SubscriptionMessage | null>;
    errors$: BehaviorSubject<IProviderRpcError | null>;
}
export declare type SubscriptionMessage = ProviderMessage | DeviceEventMessage | TransportEventMessage | BlockchainEventMessage;
export declare type CoinsNames = ERC20Names | EosContractCoins | AllCoins;
