export interface AdaptorSignature {
    signature: Buffer;
    proof: Buffer;
}
export interface ChangeOutputAndFees {
    changeOutput: TxOutput;
    fundFee: bigint;
    cetFee: bigint;
}
export interface DdkDlcInputInfo {
    fundTx: DdkTransaction;
    fundVout: number;
    localFundPubkey: Buffer;
    remoteFundPubkey: Buffer;
    fundAmount: bigint;
    maxWitnessLen: number;
    inputSerialId: bigint;
    contractId: Buffer;
}
export interface DlcOutcome {
    localPayout: bigint;
    remotePayout: bigint;
}
export interface DdkDlcTransactions {
    fund: DdkTransaction;
    cets: Array<DdkTransaction>;
    refund: DdkTransaction;
    fundingScriptPubkey: Buffer;
}
export interface DdkOracleInfo {
    publicKey: Buffer;
    nonces: Array<Buffer>;
}
export interface PartyParams {
    fundPubkey: Buffer;
    changeScriptPubkey: Buffer;
    changeSerialId: bigint;
    payoutScriptPubkey: Buffer;
    payoutSerialId: bigint;
    inputs: Array<TxInputInfo>;
    inputAmount: bigint;
    collateral: bigint;
    dlcInputs: Array<DdkDlcInputInfo>;
}
export interface Payout {
    offer: bigint;
    accept: bigint;
}
export interface DdkTransaction {
    version: number;
    lockTime: number;
    inputs: Array<TxInput>;
    outputs: Array<TxOutput>;
    rawBytes: Buffer;
}
export interface TxInput {
    txid: string;
    vout: number;
    scriptSig: Buffer;
    sequence: number;
    witness: Array<Buffer>;
}
export interface TxInputInfo {
    txid: string;
    vout: number;
    scriptSig: Buffer;
    maxWitnessLength: number;
    serialId: bigint;
}
export interface TxOutput {
    value: bigint;
    scriptPubkey: Buffer;
}
export interface DdkInterface {
    createCet(localOutput: TxOutput, localPayoutSerialId: bigint, remoteOutput: TxOutput, remotePayoutSerialId: bigint, fundTxId: string, fundVout: number, lockTime: number): DdkTransaction;
    createCetAdaptorSignatureFromOracleInfo(cet: DdkTransaction, oracleInfo: DdkOracleInfo, fundingSk: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Buffer>): AdaptorSignature;
    createCetAdaptorSigsFromOracleInfo(cets: Array<DdkTransaction>, oracleInfo: Array<DdkOracleInfo>, fundingSecretKey: Buffer, fundingScriptPubkey: Buffer, fundOutputValue: bigint, msgs: Array<Array<Array<Buffer>>>): Array<AdaptorSignature>;
    verifyCetAdaptorSigFromOracleInfo(adaptorSig: AdaptorSignature, cet: DdkTransaction, oracleInfo: Array<DdkOracleInfo>, pubkey: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Array<Buffer>>): boolean;
    verifyCetAdaptorSigsFromOracleInfo(adaptorSigs: Array<AdaptorSignature>, cets: Array<DdkTransaction>, oracleInfo: Array<DdkOracleInfo>, pubkey: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Array<Array<Buffer>>>): boolean;
    createCets(fundTxId: string, fundVout: number, localFinalScriptPubkey: Buffer, remoteFinalScriptPubkey: Buffer, outcomes: Array<Payout>, lockTime: number, localSerialId: bigint, remoteSerialId: bigint): Array<DdkTransaction>;
    createDlcTransactions(outcomes: Array<Payout>, localParams: PartyParams, remoteParams: PartyParams, refundLocktime: number, feeRate: bigint, fundLockTime: number, cetLockTime: number, fundOutputSerialId: bigint): DdkDlcTransactions;
    createFundTxLockingScript(localFundPubkey: Buffer, remoteFundPubkey: Buffer): Buffer;
    createRefundTransaction(localFinalScriptPubkey: Buffer, remoteFinalScriptPubkey: Buffer, localAmount: bigint, remoteAmount: bigint, lockTime: number, fundTxId: string, fundVout: number): DdkTransaction;
    createSplicedDlcTransactions(outcomes: Array<Payout>, localParams: PartyParams, remoteParams: PartyParams, refundLocktime: number, feeRate: bigint, fundLockTime: number, cetLockTime: number, fundOutputSerialId: bigint): DdkDlcTransactions;
    getChangeOutputAndFees(params: PartyParams, feeRate: bigint): ChangeOutputAndFees;
    getRawFundingTransactionInputSignature(fundingTransaction: DdkTransaction, privkey: Buffer, prevTxId: string, prevTxVout: number, value: bigint): Buffer;
    getTotalInputVsize(inputs: Array<TxInputInfo>): number;
    isDustOutput(output: TxOutput): boolean;
    signFundTransactionInput(fundTransaction: DdkTransaction, privkey: Buffer, prevTxId: string, prevTxVout: number, value: bigint): DdkTransaction;
    verifyFundTxSignature(fundTx: DdkTransaction, signature: Buffer, pubkey: Buffer, txid: string, vout: number, inputAmount: bigint): boolean;
    signCet(cet: DdkTransaction, adaptorSignature: Buffer, oracleSignatures: Array<Buffer>, fundingSecretKey: Buffer, otherPubkey: Buffer, fundingScriptPubkey: Buffer, fundOutputValue: bigint): DdkTransaction;
    convertMnemonicToSeed(mnemonic: string, passphrase?: string | null): Buffer;
    createExtkeyFromSeed(seed: Buffer, network: string): Buffer;
    createExtkeyFromParentPath(extkey: Buffer, path: string): Buffer;
    getPubkeyFromExtkey(extkey: Buffer, network: string): Buffer;
    createXprivFromParentPath(seedOrXpriv: Buffer, baseDerivationPath: string, network: string, path: string): Buffer;
    getXpubFromXpriv(xpriv: Buffer, network: string): Buffer;
    version(): string;
    addSignatureToTransaction(tx: DdkTransaction, signature: Buffer, pubkey: Buffer, inputIndex: number): DdkTransaction;
    signMultiSigInput(tx: DdkTransaction, dlcInput: DdkDlcInputInfo, localPrivkey: Buffer, remoteSignature: Buffer): DdkTransaction;
}
export declare function createCet(localOutput: TxOutput, localPayoutSerialId: bigint, remoteOutput: TxOutput, remotePayoutSerialId: bigint, fundTxId: string, fundVout: number, lockTime: number): DdkTransaction;
export declare function createCetAdaptorSignatureFromOracleInfo(cet: DdkTransaction, oracleInfo: DdkOracleInfo, fundingSk: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Buffer>): AdaptorSignature;
export declare function createCetAdaptorSigsFromOracleInfo(cets: Array<DdkTransaction>, oracleInfo: Array<DdkOracleInfo>, fundingSecretKey: Buffer, fundingScriptPubkey: Buffer, fundOutputValue: bigint, msgs: Array<Array<Array<Buffer>>>): Array<AdaptorSignature>;
export declare function verifyCetAdaptorSigFromOracleInfo(adaptorSig: AdaptorSignature, cet: DdkTransaction, oracleInfo: Array<DdkOracleInfo>, pubkey: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Array<Buffer>>): boolean;
export declare function verifyCetAdaptorSigsFromOracleInfo(adaptorSigs: Array<AdaptorSignature>, cets: Array<DdkTransaction>, oracleInfo: Array<DdkOracleInfo>, pubkey: Buffer, fundingScriptPubkey: Buffer, totalCollateral: bigint, msgs: Array<Array<Array<Buffer>>>): boolean;
export declare function createCets(fundTxId: string, fundVout: number, localFinalScriptPubkey: Buffer, remoteFinalScriptPubkey: Buffer, outcomes: Array<Payout>, lockTime: number, localSerialId: bigint, remoteSerialId: bigint): Array<DdkTransaction>;
export declare function createDlcTransactions(outcomes: Array<Payout>, localParams: PartyParams, remoteParams: PartyParams, refundLocktime: number, feeRate: bigint, fundLockTime: number, cetLockTime: number, fundOutputSerialId: bigint): DdkDlcTransactions;
export declare function createFundTxLockingScript(localFundPubkey: Buffer, remoteFundPubkey: Buffer): Buffer;
export declare function createRefundTransaction(localFinalScriptPubkey: Buffer, remoteFinalScriptPubkey: Buffer, localAmount: bigint, remoteAmount: bigint, lockTime: number, fundTxId: string, fundVout: number): DdkTransaction;
export declare function createSplicedDlcTransactions(outcomes: Array<Payout>, localParams: PartyParams, remoteParams: PartyParams, refundLocktime: number, feeRate: bigint, fundLockTime: number, cetLockTime: number, fundOutputSerialId: bigint): DdkDlcTransactions;
export declare function getChangeOutputAndFees(params: PartyParams, feeRate: bigint): ChangeOutputAndFees;
export declare function getRawFundingTransactionInputSignature(fundingTransaction: DdkTransaction, privkey: Buffer, prevTxId: string, prevTxVout: number, value: bigint): Buffer;
export declare function getTotalInputVsize(inputs: Array<TxInputInfo>): number;
export declare function isDustOutput(output: TxOutput): boolean;
export declare function signFundTransactionInput(fundTransaction: DdkTransaction, privkey: Buffer, prevTxId: string, prevTxVout: number, value: bigint): DdkTransaction;
export declare function verifyFundTxSignature(fundTx: DdkTransaction, signature: Buffer, pubkey: Buffer, txid: string, vout: number, inputAmount: bigint): boolean;
export declare function version(): string;
export declare function signCet(cet: DdkTransaction, adaptorSignature: Buffer, oracleSignatures: Array<Buffer>, fundingSecretKey: Buffer, otherPubkey: Buffer, fundingScriptPubkey: Buffer, fundOutputValue: bigint): DdkTransaction;
export declare function convertMnemonicToSeed(mnemonic: string, passphrase?: string | null): Buffer;
export declare function createExtkeyFromSeed(seed: Buffer, network: string): Buffer;
export declare function createExtkeyFromParentPath(extkey: Buffer, path: string): Buffer;
export declare function getPubkeyFromExtkey(extkey: Buffer, network: string): Buffer;
export declare function createXprivFromParentPath(seedOrXpriv: Buffer, baseDerivationPath: string, network: string, path: string): Buffer;
export declare function getXpubFromXpriv(xpriv: Buffer, network: string): Buffer;
export declare function addSignatureToTransaction(tx: DdkTransaction, signature: Buffer, pubkey: Buffer, inputIndex: number): DdkTransaction;
export declare function signMultiSigInput(tx: DdkTransaction, dlcInput: DdkDlcInputInfo, localPrivkey: Buffer, remoteSignature: Buffer): DdkTransaction;
