/// <reference types="node" />
import { bsv } from "scryptlib";
import { entry, marketInfo } from "./pm";
import { balance } from "./lmsr";
import { rabinPrivKey, rabinPubKey } from "rabinsig";
import { version } from "./contracts";
export declare const DUST = 546;
export declare function getAsmFromJS(inputs: any[]): string;
export declare function buildNewMarketTx(market: marketInfo, feePerByte?: number): bsv.Transaction;
export declare function getMarketCreationTx(market: marketInfo, prevValaIndexTx: bsv.Transaction, prevValaIndexOutputIndex?: number, feePerByte?: number): bsv.Transaction;
export declare function getUpdateMarketTx(prevTx: bsv.Transaction, market: marketInfo, outputIndex?: number, feePerByte?: number, unlockingScript?: bsv.Script): bsv.Transaction;
export declare function getPreimage(prevTx: bsv.Transaction, newTx: bsv.Transaction, signSighash: number, outputIndex?: number, inputIndex?: number): Buffer;
export declare function getOracleRabinKeyFromScript(script: bsv.Script): BigInt;
export declare function getMarketFromScript(script: bsv.Script): marketInfo;
export declare function isValidUpdateTx(tx: bsv.Transaction, prevTx: bsv.Transaction, outputIndex?: number, inputIndex?: number): boolean;
export declare function isValidMarketUpdateTx(tx: bsv.Transaction, prevTx: bsv.Transaction, entries: entry[], outputIndex?: number, inputIndex?: number): boolean;
export declare function isValidMarketTx(tx: bsv.Transaction, entries: entry[], outputIndex?: number): boolean;
export declare function getAddEntryTx(prevTx: bsv.Transaction, prevEntries: entry[], publicKey: bsv.PublicKey, balance: balance, payoutAddress: bsv.Address, utxos: bsv.Transaction.UnspentOutput[], spendingPrivKey: bsv.PrivateKey, outputIndex?: number, feePerByte?: number): bsv.Transaction;
export declare function getUpdateEntryTx(prevTx: bsv.Transaction, prevEntries: entry[], newBalance: balance, redeemLiquidityPoints: boolean, privateKey: bsv.PrivateKey, payoutAddress: bsv.Address, utxos: bsv.Transaction.UnspentOutput[], spendingPrivKey: bsv.PrivateKey, feePerByte?: number): bsv.Transaction;
export declare function getOracleCommitTx(prevTx: bsv.Transaction, rabinPrivKey: rabinPrivKey, payoutAddress: bsv.Address, utxos: bsv.Transaction.UnspentOutput[], spendingPrivKey: bsv.PrivateKey, outputIndex?: number, feePerByte?: number): bsv.Transaction;
export declare function getOracleVoteTx(prevTx: bsv.Transaction, vote: number, rabinPrivKey: rabinPrivKey, payoutAddress: bsv.Address, utxos: bsv.Transaction.UnspentOutput[], spendingPrivKey: bsv.PrivateKey, feePerByte?: number): bsv.Transaction;
export declare function getSignature(preimage: Buffer, privateKey: bsv.PrivateKey, sighashType: number): Buffer;
export declare function fundTx(tx: bsv.Transaction, privateKey: bsv.PrivateKey, changeAddress: bsv.Address, utxos: bsv.Transaction.UnspentOutput[], satPerByte?: number): bsv.Transaction;
export declare function getFunctionID(script: bsv.Script): number;
/**
 * Adds Vala Index input and output to the transaction
 */
export declare function addValaIndex(tx: bsv.Transaction, prevValaIndexTx: bsv.Transaction, prevValaIndexOutputIndex?: number): bsv.Transaction;
export declare function getNewOracleTx(pubKey: rabinPubKey, prevValaIndexTx: bsv.Transaction, prevValaIndexOutputIndex?: number, relayFee?: number, version?: version): bsv.Transaction;
export declare function getOracleUpdateTx(prevTx: bsv.Transaction, outputIndex?: number, burnSats?: number, details?: {
    description?: string;
    domain: string;
}, rabinPrivKey?: rabinPrivKey, relayFee?: number): bsv.Transaction;
export declare function getOracleBurnTx(prevTx: bsv.Transaction, burnSats: number, outputIndex?: number): bsv.Transaction;
export declare function getOracleUpdateDetailsTx(prevTx: bsv.Transaction, outputIndex: number | undefined, details: {
    description?: string;
    domain: string;
}, rabinPrivKey: rabinPrivKey): bsv.Transaction;
export declare function getUpdateMarketSettingsTx(prevTx: bsv.Transaction, settings: any, privateKey: bsv.PrivateKey, feePerByte?: number, outputIndex?: number): bsv.Transaction;
export declare function isValidOracleInitOutput(tx: bsv.Transaction, outputIndex?: number): boolean;
export declare function isValidMarketInitOutput(tx: bsv.Transaction, outputIndex?: number): boolean;
export declare function isValidScript(script: bsv.Script, version: version): boolean;
export declare function getDust(scriptPubKeySize: number, relayFee?: number): number;
