/// <reference types="node" />
import { SmartBuffer } from 'smart-buffer';
import { OPCode, StaticCode } from './opcode';
import { OP_PUSHDATA } from './data';
import { OP_DEFI_TX } from './dftx';
import { DfTx } from './dftx/dftx';
import * as constants from './constants';
import * as control from './control';
import * as stack from './stack';
import * as splice from './splice';
import * as bitwise from './bitwise';
import * as arithmetic from './arithmetic';
import * as crypto from './crypto';
import * as expansion from './expansion';
import * as invalid from './invalid';
import { PoolAddLiquidity, PoolCreatePair, PoolRemoveLiquidity, PoolSwap, CompositeSwap, PoolUpdatePair } from './dftx/dftx_pool';
import { TokenCreate, TokenMint, TokenUpdate, TokenUpdateAny } from './dftx/dftx_token';
import { AccountToAccount, AccountToUtxos, AnyAccountToAccount, UtxosToAccount } from './dftx/dftx_account';
import { AppointOracle, RemoveOracle, SetOracleData, UpdateOracle } from './dftx/dftx_oracles';
import { SetLoanScheme, DestroyLoanScheme, SetDefaultLoanScheme, SetCollateralToken, SetLoanToken, UpdateLoanToken, CreateVault, UpdateVault, DepositToVault, WithdrawFromVault, CloseVault, TakeLoan, PaybackLoan, PlaceAuctionBid } from './dftx/dftx_loans';
import { SetGovernance, SetGovernanceHeight, CreateCfp, CreateVoc, Vote } from './dftx/dftx_governance';
import { ICXCreateOrder, ICXMakeOffer, ICXCloseOrder, ICXCloseOffer, ICXSubmitDFCHTLC, ICXSubmitEXTHTLC, ICXClaimDFCHTLC } from './dftx/dftx_icxorderbook';
import { CreateMasternode, ResignMasternode } from './dftx/dftx_masternode';
/**
 * @param num to map as OPCode, 1 byte long
 */
export declare function numAsOPCode(num: number): StaticCode;
/**
 * Unmapped OPCode are codes that don't yet have a class for it yet.
 */
export declare class OP_UNMAPPED extends StaticCode {
    constructor(code: number);
}
/**
 * All static OP_CODES & DEFI Custom Tx scripting
 * @see https://github.com/DeFiCh/ain/blob/master/src/script/script.h
 */
