import { SignModeMap } from '@routerprotocol/chain-api/cosmos/tx/signing/v1beta1/signing_pb';
import { BroadcastModeMap } from '@routerprotocol/chain-api/cosmos/tx/v1beta1/service_pb';
import { SignDoc, TxRaw } from '@routerprotocol/chain-api/cosmos/tx/v1beta1/tx_pb';
import { StdFee } from '@cosmjs/amino';
export interface TxClientBroadcastOptions {
    mode: BroadcastModeMap[keyof BroadcastModeMap];
    timeout: number;
}
export interface TxClientBroadcastResponse {
    height: number;
    txHash: string;
    codespace: string;
    code: number;
    data?: string;
    rawLog: string;
    logs?: any[];
    info?: string;
    gasWanted: number;
    gasUsed: number;
    timestamp: string;
    events?: any[];
    logsList?: any[];
    eventsList?: any[];
}
export interface TxClientSimulateResponse {
    result: {
        data: Uint8Array | string;
        log: string;
        eventsList: any[];
    };
    gasInfo: {
        gasWanted: number;
        gasUsed: number;
    };
}
export interface TxConcreteApi {
    broadcast(txRaw: TxRaw, options?: TxClientBroadcastOptions): Promise<TxClientBroadcastResponse>;
    broadcastBlock(txRaw: TxRaw): Promise<TxClientBroadcastResponse>;
    fetchTx(txHash: string): Promise<TxClientBroadcastResponse | undefined>;
    fetchTxPoll(txHash: string): Promise<TxClientBroadcastResponse | undefined>;
    simulate(txRaw: TxRaw): Promise<TxClientSimulateResponse>;
}
export declare enum TxClientMode {
    gRpc = "grpc",
    rest = "rest"
}
export declare type MsgArg = {
    type: string;
    message: any;
};
export interface SignerDetails {
    pubKey: string;
    sequence: number;
    accountNumber: number;
}
/** @type {CreateTransactionWithSignersArgs} */
export interface CreateTransactionWithSignersArgs {
    fee?: StdFee;
    memo?: string;
    chainId: string;
    message: MsgArg | MsgArg[];
    signers: SignerDetails | SignerDetails[];
    signMode?: SignModeMap[keyof SignModeMap];
    timeoutHeight?: number;
}
/** @type {CreateTransactionArgs} */
export interface CreateTransactionArgs {
    fee?: StdFee;
    memo?: string;
    chainId: string;
    message: MsgArg | MsgArg[];
    pubKey: string;
    sequence: number;
    accountNumber: number;
    signMode?: SignModeMap[keyof SignModeMap];
    timeoutHeight?: number;
}
/** @type {CreateTransactionResult} */
export interface CreateTransactionResult {
    txRaw: TxRaw;
    signDoc: SignDoc;
    bodyBytes: Uint8Array;
    signers: SignerDetails | SignerDetails[];
    signer: SignerDetails;
    authInfoBytes: Uint8Array;
    signBytes: Uint8Array;
    signHashedBytes: Uint8Array;
}
export interface TxResponse {
    height: number;
    txHash: string;
    codespace: string;
    code: number;
    data?: string;
    rawLog: string;
    logs?: any[];
    info?: string;
    gasWanted: number;
    gasUsed: number;
    timestamp: string;
    events?: any[];
    logsList?: any[];
    eventsList?: any[];
}
