@btc-vision/transaction
Version:
OPNet transaction library allows you to create and sign transactions for the OPNet network.
61 lines (60 loc) • 3.1 kB
TypeScript
import { P2TRPayment, Psbt, PsbtInput, Signer, TapScriptSig, Taptree } from '@btc-vision/bitcoin';
import { TransactionBuilder } from './TransactionBuilder.js';
import { TransactionType } from '../enums/TransactionType.js';
import { ITransactionParameters } from '../interfaces/ITransactionParameters.js';
import { ECPairInterface } from 'ecpair';
export interface MultiSignParameters extends Omit<ITransactionParameters, 'gasSatFee' | 'priorityFee' | 'signer'> {
readonly pubkeys: Buffer[];
readonly minimumSignatures: number;
readonly from?: undefined;
readonly to?: undefined;
readonly psbt?: Psbt;
readonly receiver: string;
readonly requestedAmount: bigint;
readonly refundVault: string;
}
export interface MultiSignFromBase64Params extends Omit<MultiSignParameters, 'psbt'> {
readonly psbt: string;
}
export declare class MultiSignTransaction extends TransactionBuilder<TransactionType.MULTI_SIG> {
static readonly LOCK_LEAF_SCRIPT: Buffer;
static readonly signHashTypesArray: number[];
static readonly numsPoint: Buffer<ArrayBuffer>;
type: TransactionType.MULTI_SIG;
protected targetScriptRedeem: P2TRPayment | null;
protected leftOverFundsScriptRedeem: P2TRPayment | null;
protected readonly compiledTargetScript: Buffer;
protected readonly scriptTree: Taptree;
protected readonly publicKeys: Buffer[];
protected readonly minimumSignatures: number;
protected readonly originalInputCount: number;
protected readonly requestedAmount: bigint;
protected readonly receiver: string;
protected readonly refundVault: string;
protected readonly sighashTypes: number[];
constructor(parameters: MultiSignParameters);
static fromBase64(params: MultiSignFromBase64Params): MultiSignTransaction;
static verifyIfSigned(psbt: Psbt, signerPubKey: Buffer): boolean;
static signPartial(psbt: Psbt, signer: Signer | ECPairInterface, originalInputCount: number, minimums: number[]): {
final: boolean;
signed: boolean;
};
static partialFinalizer: (inputIndex: number, input: PsbtInput, partialSignatures: Buffer[], orderedPubKeys: Buffer[], isFinal: boolean) => {
finalScriptWitness: Buffer<ArrayBufferLike>;
};
static dedupeSignatures(original: TapScriptSig[], partial: TapScriptSig[]): TapScriptSig[];
static attemptFinalizeInputs(psbt: Psbt, startIndex: number, orderedPubKeys: Buffer[][], isFinal: boolean): boolean;
finalizeTransactionInputs(): boolean;
signPSBT(): Promise<Psbt>;
protected buildTransaction(): Promise<void>;
protected internalBuildTransaction(transaction: Psbt, checkPartialSigs?: boolean): Promise<boolean>;
protected signInputs(_transaction: Psbt): Promise<void>;
protected generateScriptAddress(): P2TRPayment;
protected generateTapData(): P2TRPayment;
protected getScriptSolution(input: PsbtInput): Buffer[];
protected getScriptTree(): Taptree;
private getTotalOutputAmount;
private calculateOutputLeftAmountFromVaults;
private customFinalizer;
private generateRedeemScripts;
}