import { ChainId, Currency, Pair, Token, TokenAmount } from '@envanik/sdk';
import { useHederaTokenAssociated } from 'src/hooks/tokens/hedera';
import { HederaTokenMetadata } from 'src/utils/hedera';
import { AddLiquidityProps, AttemptToApproveProps, CreatePoolProps, RemoveLiquidityProps } from '../types';
/**
 * Returns a Hedera Wallet balance.
 */
export declare function useHederaBalance(chainId: ChainId, accounts?: (string | undefined)[]): {
    [address: string]: TokenAmount | undefined;
} | undefined;
export declare function useHederaTokenBalances(address?: string, tokens?: (Token | undefined)[]): [{
    [tokenAddress: string]: TokenAmount | undefined;
}, boolean];
export declare function useHederaTokenBalance(account?: string, token?: Token): TokenAmount | undefined;
/**
 * This hook used to get balance for given Hedera pair
 * Takes account and pair as a input and return liquidityTokenAddress wise balance
 * @param account
 * @param pair
 * @returns {[tokenAddress: string]: TokenAmount | undefined;}
 */
export declare function useHederaPairBalances(account?: string, pairs?: (Pair | undefined)[]): (boolean | {
    [tokenAddress: string]: TokenAmount | undefined;
})[];
export declare function useHederaPairBalance(account?: string, pair?: Pair): TokenAmount | undefined;
export declare function useHederaAddLiquidity(): (data: AddLiquidityProps) => Promise<any>;
export declare function useHederaRemoveLiquidity(pair?: Pair | null | undefined): {
    removeLiquidity: (data: RemoveLiquidityProps) => Promise<{
        hash: string;
    } | undefined>;
    onAttemptToApprove: (data1: AttemptToApproveProps) => Promise<void>;
    signatureData: null;
    setSignatureData: () => void;
};
export declare function useGetHederaUserLP(): {
    v2IsLoading: boolean;
    allV2PairsWithLiquidity: Pair[];
    allPairs: Pair[];
};
export declare function useHederaCreatePair(): (data: CreatePoolProps) => Promise<{
    hash: string;
} | undefined>;
export declare const fetchHederaPGLTokenAddress: (pairTokenAddress: string | undefined) => () => Promise<string | undefined>;
export declare const fetchHederaPGLToken: (pairToken: Token | undefined, chainId: ChainId) => () => Promise<Token | undefined>;
export declare function fetchHederaTokenMetaData(tokenAddress: string | undefined): () => Promise<HederaTokenMetadata | undefined>;
/**
 * This hook get all hedera token metadata from rest api
 * @param addresses address array of tokens to be queried
 * @returns object with key is the address and the value is the metadata
 */
export declare function useHederaTokensMetaData(addresses: (string | undefined)[]): {
    [x: string]: HederaTokenMetadata | undefined;
};
/**
 * This hook used to get pgl token specifically for given Hedera pair
 * Takes currencies as a input and return hedera pair token & token with pair contract address
 * @param currencyA
 * @param currencyB
 * @returns [pglToken, pairToken]
 */
export declare const useHederaPGLToken: (currencyA: Currency | undefined, currencyB: Currency | undefined) => [Token | undefined, Token | undefined];
export declare const useHederaPGLTokens: (pairs?: (Pair | undefined)[] | undefined) => [Token | undefined, Token | undefined][];
/**
 * This hook used to get pgl Token(Fungible Token address) based on liquidityTokenAddress
 * Takes liquidityAddresses as a input and return liquidityTokenAddress wise pgltokenaddress
 * @param liquidityAddresses
 * @returns {[tokenAddress: string]: pgl token address;}
 */
export declare const useHederaPGLTokenAddresses: (liquidityAddresses?: (string | undefined)[] | undefined) => {
    [liquidityAddress: string]: string | undefined;
};
export declare function useHederaPGLAssociated(currencyA: Currency | undefined, currencyB: Currency | undefined): ReturnType<typeof useHederaTokenAssociated>;
/**
 * This hook used to get pair contract address for given lpTokenAddress ( Fungible token address )
 * Takes lpTokenAddress as a input and return pair contract address
 * @param lpTokenAddress string[]
 * @returns [pair contract address]
 */
export declare const useHederaPairContractEVMAddresses: (lpTokenAddress?: string[] | undefined) => string[];
