import { AddressOrPair, SubmittableExtrinsic } from "@polkadot/api/types";
import { ISubmittableResult } from "@polkadot/types/types";
import { EventRecord, DispatchError } from "@polkadot/types/interfaces/system";
import { ApiPromise } from "@polkadot/api";
import { AugmentedEvent, ApiTypes } from "@polkadot/api/types";
import type { AnyTuple } from "@polkadot/types/types";
export interface TransactionAPI {
    setAccount(account: AddressOrPair): void;
    removeAccount(): void;
    getAccount(): AddressOrPair | undefined;
    sendLogged<T extends AnyTuple>(transaction: SubmittableExtrinsic<"promise">, successEventType?: AugmentedEvent<ApiTypes, T>, onlyInBlock?: boolean): Promise<ISubmittableResult>;
}
export declare class DefaultTransactionAPI {
    api: ApiPromise;
    private account?;
    constructor(api: ApiPromise, account?: AddressOrPair | undefined);
    setAccount(account: AddressOrPair): void;
    removeAccount(): void;
    getAccount(): AddressOrPair | undefined;
    sendLogged<T extends AnyTuple>(transaction: SubmittableExtrinsic<"promise">, successEventType?: AugmentedEvent<ApiTypes, T>, onlyInBlock?: boolean): Promise<ISubmittableResult>;
    static sendLogged<T extends AnyTuple>(api: ApiPromise, account: AddressOrPair, transaction: SubmittableExtrinsic<"promise">, successEventType?: AugmentedEvent<ApiTypes, T>, onlyInBlock?: boolean): Promise<ISubmittableResult>;
    static printEvents(api: ApiPromise, events: EventRecord[]): void;
    static waitForEvent<T extends AnyTuple>(api: ApiPromise, event: AugmentedEvent<ApiTypes, T>, timeoutMs: number): Promise<boolean>;
    static isDispatchError(eventData: unknown): eventData is DispatchError;
    static doesArrayContainEvent<T extends AnyTuple>(events: EventRecord[], eventType: AugmentedEvent<ApiTypes, T>): boolean;
}
