///
import { Encode } from '@0xcert/ethereum-utils';
import { ProviderBase, ProviderEvent } from '@0xcert/scaffold';
import { EventEmitter } from 'events';
import { GatewayConfig, RpcResponse, SendOptions, SignMethod } from './types';
export interface GenericProviderOptions {
accountId?: string;
client?: any;
signMethod?: SignMethod;
unsafeRecipientIds?: string[];
assetLedgerSource?: string;
valueLedgerSource?: string;
requiredConfirmations?: number;
gatewayConfig?: GatewayConfig;
mutationTimeout?: number;
encoder?: Encode;
gasPriceMultiplier?: number;
retryGasPriceMultiplier?: number;
sandbox?: Boolean;
verbose?: Boolean;
}
export declare class GenericProvider extends EventEmitter implements ProviderBase {
signMethod: SignMethod;
assetLedgerSource: string;
valueLedgerSource: string;
requiredConfirmations: number;
mutationTimeout: number;
encoder: Encode;
gasPriceMultiplier?: number;
retryGasPriceMultiplier?: number;
sandbox: Boolean;
verbose: Boolean;
protected _gatewayConfig: GatewayConfig;
protected _accountId: string;
protected _unsafeRecipientIds: string[];
protected _client: any;
protected _id: number;
constructor(options: GenericProviderOptions);
log(message: any): void;
get accountId(): string;
set accountId(id: string);
get unsafeRecipientIds(): string[];
set unsafeRecipientIds(ids: string[]);
get gatewayConfig(): GatewayConfig;
set gatewayConfig(config: GatewayConfig);
emit(event: ProviderEvent.ACCOUNT_CHANGE, newAccountId: string, oldAccountId: string): any;
emit(event: ProviderEvent.NETWORK_CHANGE, newNetworkVersion: string, oldNetworkVersion: string): any;
on(event: ProviderEvent.ACCOUNT_CHANGE, handler: (newAccountId: string, oldAccountId: string) => any): any;
on(event: ProviderEvent.NETWORK_CHANGE, handler: (newNetworkVersion: string, oldNetworkVersion: string) => any): any;
once(event: ProviderEvent.ACCOUNT_CHANGE, handler: (newAccountId: string, oldAccountId: string) => any): any;
once(event: ProviderEvent.NETWORK_CHANGE, handler: (newNetworkVersion: string, oldNetworkVersion: string) => any): any;
off(event: ProviderEvent.ACCOUNT_CHANGE, handler: (newAccountId: string, oldAccountId: string) => any): any;
off(event: ProviderEvent.NETWORK_CHANGE, handler: (newNetworkVersion: string, oldNetworkVersion: string) => any): any;
off(event: ProviderEvent): any;
sign(message: string): Promise;
getAvailableAccounts(): Promise;
getNetworkVersion(): Promise;
isCurrentAccount(accountId: string): boolean;
isUnsafeRecipientId(ledgerId: string): boolean;
post(options: SendOptions): Promise;
protected request(options: SendOptions): Promise;
protected getNextId(): number;
}