import { IAirGapTransaction } from '../../../interfaces/IAirGapTransaction';
import { RawTezosTransaction } from '../../../serializer/types';
import { FeeDefaults } from '../../ICoinProtocol';
import { TezosFA2BalanceOfRequest } from '../types/fa/TezosFA2BalanceOfRequest';
import { TezosFA2BalanceOfResponse } from '../types/fa/TezosFA2BalanceOfResponse';
import { TezosFA2TokenMetadata } from '../types/fa/TezosFA2TokenMetadata';
import { TezosFA2TransferRequest } from '../types/fa/TezosFA2TransferRequest';
import { TezosFA2UpdateOperatorRequest } from '../types/fa/TezosFA2UpdateOperatorRequest';
import { TezosTransactionParameters } from '../types/operations/Transaction';
import { TezosFAProtocol } from './TezosFAProtocol';
import { TezosFA2ProtocolOptions } from './TezosFAProtocolOptions';
declare enum TezosFA2ContractEntrypoint {
    BALANCE = "balance_of",
    TRANSFER = "transfer",
    UPDATE_OPERATORS = "update_operators",
    TOKEN_METADATA_REGISTRY = "token_metadata_registry",
    TOKEN_METADATA = "token_metadata"
}
export declare class TezosFA2Protocol extends TezosFAProtocol {
    private static DEFAULT_TOKEN_METADATA_BIG_MAP_NAME;
    private static DEFAULT_TOKEN_METADATA_BIG_MAP_VALUE_REGEX;
    readonly tokenID?: number;
    readonly tokenMetadataBigMapID?: number;
    readonly tokenMetadataBigMapName: string;
    readonly tokenMedatadaBigMapValueRegex: RegExp;
    private readonly defaultCallbackContract;
    constructor(options: TezosFA2ProtocolOptions);
    getBalanceOfAddresses(addresses: string[]): Promise<string>;
    estimateFeeDefaultsFromPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise<FeeDefaults>;
    prepareTransactionFromPublicKey(publicKey: string, recipients: string[], values: string[], fee: string, data?: any): Promise<RawTezosTransaction>;
    transactionDetailsFromParameters(parameters: TezosTransactionParameters): Partial<IAirGapTransaction>[];
    balanceOf(balanceRequests: TezosFA2BalanceOfRequest[], source?: string, callbackContract?: string): Promise<TezosFA2BalanceOfResponse[]>;
    transfer(transferRequests: TezosFA2TransferRequest[], fee: string, publicKey: string): Promise<RawTezosTransaction>;
    updateOperators(updateRequests: TezosFA2UpdateOperatorRequest[], fee: string, publicKey: string): Promise<RawTezosTransaction>;
    tokenMetadataRegistry(source?: string, callbackContract?: string): Promise<string>;
    tokenMetadata(tokenIDs: number[], handler: string, fee: string, publicKey: string): Promise<RawTezosTransaction>;
    getTokenMetadata(tokenIDs?: number[]): Promise<TezosFA2TokenMetadata[]>;
    fetchTokenHolders(tokenIDs: number[]): Promise<{
        address: string;
        amount: string;
        tokenID: number;
    }[]>;
    private createTransferCall;
    protected callbackContract(entrypoint: TezosFA2ContractEntrypoint): string;
    private isTransferRequest;
    private isTokenMetadata;
}
export {};
