///
import { SaplingPartialOutputDescription, SaplingUnsignedSpendDescription } from '@airgap/sapling-wasm';
import { ProtocolOptions } from '../../../utils/ProtocolOptions';
import { ProtocolSymbols } from '../../../utils/ProtocolSymbols';
import { CurrencyUnit, FeeDefaults } from '../../ICoinProtocol';
import { TezosProtocolConfig, TezosProtocolNetwork } from '../TezosProtocolOptions';
import { TezosSaplingTransaction } from '../types/sapling/TezosSaplingTransaction';
export interface TezosSaplingExternalMethodProvider {
initParameters?: (spendParams: Buffer, outputParams: Buffer) => Promise;
withProvingContext?: (action: (context: number) => Promise) => Promise;
prepareSpendDescription?: (context: number, spendingKey: Buffer, address: Buffer, rcm: string, ar: Buffer, value: string, root: string, merklePath: string) => Promise;
preparePartialOutputDescription?: (context: number, address: Buffer, rcm: Buffer, esk: Buffer, value: string) => Promise;
createBindingSignature?: (context: number, balance: string, sighash: Buffer) => Promise;
}
export declare class TezosSaplingProtocolConfig extends TezosProtocolConfig {
readonly name: string;
readonly identifier: ProtocolSymbols;
readonly contractAddress: string;
readonly memoSize: number;
readonly merkleTreeHeight: number;
readonly symbol?: string | undefined;
readonly marketSymbol?: string | undefined;
readonly feeDefaults?: FeeDefaults | undefined;
readonly decimals?: number | undefined;
readonly units?: CurrencyUnit[] | undefined;
readonly externalProvider?: TezosSaplingExternalMethodProvider | undefined;
constructor(name: string, identifier: ProtocolSymbols, contractAddress: string, memoSize: number, merkleTreeHeight?: number, symbol?: string | undefined, marketSymbol?: string | undefined, feeDefaults?: FeeDefaults | undefined, decimals?: number | undefined, units?: CurrencyUnit[] | undefined, externalProvider?: TezosSaplingExternalMethodProvider | undefined);
}
export declare class TezosShieldedTezProtocolConfig extends TezosSaplingProtocolConfig {
readonly name: string;
readonly identifier: ProtocolSymbols;
readonly contractAddress: string;
readonly externalProvider?: TezosSaplingExternalMethodProvider | undefined;
readonly memoSize: number;
readonly merkleTreeHeight: number;
constructor(name?: string, identifier?: ProtocolSymbols, contractAddress?: string, externalProvider?: TezosSaplingExternalMethodProvider | undefined, memoSize?: number, merkleTreeHeight?: number);
}
export declare class TezosSaplingProtocolOptions implements ProtocolOptions {
network: TezosProtocolNetwork;
config: TezosSaplingProtocolConfig;
constructor(network?: TezosProtocolNetwork, config?: TezosSaplingProtocolConfig);
}