import { EncodeObject, Registry } from '@cosmjs/proto-signing';
import { OrderBatch } from '@ritbit/v4-proto/src/codegen/ritbit/clob/tx';
import { PerpetualMarketType } from '@ritbit/v4-proto/src/codegen/ritbit/perpetuals/perpetual';
import { Coin } from '@ritbit/v4-proto/src/codegen/cosmos/base/v1beta1/coin';
import { Any } from '@ritbit/v4-proto/src/codegen/google/protobuf/any';
import Long from 'long';
import { AuthenticatorType } from '../constants';
import { DenomConfig, ITwapParameters, IBuilderCodeParameters } from '../types';
import { Order_ConditionType, Order_Side, Order_TimeInForce } from './proto-includes';
export declare class Composer {
    composeMsgPlaceOrder(address: string, subaccountNumber: number, clientId: number, clobPairId: number, orderFlags: number, goodTilBlock: number, goodTilBlockTime: number, side: Order_Side, quantums: Long, subticks: Long, timeInForce: Order_TimeInForce, reduceOnly: boolean, clientMetadata: number, conditionType?: Order_ConditionType, conditionalOrderTriggerSubticks?: Long, twapParameters?: ITwapParameters, builderCodeParameters?: IBuilderCodeParameters, orderRouterAddress?: string): EncodeObject;
    composeMsgCancelOrder(address: string, subaccountNumber: number, clientId: number, clobPairId: number, orderFlags: number, goodTilBlock: number, goodTilBlockTime: number): EncodeObject;
    composeMsgBatchCancelShortTermOrders(address: string, subaccountNumber: number, shortTermCancels: OrderBatch[], goodTilBlock: number): EncodeObject;
    composeMsgCreateClobPair(clobId: number, perpetualId: number, quantumConversionExponent: number, stepBaseQuantums: Long, subticksPerTick: number): EncodeObject;
    composeMsgUpdateClobPair(clobId: number, perpetualId: number, quantumConversionExponent: number, stepBaseQuantums: Long, subticksPerTick: number): EncodeObject;
    composeMsgTransfer(address: string, subaccountNumber: number, recipientAddress: string, recipientSubaccountNumber: number, assetId: number, amount: Long): EncodeObject;
    composeMsgDepositToSubaccount(address: string, subaccountNumber: number, assetId: number, quantums: Long): EncodeObject;
    composeMsgWithdrawFromSubaccount(address: string, subaccountNumber: number, assetId: number, quantums: Long, recipient?: string): EncodeObject;
    composeMsgWithdrawal(sender: string, amount: string, ethRecipient: string, ethChainId: number, assetId: number): EncodeObject;
    composeMsgSendToken(address: string, recipient: string, coinDenom: string, quantums: string): EncodeObject;
    composeMsgCreateOracleMarket(marketId: number, pair: string, exponent: number, minExchanges: number, minPriceChangePpm: number, exchangeConfigJson: string): EncodeObject;
    composeMsgCreatePerpetual(perpetualId: number, marketId: number, ticker: string, atomicResolution: number, liquidityTier: number, marketType: PerpetualMarketType): EncodeObject;
    composeMsgDelayMessage(embeddedMsg: EncodeObject, delayBlocks: number): EncodeObject;
    composeMsgSubmitProposal(title: string, initialDepositAmount: string, initialDepositDenomConfig: DenomConfig, summary: string, messages: EncodeObject[], proposer: string, metadata?: string, expedited?: boolean): EncodeObject;
    composeMsgDepositToMegavault(address: string, subaccountNumber: number, quoteQuantums: Uint8Array): EncodeObject;
    composeMsgWithdrawFromMegavault(address: string, subaccountNumber: number, shares: Uint8Array, minQuoteQuantums: Uint8Array): EncodeObject;
    composeMsgDelegate(delegator: string, validator: string, amount: Coin): EncodeObject;
    composeMsgUndelegate(delegator: string, validator: string, amount: Coin): EncodeObject;
    composeMsgWithdrawDelegatorReward(delegator: string, validator: string): EncodeObject;
    composeMsgRegisterAffiliate(referee: string, affiliate: string): EncodeObject;
    composeMsgCreateMarketPermissionless(address: string, ticker: string, subaccountNumber: number): EncodeObject;
    composeMsgAddAuthenticator(address: string, authenticatorType: AuthenticatorType, data: Uint8Array): EncodeObject;
    composeMsgRemoveAuthenticator(address: string, id: Long): EncodeObject;
    validateGoodTilBlockAndTime(orderFlags: number, goodTilBlock: number, goodTilBlockTime: number): void;
    wrapMessageAsAny(registry: Registry, message: EncodeObject): Any;
    wrapMessageArrAsAny(registry: Registry, messages: EncodeObject[]): Any[];
}
//# sourceMappingURL=composer.d.ts.map