/// <reference types="node" />
import { Any } from 'google-protobuf/google/protobuf/any_pb';
import { MsgSend as MsgSendProto } from '../codegen/cosmos/bank/v1beta1/tx_pb';
import { Coin } from '../codegen/cosmos/base/v1beta1/coin_pb';
import { MsgWithdrawDelegatorReward as MsgWithdrawDelegatorRewardProto } from '../codegen/cosmos/distribution/v1beta1/tx_pb';
import { Deposit as MsgDepositProto, Vote as MsgVoteProto, VoteOptionMap } from '../codegen/cosmos/gov/v1beta1/gov_pb';
import { MsgBeginRedelegate as MsgBeginRedelegateProto, MsgDelegate as MsgDelegateProto, MsgUndelegate as MsgUndelegateProto } from '../codegen/cosmos/staking/v1beta1/tx_pb';
import { MsgTransfer as MsgTransferProto } from '../codegen/ibc/applications/transfer/v1/tx_pb';
import { MsgCreateDataSource as MsgCreateDataSourceProto, MsgCreateOracleScript as MsgCreateOracleScriptProto, MsgEditDataSource as MsgEditDataSourceProto, MsgEditOracleScript as MsgEditOracleScriptProto, MsgRequestData as MsgRequestDataProto } from '../codegen/oracle/v1/tx_pb';
import { Message as JSPBMesage } from 'google-protobuf';
import { MsgSubmitProposal as MsgSubmitProposalProto } from '../codegen/cosmos/gov/v1beta1/tx_pb';
import { Proposal } from 'proposal';
export interface BaseMsg extends JSPBMesage {
    toJSON(): object;
    toAny(): Any;
}
export declare class MsgRequestData extends MsgRequestDataProto implements BaseMsg {
    constructor(oracleScriptId: number, calldata: Buffer, askCount: number, minCount: number, clientId: string, sender: string, feeLimitList?: Coin[], prepareGas?: number, executeGas?: number);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgSend extends MsgSendProto implements BaseMsg {
    constructor(from: string, to: string, amountList: Coin[]);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgDelegate extends MsgDelegateProto implements BaseMsg {
    constructor(delegator: string, validator: string, amount: Coin);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgUndelegate extends MsgUndelegateProto implements BaseMsg {
    constructor(delegator: string, validator: string, amount: Coin);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgBeginRedelegate extends MsgBeginRedelegateProto implements BaseMsg {
    constructor(delegator: string, srcValidator: string, dstValidator: string, amount: Coin);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgWithdrawDelegatorReward extends MsgWithdrawDelegatorRewardProto implements BaseMsg {
    constructor(delegator: string, validator: string);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgVote extends MsgVoteProto implements BaseMsg {
    constructor(proposalId: number, voter: string, option: VoteOptionMap[keyof VoteOptionMap]);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgTransfer extends MsgTransferProto implements BaseMsg {
    constructor(sourcePort: string, sourceChannel: string, sender: string, receiver: string, token: Coin, timeoutTimestamp: number);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgCreateDataSource extends MsgCreateDataSourceProto implements BaseMsg {
    constructor(name: string, executable: Buffer | string, treasury: string, owner: string, sender: string, feeList?: Coin[], description?: string);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgEditDataSource extends MsgEditDataSourceProto implements BaseMsg {
    constructor(dataSourceId: number, treasury: string, owner: string, sender: string, feeList?: Coin[], name?: string, description?: string, executable?: Buffer | string);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgCreateOracleScript extends MsgCreateOracleScriptProto implements BaseMsg {
    constructor(name: string, code: Buffer, owner: string, sender: string, description?: string, schema?: string, sourceCodeUrl?: string);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgEditOracleScript extends MsgEditOracleScriptProto implements BaseMsg {
    constructor(oracleScriptId: number, owner: string, sender: string, name?: string, description?: string, schema?: string, sourceCodeUrl?: string, code?: Buffer | string);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgSubmitProposal extends MsgSubmitProposalProto implements BaseMsg {
    content?: Proposal.Content;
    constructor(initialDepositList: Coin[], proposer: string, content?: Proposal.Content);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
export declare class MsgDeposit extends MsgDepositProto implements BaseMsg {
    constructor(proposalId: number, depositor: string, amountList: Coin[]);
    toAny(): Any;
    toJSON(): object;
    validate(): void;
}
