import BigNumber from "bignumber.js";
import { LCDClient, RawKey, Wallet } from "@terra-money/terra.js";
import { PromiEvent } from "../../lib/promiEvent";
import { Asset, Handler } from "../../types/types";
export declare enum TerraNetwork {
    Bombay = "bombay-12",
    Columbus = "columbus-3"
}
interface ConstructorOptions {
    terra?: {
        URL: string;
    };
}
interface AddressOptions {
}
interface BalanceOptions extends AddressOptions {
    address?: string;
}
interface TxOptions extends Partial<{}> {
    subtractFee?: boolean;
    memo?: string;
}
export declare class TERRAHandler implements Handler<ConstructorOptions, AddressOptions, BalanceOptions, TxOptions> {
    private readonly network;
    private readonly decimals;
    client: LCDClient;
    wallet: Wallet;
    key: RawKey;
    constructor(privateKey: string, network: string, options?: ConstructorOptions, sharedState?: any);
    readonly handlesAsset: (asset: Asset) => boolean;
    readonly address: (asset: Asset, _options?: AddressOptions) => string;
    readonly getBalance: (asset: Asset, options?: BalanceOptions) => Promise<BigNumber>;
    readonly getBalanceInSats: (asset: Asset, options?: BalanceOptions) => Promise<BigNumber>;
    readonly send: (to: string, value: BigNumber, asset: Asset, options?: TxOptions) => PromiEvent<string>;
    readonly sendSats: (to: string, value: BigNumber, asset: Asset, options?: TxOptions) => PromiEvent<string>;
}
export {};
