import { ContractAdapter } from '../../common/ContractAdapter';
import { Bytes, FunctionCall, SigHashPreimage } from '../../scryptlib';
import * as proto from '../contract-proto/tokenUnlockContractCheck.proto';
export declare enum TOKEN_UNLOCK_TYPE {
    IN_2_OUT_5 = 1,
    IN_4_OUT_8 = 2,
    IN_8_OUT_12 = 3,
    IN_3_OUT_100 = 4,
    IN_20_OUT_5 = 5,
    UNSUPPORT = 6
}
export declare class TokenUnlockContractCheck extends ContractAdapter {
    constuctParams: {
        unlockType: TOKEN_UNLOCK_TYPE;
    };
    private _formatedDataPart;
    constructor(constuctParams: {
        unlockType: TOKEN_UNLOCK_TYPE;
    });
    clone(): TokenUnlockContractCheck;
    setFormatedDataPart(dataPart: proto.FormatedDataPart): void;
    getFormatedDataPart(): proto.FormatedDataPart;
    unlock({ txPreimage, prevouts, tokenScript, tokenTxHeaderArray, tokenTxHashProofArray, tokenSatoshiBytesArray, inputTokenAddressArray, inputTokenAmountArray, nOutputs, tokenOutputIndexArray, tokenOutputSatoshis, otherOutputArray, }: {
        txPreimage: SigHashPreimage;
        prevouts: Bytes;
        tokenScript: Bytes;
        tokenTxHeaderArray: Bytes;
        tokenTxHashProofArray: Bytes;
        tokenSatoshiBytesArray: Bytes;
        inputTokenAddressArray: Bytes;
        inputTokenAmountArray: Bytes;
        nOutputs: number;
        tokenOutputIndexArray: Bytes;
        tokenOutputSatoshis: number;
        otherOutputArray: Bytes;
    }): FunctionCall;
}
export declare class TokenUnlockContractCheckFactory {
    static tokenUnlockTypeInfos: {
        type: TOKEN_UNLOCK_TYPE;
        in: number;
        out: number;
        lockingScriptSize: number;
    }[];
    static getOptimumType(inCount: number, outCount: number): TOKEN_UNLOCK_TYPE;
    static createContract(unlockType: TOKEN_UNLOCK_TYPE): TokenUnlockContractCheck;
    static getLockingScriptSize(unlockType: TOKEN_UNLOCK_TYPE): number;
    static calUnlockingScriptSize(checkType: TOKEN_UNLOCK_TYPE, mvcInputLen: number, tokenInputLen: number, tokenOutputLen: number, opreturnData: any): number;
    static getDummyInstance(unlockType: TOKEN_UNLOCK_TYPE): TokenUnlockContractCheck;
}
