import { GeneratedType, OfflineSigner, EncodeObject } from "@cosmjs/proto-signing";
import { StdFee } from "@cosmjs/launchpad";
import { Env } from "./env";
import { UnionToIntersection, Return, Constructor } from "./helpers";
import { Module } from "./modules";
import { EventEmitter } from "events";
import { ChainInfo } from "@keplr-wallet/types";
export declare class IgniteClient extends EventEmitter {
    static plugins: Module[];
    env: Env;
    signer: OfflineSigner;
    registry: Array<[string, GeneratedType]>;
    static plugin<T extends Module | Module[]>(plugin: T): ({
        new (env: Env, signer?: OfflineSigner): {
            env: Env;
            signer: OfflineSigner;
            registry: [string, GeneratedType][];
            signAndBroadcast(msgs: EncodeObject[], fee: StdFee, memo: string): Promise<import("@cosmjs/stargate").DeliverTxResponse>;
            useSigner(signer: OfflineSigner): Promise<void>;
            useKeplr(keplrChainInfo?: Partial<ChainInfo>): Promise<void>;
            eventNames(): (string | number)[];
            setMaxListeners(n: number): any;
            getMaxListeners(): number;
            emit(type: string | number, ...args: any[]): boolean;
            addListener(type: string | number, listener: import("events").Listener): any;
            on(type: string | number, listener: import("events").Listener): any;
            once(type: string | number, listener: import("events").Listener): any;
            prependListener(type: string | number, listener: import("events").Listener): any;
            prependOnceListener(type: string | number, listener: import("events").Listener): any;
            removeListener(type: string | number, listener: import("events").Listener): any;
            off(type: string | number, listener: import("events").Listener): any;
            removeAllListeners(type?: string | number): any;
            listeners(type: string | number): import("events").Listener[];
            listenerCount(type: string | number): number;
            rawListeners(type: string | number): import("events").Listener[];
        };
        plugins: Module[];
        plugin<T extends Module | Module[]>(plugin: T): (any & Constructor<UnionToIntersection<Return<T>["module"]>>) | (any & Constructor<Return<T>["module"]>);
        listenerCount(emitter: EventEmitter, type: string | number): number;
        defaultMaxListeners: number;
    } & Constructor<UnionToIntersection<Return<T>["module"]>>) | ({
        new (env: Env, signer?: OfflineSigner): {
            env: Env;
            signer: OfflineSigner;
            registry: [string, GeneratedType][];
            signAndBroadcast(msgs: EncodeObject[], fee: StdFee, memo: string): Promise<import("@cosmjs/stargate").DeliverTxResponse>;
            useSigner(signer: OfflineSigner): Promise<void>;
            useKeplr(keplrChainInfo?: Partial<ChainInfo>): Promise<void>;
            eventNames(): (string | number)[];
            setMaxListeners(n: number): any;
            getMaxListeners(): number;
            emit(type: string | number, ...args: any[]): boolean;
            addListener(type: string | number, listener: import("events").Listener): any;
            on(type: string | number, listener: import("events").Listener): any;
            once(type: string | number, listener: import("events").Listener): any;
            prependListener(type: string | number, listener: import("events").Listener): any;
            prependOnceListener(type: string | number, listener: import("events").Listener): any;
            removeListener(type: string | number, listener: import("events").Listener): any;
            off(type: string | number, listener: import("events").Listener): any;
            removeAllListeners(type?: string | number): any;
            listeners(type: string | number): import("events").Listener[];
            listenerCount(type: string | number): number;
            rawListeners(type: string | number): import("events").Listener[];
        };
        plugins: Module[];
        plugin<T extends Module | Module[]>(plugin: T): (any & Constructor<UnionToIntersection<Return<T>["module"]>>) | (any & Constructor<Return<T>["module"]>);
        listenerCount(emitter: EventEmitter, type: string | number): number;
        defaultMaxListeners: number;
    } & Constructor<Return<T>["module"]>);
    signAndBroadcast(msgs: EncodeObject[], fee: StdFee, memo: string): Promise<import("@cosmjs/stargate").DeliverTxResponse>;
    constructor(env: Env, signer?: OfflineSigner);
    useSigner(signer: OfflineSigner): Promise<void>;
    useKeplr(keplrChainInfo?: Partial<ChainInfo>): Promise<void>;
}
