import { TezosNetwork } from './../TezosProtocol';
import { IAirGapTransaction } from '../../../interfaces/IAirGapTransaction';
import { RawTezosTransaction } from '../../../serializer/types';
import { ProtocolSymbols } from '../../../utils/ProtocolSymbols';
import { ICoinSubProtocol, SubProtocolType } from '../../ICoinSubProtocol';
import { TezosContract } from '../contract/TezosContract';
import { TezosContractCall } from '../contract/TezosContractCall';
import { TezosProtocol } from '../TezosProtocol';
import { MichelineDataNode } from '../types/micheline/MichelineNode';
import { TezosTransactionParameters, TezosTransactionOperation } from '../types/operations/Transaction';
import { TezosFAProtocolOptions } from './TezosFAProtocolOptions';
import { TezosTransactionCursor } from '../types/TezosTransactionCursor';
import { TezosTransactionResult } from '../types/TezosTransactionResult';
import { FeeDefaults } from '../../ICoinProtocol';
export interface TezosFAProtocolConfiguration {
    symbol: string;
    name: string;
    marketSymbol: string;
    identifier: ProtocolSymbols;
    contractAddress: string;
    feeDefaults: FeeDefaults;
    decimals?: number;
    jsonRPCAPI?: string;
    baseApiUrl?: string;
    network?: TezosNetwork;
    baseApiKey?: string;
    baseApiNetwork?: string;
}
export declare abstract class TezosFAProtocol extends TezosProtocol implements ICoinSubProtocol {
    readonly options: TezosFAProtocolOptions;
    readonly isSubProtocol: boolean;
    readonly subProtocolType: SubProtocolType;
    readonly identifier: ProtocolSymbols;
    readonly contractAddress: string;
    protected readonly contract: TezosContract;
    protected readonly defaultSourceAddress: string;
    constructor(options: TezosFAProtocolOptions);
    abstract transactionDetailsFromParameters(parameters: TezosTransactionParameters): Partial<IAirGapTransaction>[];
    bigMapValue(key: string, isKeyHash?: boolean, bigMapID?: number): Promise<string | null>;
    estimateMaxTransactionValueFromPublicKey(publicKey: string, recipients: string[], fee?: string): Promise<string>;
    getTransactionsFromPublicKey(publicKey: string, limit: number, cursor?: TezosTransactionCursor): Promise<TezosTransactionResult>;
    getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: TezosTransactionCursor): Promise<TezosTransactionResult>;
    getTransactions(limit: number, cursor?: TezosTransactionCursor): Promise<TezosTransactionResult>;
    normalizeTransactionParameters(parameters: string, fallbackEntrypointName?: string): Promise<TezosTransactionParameters>;
    protected getTransactionOperationDetails(transactionOperation: TezosTransactionOperation): Promise<Partial<IAirGapTransaction>[]>;
    private parseParameters;
    private transactionToAirGapTransactions;
    protected runContractCall(contractCall: TezosContractCall, source: string): Promise<MichelineDataNode>;
    protected prepareContractCall(contractCalls: TezosContractCall[], fee: string, publicKey: string): Promise<RawTezosTransaction>;
    protected requireSource(source?: string, defaultSource?: string, ...excludedPrefixes: string[]): string;
    private prepareMockContractCall;
    private url;
}
