import { cosmosclient, proto } from "@cosmos-client/core";
import { cosmos } from "@cosmos-client/core/cjs/proto";
import { Fees, RootDerivationPaths, Tx } from "../client";
import { Asset, BaseAmount } from "@dojima-wallet/utils";
import BigNumber from "bignumber.js";
import Long from "long";
import { APIQueryParam, TxResponse, UnsignedTxParams } from "./cosmos";
import { ChainId, ChainIds, ClientUrls as ClientUrls } from "./types";
/**
 * Type guard for MsgSend
 *
 * @param {Msg} msg
 * @returns {boolean} `true` or `false`.
 */
export declare const isMsgSend: (msg: unknown) => msg is cosmos.bank.v1beta1.MsgSend;
/**
 * Type guard for MsgMultiSend
 *
 * @param {Msg} msg
 * @returns {boolean} `true` or `false`.
 */
export declare const isMsgMultiSend: (msg: unknown) => msg is cosmos.bank.v1beta1.MsgMultiSend;
/**
 * Get denomination from Asset - currently `ATOM` supported only
 *
 * @param {Asset} asset
 * @returns {string} The denomination of the given asset.
 */
export declare const getDenom: (asset: Asset) => string | null;
/**
 * Get Asset from denomination
 *
 * @param {string} denom
 * @returns {Asset|null} The asset of the given denomination.
 */
export declare const getAsset: (denom: string) => Asset | null;
/**
 * Parses transaction history
 *
 * @param {TxResponse[]} txs The transaction response from the node.
 * @param {Asset} asset Asset to get history of transactions from
 *
 * @returns {Tx[]} List of transactions
 */
export declare const getTxsFromHistory: (txs: TxResponse[], asset: Asset) => Tx[];
/**
 * Get Query String
 *
 * @param {APIQueryParam}
 * @returns {string} The query string.
 */
export declare const getQueryString: (params: APIQueryParam) => string;
/**
 * Get the default fee.
 *
 * @returns {Fees} The default fee.
 */
export declare const getDefaultFees: () => Fees;
/**
 * Get address prefix based on the network.
 *
 * @returns {string} The address prefix based on the network.
 *
 **/
export declare const getPrefix: () => string;
/**
 * Default client urls
 *
 * @returns {ClientUrls} The client urls for Cosmos.
 */
export declare const getDefaultClientUrls: () => ClientUrls;
/**
 * Default chain ids
 *
 * @returns {ChainIds} Chain ids for Cosmos.
 */
export declare const getDefaultChainIds: () => ChainIds;
export declare const getDefaultRootDerivationPaths: () => RootDerivationPaths;
export declare const protoFee: ({ denom, amount, gasLimit, }: {
    denom: string;
    amount: BaseAmount;
    gasLimit?: BigNumber;
}) => proto.cosmos.tx.v1beta1.Fee;
export declare const protoMsgSend: ({ from, to, amount, denom, }: {
    from: string;
    to: string;
    amount: BaseAmount;
    denom: string;
}) => proto.cosmos.bank.v1beta1.MsgSend;
export declare const protoTxBody: ({ from, to, amount, denom, memo, }: UnsignedTxParams) => proto.cosmos.tx.v1beta1.TxBody;
export declare const protoAuthInfo: ({ pubKey, sequence, mode, fee, }: {
    pubKey: cosmosclient.PubKey;
    sequence: Long.Long;
    mode: proto.cosmos.tx.signing.v1beta1.SignMode;
    fee?: cosmos.tx.v1beta1.IFee;
}) => proto.cosmos.tx.v1beta1.AuthInfo;
/**
 * Helper to get Cosmos' chain id
 * @param {string} url API url
 */
export declare const getChainId: (url: string) => Promise<ChainId>;
/**
 * Helper to get Cosmos' chain id for all networks
 * @param {ClientUrl} urls urls (use `getDefaultClientUrl()` if you don't need to use custom urls)
 */
export declare const getChainIds: (urls: ClientUrls) => Promise<ChainIds>;
