import { IHinkal } from '../../../data-structures/Hinkal/IHinkal';
import { UserKeys } from '../../../data-structures/crypto-keys/keys';
import { Utxo } from '../../../data-structures/utxo/Utxo';
import { EncryptedOutputWithSign } from '../../../types/commitments.types';
import { TokenWithId } from '../../../types/token-with-id.types';
interface IGetInputUtxos {
    hinkal: IHinkal;
    chainId: number;
    tokenWithId?: TokenWithId | TokenWithId[];
    minInput?: number;
    sliceIfMore6?: boolean;
    tokenId?: number;
    passedShieldedPrivateKey?: string;
    passedShieldedPublicKey?: string;
    ethAddress?: string;
    resetCacheBefore?: boolean;
    allowRemoteDecryption?: boolean;
    ensuredTokensWithId?: TokenWithId[];
    useBlockedUtxos?: boolean;
}
export declare const getInputUtxosRemotely: (hinkal: IHinkal, userKeys: UserKeys, currentChainId: number, shieldedPublicKey: string) => Promise<Utxo[]>;
export declare const attemptGetInputUtxosRemotely: (hinkal: IHinkal, userKeys: UserKeys, currentChainId: number, ethereumAddress: string, shieldedPublicKey: string, hinkalOutputs: EncryptedOutputWithSign<boolean>[], cachedEncryptedOutputs: EncryptedOutputWithSign<boolean>[], lastOutput: string, lastOutputIndex: number) => Promise<Utxo[]>;
/**
 *
 * @param hinkal instance of the hinkal class
 * @param erc20TokenAddress erc20 token address
 * @param minInput min number of input UTXOs
 * @param sliceIfMore6 max upper bound on input UTXOs controller
 * @returns UTXOs for particular erc20 token address
 */
export declare const getInputUtxoAndBalance: ({ hinkal, chainId, passedShieldedPublicKey, ethAddress, resetCacheBefore, allowRemoteDecryption, useBlockedUtxos, }: IGetInputUtxos) => Promise<{
    inputUtxos: Utxo[];
}>;
export declare const getInputUtxoAndBalanceOfStuckUtxos: ({ hinkal, chainId, passedShieldedPublicKey, ethAddress, resetCacheBefore, allowRemoteDecryption, }: IGetInputUtxos) => Promise<{
    inputUtxos: Utxo[];
}>;
export declare const getInputUtxoAndBalancePerToken: ({ hinkal, tokenWithId, minInput, sliceIfMore6, chainId, passedShieldedPrivateKey, passedShieldedPublicKey, ethAddress, resetCacheBefore, ensuredTokensWithId, allowRemoteDecryption, useBlockedUtxos, }: IGetInputUtxos) => Promise<Map<string, Utxo[]>>;
export {};
