import { ChainData, ChainType } from "@0xsquid/squid-types";
import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate";
import { OfflineSigner } from "@cosmjs/proto-signing";
import { SigningStargateClient } from "@cosmjs/stargate";
import { ChainInfo, Keplr, SettledResponses } from "@keplr-wallet/types";
import { ICosmosContextData } from "../../core/providers/CosmosProvider";
import { ConnectWalletResult, CosmosWallet } from "../../core/types/wallet";
type AddressData = {
    address: string;
    chainId: string;
};
/**
 * Get the cosmos address for a given chain
 * This might pop up a keplr modal to approve the chain
 * @param chainId
 * @param keplrTypeWallet
 * @returns Cosmos address
 */
export declare const getCosmosKey: (chainId?: string, keplrTypeWallet?: Keplr) => Promise<string | undefined>;
export declare const getKeysSettled: (chainIds: string[], keplrTypeWallet: Keplr) => Promise<SettledResponses<string | undefined>>;
/**
 * Get the cosmos address for a given chain
 * This might pop up a keplr modal to approve the chain
 * @param chainId
 * @param keplrTypeWallet
 * @returns Cosmos address
 */
export declare const getAllKeysForSupportedCosmosChains: (chainIds: string[], keplrTypeWallet: Keplr | undefined) => Promise<AddressData[]>;
export declare const isCosmosAddressValid: (chainPrefix: string, address: string) => boolean;
export declare const getCosmosSigningClient: ({ chainRpc, cosmosSigner, defaultSigningClient, }: {
    chainRpc: string;
    cosmosSigner: OfflineSigner | null;
    defaultSigningClient: typeof SigningStargateClient | typeof SigningCosmWasmClient;
}) => Promise<SigningCosmWasmClient | SigningStargateClient | null>;
export declare const getCosmosChainInfosObject: (chain: ChainData) => ChainInfo;
export declare const connectCosmosWallet: (wallet: CosmosWallet, defaultChain: ChainData | undefined, { connectCosmos, cosmosConnectedWallet, }: Pick<ICosmosContextData, "connectCosmos" | "cosmosConnectedWallet">) => Promise<ConnectWalletResult<ChainType.COSMOS> | null>;
export declare const isFallbackAddressNeeded: ({ currentFallbackAddress, address, chain, }: {
    currentFallbackAddress: string | undefined;
    address: string | undefined;
    chain: Pick<ChainData, "chainType" | "chainId"> | undefined;
}) => boolean;
/**
 * Cosmos wallets may throw an error if the chain the user is trying to use is not added to the wallet.
 * For those cases, some wallets expose a method for adding new chains to the user wallet.
 *
 * This method will try to add the provided chain, throwing an error if the request fails
 * or if the original error indicates that the user rejected the request.
 */
export declare function suggestChainOrThrow({ keplrTypeWallet, chain, error, }: {
    keplrTypeWallet: Keplr;
    chain: ChainData;
    error: unknown;
}): Promise<void>;
export {};