export declare const OP_CODES: {
    /**
     * Read SmartBuffer and create OPCode[] stack.
     *
     * Using P2WPKH redeem script as an example.
     *
     * Input Example: 1600140e7c0ab18b305bc987a266dc06de26fcfab4b56a
     *   0x16 (VarUInt)
     *   0x00 (OP_0)
     *   6ab5b4fafc26de06dc66a287c95b308bb10a7c0e (formatted as big endian)
     *
     * Output Example:
     *   OP_0
     *   OP_PUSHDATA<RIPEMD160(SHA256(pubkey))>
     *
     * @param {SmartBuffer} buffer to read from
     * @return {OPCode[]} read from buffer to OPCode
     */
    fromBuffer(buffer: SmartBuffer): OPCode[];
    /**
     * Converts OPCode[] and write it into SmartBuffer.
     *
     * Using P2PKH redeem script as an example.
     *
     * Input Example:
     *   OP_DUP
     *   OP_HASH160
     *   OP_PUSHDATA<RIPEMD160(SHA256(pubkey))>
     *   OP_EQUALVERIFY
     *   OP_CHECKSIG
     *
     * Output Example: 1976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac
     *   0x19 (VarUInt)
     *   0x76 (OP_DUP)
     *   0xa9 (OP_HASH160)
     *   5981aa7f16f0e20cd5b2216abe4d7eeedb42de3b (formatted as big endian)
     *   0x88 (OP_EQUALVERIFY)
     *   0xac (OP_CHECKSIG)
     *
     * @param {OPCode[]} stack to convert into raw buffer
     * @param {SmartBuffer} buffer to write to
     */
    toBuffer(stack: OPCode[], buffer: SmartBuffer): void;
    OP_DEFI_TX: (dftx: DfTx<any>) => OP_DEFI_TX;
    OP_DEFI_TX_POOL_SWAP: (poolSwap: PoolSwap) => OP_DEFI_TX;
    OP_DEFI_TX_COMPOSITE_SWAP: (compositeSwap: CompositeSwap) => OP_DEFI_TX;
    OP_DEFI_TX_POOL_ADD_LIQUIDITY: (poolAddLiquidity: PoolAddLiquidity) => OP_DEFI_TX;
    OP_DEFI_TX_POOL_REMOVE_LIQUIDITY: (poolRemoveLiquidity: PoolRemoveLiquidity) => OP_DEFI_TX;
    OP_DEFI_TX_POOL_CREATE_PAIR: (poolCreatePair: PoolCreatePair) => OP_DEFI_TX;
    OP_DEFI_TX_POOL_UPDATE_PAIR: (poolCreatePair: PoolUpdatePair) => OP_DEFI_TX;
    OP_DEFI_TX_TOKEN_MINT: (tokenMint: TokenMint) => OP_DEFI_TX;
    OP_DEFI_TX_TOKEN_CREATE: (tokenCreate: TokenCreate) => OP_DEFI_TX;
    OP_DEFI_TX_TOKEN_UPDATE: (tokenUpdate: TokenUpdate) => OP_DEFI_TX;
    OP_DEFI_TX_TOKEN_UPDATE_ANY: (tokenUpdateAny: TokenUpdateAny) => OP_DEFI_TX;
    OP_DEFI_TX_UTXOS_TO_ACCOUNT: (utxosToAccount: UtxosToAccount) => OP_DEFI_TX;
    OP_DEFI_TX_ACCOUNT_TO_UTXOS: (accountToUtxos: AccountToUtxos) => OP_DEFI_TX;
    OP_DEFI_TX_ACCOUNT_TO_ACCOUNT: (accountToAccount: AccountToAccount) => OP_DEFI_TX;
    OP_DEFI_TX_ANY_ACCOUNT_TO_ACCOUNT: (anyAccountToAccount: AnyAccountToAccount) => OP_DEFI_TX;
    OP_DEFI_TX_APPOINT_ORACLE: (appointOracle: AppointOracle) => OP_DEFI_TX;
    OP_DEFI_TX_REMOVE_ORACLE: (removeOracle: RemoveOracle) => OP_DEFI_TX;
    OP_DEFI_TX_UPDATE_ORACLE: (updateOracle: UpdateOracle) => OP_DEFI_TX;
    OP_DEFI_TX_SET_ORACLE_DATA: (setOracleData: SetOracleData) => OP_DEFI_TX;
    OP_DEFI_TX_AUTO_AUTH_PREP: () => OP_DEFI_TX;
    OP_DEFI_TX_CREATE_MASTER_NODE: (createMasterNode: CreateMasternode) => OP_DEFI_TX;
    OP_DEFI_TX_RESIGN_MASTER_NODE: (resignMasternode: ResignMasternode) => OP_DEFI_TX;
    OP_DEFI_TX_SET_GOVERNANCE: (setGovernance: SetGovernance) => OP_DEFI_TX;
    OP_DEFI_TX_SET_GOVERNANCE_HEIGHT: (setGovernanceHeight: SetGovernanceHeight) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_CREATE_ORDER: (createOrder: ICXCreateOrder) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_MAKE_OFFER: (makeOffer: ICXMakeOffer) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_CLOSE_ORDER: (closeOrder: ICXCloseOrder) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_CLOSE_OFFER: (closeOffer: ICXCloseOffer) => OP_DEFI_TX;
    OP_DEFI_TX_CREATE_CFP: (createCfp: CreateCfp) => OP_DEFI_TX;
    OP_DEFI_TX_CREATE_VOC: (createVoc: CreateVoc) => OP_DEFI_TX;
    OP_DEFI_TX_VOTE: (vote: Vote) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_SUBMIT_DFC_HTLC: (icxSubmitDFCHTLC: ICXSubmitDFCHTLC) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_SUBMIT_EXT_HTLC: (icxSubmitEXTHTLC: ICXSubmitEXTHTLC) => OP_DEFI_TX;
    OP_DEFI_TX_ICX_CLAIM_DFC_HTLC: (icxClaimDFCHTLC: ICXClaimDFCHTLC) => OP_DEFI_TX;
    OP_DEFI_TX_SET_LOAN_SCHEME: (setLoanScheme: SetLoanScheme) => OP_DEFI_TX;
    OP_DEFI_TX_DESTROY_LOAN_SCHEME: (destroyLoanScheme: DestroyLoanScheme) => OP_DEFI_TX;
    OP_DEFI_TX_SET_DEFAULT_LOAN_SCHEME: (setDefaultLoanScheme: SetDefaultLoanScheme) => OP_DEFI_TX;
    OP_DEFI_TX_SET_COLLATERAL_TOKEN: (setCollateralToken: SetCollateralToken) => OP_DEFI_TX;
    OP_DEFI_TX_SET_LOAN_TOKEN: (setLoanToken: SetLoanToken) => OP_DEFI_TX;
    OP_DEFI_TX_UPDATE_LOAN_TOKEN: (updateLoanToken: UpdateLoanToken) => OP_DEFI_TX;
    OP_DEFI_TX_CREATE_VAULT: (createVault: CreateVault) => OP_DEFI_TX;
    OP_DEFI_TX_UPDATE_VAULT: (updateVault: UpdateVault) => OP_DEFI_TX;
    OP_DEFI_TX_DEPOSIT_TO_VAULT: (depositToVault: DepositToVault) => OP_DEFI_TX;
    OP_DEFI_TX_WITHDRAW_FROM_VAULT: (WithdrawFromVault: WithdrawFromVault) => OP_DEFI_TX;
    OP_DEFI_TX_CLOSE_VAULT: (closeVault: CloseVault) => OP_DEFI_TX;
    OP_DEFI_TX_TAKE_LOAN: (takeLoan: TakeLoan) => OP_DEFI_TX;
    OP_DEFI_TX_PAYBACK_LOAN: (paybackLoan: PaybackLoan) => OP_DEFI_TX;
    OP_DEFI_TX_AUCTION_BID: (placeAuctionBid: PlaceAuctionBid) => OP_DEFI_TX;
    OP_0: constants.OP_0;
    OP_FALSE: constants.OP_FALSE;
    /**
     * OP_PUSHDATA1 use OP_PUSHDATA
     * OP_PUSHDATA2 use OP_PUSHDATA
     * OP_PUSHDATA4 use OP_PUSHDATA
     * @param {Buffer} buffer
     * @param {'little' | 'big'} endian order
     */
    OP_PUSHDATA: (buffer: Buffer, endian: 'little' | 'big') => OP_PUSHDATA;
    /**
     * @param {Buffer} buffer in little endian
     */
    OP_PUSHDATA_LE: (buffer: Buffer) => OP_PUSHDATA;
    /**
     * @param {string} hex in little endian
     */
    OP_PUSHDATA_HEX_LE: (hex: string) => OP_PUSHDATA;
    OP_1NEGATE: constants.OP_1NEGATE;
    OP_RESERVED: constants.OP_RESERVED;
    OP_1: constants.OP_1;
    OP_TRUE: constants.OP_TRUE;
    OP_2: constants.OP_2;
    OP_3: constants.OP_3;
    OP_4: constants.OP_4;
    OP_5: constants.OP_5;
    OP_6: constants.OP_6;
    OP_7: constants.OP_7;
    OP_8: constants.OP_8;
    OP_9: constants.OP_9;
    OP_10: constants.OP_10;
    OP_11: constants.OP_11;
    OP_12: constants.OP_12;
    OP_13: constants.OP_13;
    OP_14: constants.OP_14;
    OP_15: constants.OP_15;
    OP_16: constants.OP_16;
    OP_NOP: control.OP_NOP;
    OP_VER: control.OP_VER;
    OP_IF: control.OP_IF;
    OP_NOTIF: control.OP_NOTIF;
    OP_VERIF: control.OP_VERIF;
    OP_VERNOTIF: control.OP_VERNOTIF;
    OP_ELSE: control.OP_ELSE;
    OP_ENDIF: control.OP_ENDIF;
    OP_VERIFY: control.OP_VERIFY;
    OP_RETURN: control.OP_RETURN;
    OP_TOALTSTACK: stack.OP_TOALTSTACK;
    OP_FROMALTSTACK: stack.OP_FROMALTSTACK;
    OP_2DROP: stack.OP_2DROP;
    OP_2DUP: stack.OP_2DUP;
    OP_3DUP: stack.OP_3DUP;
    OP_2OVER: stack.OP_2OVER;
    OP_2ROT: stack.OP_2ROT;
    OP_2SWAP: stack.OP_2SWAP;
    OP_IFDUP: stack.OP_IFDUP;
    OP_DEPTH: stack.OP_DEPTH;
    OP_DROP: stack.OP_DROP;
    OP_DUP: stack.OP_DUP;
    OP_NIP: stack.OP_NIP;
    OP_OVER: stack.OP_OVER;
    OP_PICK: stack.OP_PICK;
    OP_ROLL: stack.OP_ROLL;
    OP_ROT: stack.OP_ROT;
    OP_SWAP: stack.OP_SWAP;
    OP_TUCK: stack.OP_TUCK;
    OP_CAT: splice.OP_CAT;
    OP_SUBSTR: splice.OP_SUBSTR;
    OP_LEFT: splice.OP_LEFT;
    OP_RIGHT: splice.OP_RIGHT;
    OP_SIZE: splice.OP_SIZE;
    OP_INVERT: bitwise.OP_INVERT;
    OP_AND: bitwise.OP_AND;
    OP_OR: bitwise.OP_OR;
    OP_XOR: bitwise.OP_XOR;
    OP_EQUAL: bitwise.OP_EQUAL;
    OP_EQUALVERIFY: bitwise.OP_EQUALVERIFY;
    OP_RESERVED1: bitwise.OP_RESERVED1;
    OP_RESERVED2: bitwise.OP_RESERVED2;
    OP_1ADD: arithmetic.OP_1ADD;
    OP_1SUB: arithmetic.OP_1SUB;
    OP_2MUL: arithmetic.OP_2MUL;
    OP_2DIV: arithmetic.OP_2DIV;
    OP_NEGATE: arithmetic.OP_NEGATE;
    OP_ABS: arithmetic.OP_ABS;
    OP_NOT: arithmetic.OP_NOT;
    OP_0NOTEQUAL: arithmetic.OP_0NOTEQUAL;
    OP_ADD: arithmetic.OP_ADD;
    OP_SUB: arithmetic.OP_SUB;
    OP_MUL: arithmetic.OP_MUL;
    OP_DIV: arithmetic.OP_DIV;
    OP_MOD: arithmetic.OP_MOD;
    OP_LSHIFT: arithmetic.OP_LSHIFT;
    OP_RSHIFT: arithmetic.OP_RSHIFT;
    OP_BOOLAND: arithmetic.OP_BOOLAND;
    OP_BOOLOR: arithmetic.OP_BOOLOR;
    OP_NUMEQUAL: arithmetic.OP_NUMEQUAL;
    OP_NUMEQUALVERIFY: arithmetic.OP_NUMEQUALVERIFY;
    OP_NUMNOTEQUAL: arithmetic.OP_NUMNOTEQUAL;
    OP_LESSTHAN: arithmetic.OP_LESSTHAN;
    OP_GREATERTHAN: arithmetic.OP_GREATERTHAN;
    OP_LESSTHANOREQUAL: arithmetic.OP_LESSTHANOREQUAL;
    OP_GREATERTHANOREQUAL: arithmetic.OP_GREATERTHANOREQUAL;
    OP_MIN: arithmetic.OP_MIN;
    OP_MAX: arithmetic.OP_MAX;
    OP_WITHIN: arithmetic.OP_WITHIN;
    OP_RIPEMD160: crypto.OP_RIPEMD160;
    OP_SHA1: crypto.OP_SHA1;
    OP_SHA256: crypto.OP_SHA256;
    OP_HASH160: crypto.OP_HASH160;
    OP_HASH256: crypto.OP_HASH256;
    OP_CODESEPARATOR: crypto.OP_CODESEPARATOR;
    OP_CHECKSIG: crypto.OP_CHECKSIG;
    OP_CHECKSIGVERIFY: crypto.OP_CHECKSIGVERIFY;
    OP_CHECKMULTISIG: crypto.OP_CHECKMULTISIG;
    OP_CHECKMULTISIGVERIFY: crypto.OP_CHECKMULTISIGVERIFY;
    OP_NOP1: expansion.OP_NOP1;
    OP_CHECKLOCKTIMEVERIFY: expansion.OP_CHECKLOCKTIMEVERIFY;
    OP_NOP2: expansion.OP_NOP2;
    OP_CHECKSEQUENCEVERIFY: expansion.OP_CHECKSEQUENCEVERIFY;
    OP_NOP3: expansion.OP_NOP3;
    OP_NOP4: expansion.OP_NOP4;
    OP_NOP5: expansion.OP_NOP5;
    OP_NOP6: expansion.OP_NOP6;
    OP_NOP7: expansion.OP_NOP7;
    OP_NOP8: expansion.OP_NOP8;
    OP_NOP9: expansion.OP_NOP9;
    OP_NOP10: expansion.OP_NOP10;
    OP_INVALIDOPCODE: invalid.OP_INVALIDOPCODE;
};
//# sourceMappingURL=mapping.d.ts.map