import { AccountId, Address, Call, Extrinsic } from '@polkadot/types/interfaces';
import { Callback, Constructor, IKeyringPair } from '@polkadot/types/types';
import { ApiInterfaceRx, ApiTypes } from '../types';
import { SignerOptions, SubmittableExtrinsic, SubmittableResultImpl, SubmitableResultResult, SubmitableResultSubscription } from './types';
import ApiBase from '../base';
interface SubmittableOptions<ApiType> {
    api: ApiInterfaceRx;
    decorateMethod: ApiBase<ApiType>['decorateMethod'];
    type: ApiTypes;
}
declare const _Extrinsic: Constructor<Extrinsic>;
export default class Submittable<ApiType> extends _Extrinsic implements SubmittableExtrinsic<ApiType> {
    private readonly _api;
    private readonly _decorateMethod;
    private readonly _ignoreStatusCb;
    constructor(extrinsic: Call | Uint8Array | string, { api, decorateMethod, type }: SubmittableOptions<ApiType>);
    sign(account: IKeyringPair, optionsOrNonce: Partial<SignerOptions>): this;
    signAndSend(account: IKeyringPair | string | AccountId | Address, options?: Partial<SignerOptions>): SubmitableResultResult<ApiType>;
    signAndSend(account: IKeyringPair | string | AccountId | Address, statusCb: Callback<SubmittableResultImpl>): SubmitableResultSubscription<ApiType>;
    signAndSend(account: IKeyringPair | string | AccountId | Address, options: Partial<SignerOptions>, statusCb?: Callback<SubmittableResultImpl>): SubmitableResultSubscription<ApiType>;
    send(): SubmitableResultResult<ApiType>;
    send(statusCb: Callback<SubmittableResultImpl>): SubmitableResultSubscription<ApiType>;
    private _makeSignAndSendOptions;
    private _signViaSigner;
    private _makeSignOptions;
    private _makeEraOptions;
    private _getPrelimState;
    private _updateSigner;
    private _statusObservable;
    private _sendObservable;
    private _subscribeObservable;
}
export {};
