lotus-sdk
Version:
Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem
164 lines • 6.61 kB
TypeScript
import { BufferReader } from '../encoding/bufferreader.js';
import { BufferWriter } from '../encoding/bufferwriter.js';
import { Signature, SignatureSigningMethod } from '../crypto/signature.js';
import { Address } from '../address.js';
import { UnspentOutput, UnspentOutputData } from './unspentoutput.js';
import { Input, InputObject, MuSigTaprootInput } from './input.js';
import { Output, OutputObject } from './output.js';
import { Script } from '../script.js';
import { PrivateKey } from '../privatekey.js';
import { PublicKey } from '../publickey.js';
import { BN } from '../crypto/bn.js';
import { TransactionSignature } from './signature.js';
import type { Point } from '../crypto/point.js';
export interface TransactionData {
version?: number;
inputs?: InputObject[];
outputs?: OutputObject[];
nLockTime?: number;
changeScript?: Script | string;
changeAsm?: string;
changeIndex?: number;
fee?: number;
}
export interface TransactionObject {
txid: string;
hash: string;
version: number;
inputs: InputObject[];
outputs: OutputObject[];
nLockTime: number;
changeScript?: string;
changeAsm?: string;
changeIndex?: number;
fee?: number;
}
export declare class Transaction {
static readonly DUST_AMOUNT = 546;
static readonly FEE_SECURITY_MARGIN = 150;
static readonly NLOCKTIME_BLOCKHEIGHT_LIMIT = 500000000;
static readonly NLOCKTIME_MAX_VALUE = 4294967295;
static readonly FEE_PER_KB = 1000;
static readonly CHANGE_OUTPUT_MAX_SIZE: number;
static readonly MAXIMUM_EXTRA_SIZE: number;
static readonly NULL_HASH: Buffer<ArrayBuffer>;
inputs: Input[];
outputs: Output[];
_version: number;
nLockTime: number;
private _inputAmount?;
private _outputAmount?;
private _changeScript?;
private _changeIndex?;
private _fee?;
private _feePerKb?;
private _feePerByte?;
private _hash?;
private _txid?;
get spentOutputs(): Output[] | undefined;
constructor(serialized?: TransactionData | Transaction | Buffer | string);
static create(serialized?: TransactionData | Transaction | Buffer | string): Transaction;
static shallowCopy(transaction: Transaction): Transaction;
static fromBuffer(buffer: Buffer): Transaction;
static fromBufferReader(reader: BufferReader): Transaction;
static fromObject(arg: TransactionData | Transaction): Transaction;
static fromString(str: string): Transaction;
get hash(): string;
get id(): string;
get txid(): string;
get inputAmount(): number;
get outputAmount(): number;
get version(): number;
feePerByte(feePerByte: number): void;
fee(amount: number): void;
feePerKb(amount: number): void;
set version(version: number);
private _getHash;
private _getTxid;
private _getTxInputHashes;
private _getTxOutputHashes;
private _computeMerkleRoot;
private _getInputAmount;
private _getOutputAmount;
private _newTransaction;
serialize(unsafe?: boolean | {
disableAll?: boolean;
}): string;
uncheckedSerialize(): string;
checkedSerialize(opts?: {
disableAll?: boolean;
disableDustOutputs?: boolean;
disableIsFullySigned?: boolean;
}): string;
getSerializationError(opts?: {
disableAll?: boolean;
disableDustOutputs?: boolean;
disableIsFullySigned?: boolean;
}): Error | null;
private _hasDustOutputs;
private _isMissingSignatures;
private _hasInvalidSatoshis;
isFullySigned(): boolean;
toBuffer(): Buffer;
toBufferWriter(writer?: BufferWriter): BufferWriter;
fromBuffer(buffer: Buffer): Transaction;
fromBufferReader(reader: BufferReader): Transaction;
fromString(str: string): Transaction;
toObject(): TransactionObject;
toJSON: () => TransactionObject;
fromObject(arg: TransactionData | Transaction): Transaction;
addInput(input: Input): Transaction;
addOutput(output: Output): Transaction;
clone(): Transaction;
toString(): string;
inspect(): string;
from(utxos: UnspentOutput[] | UnspentOutputData[] | UnspentOutput | UnspentOutputData, pubkeys?: PublicKey[], threshold?: number, opts?: {
noSorting?: boolean;
}): Transaction;
change(address: Address | string): Transaction;
to(address: Address | string | Array<{
address: Address | string;
satoshis: number;
}>, amount: number | string | bigint): Transaction;
sign(privateKey: PrivateKey | string | Array<PrivateKey | string>, sigtype?: number | null, signingMethod?: SignatureSigningMethod): Transaction;
signSchnorr(privateKey: PrivateKey | string | Array<PrivateKey | string>): Transaction;
getMuSig2Inputs(): MuSigTaprootInput[];
getMuSig2Sighash(inputIndex: number): Buffer;
addMuSig2Nonce(inputIndex: number, signerIndex: number, nonce: [Point, Point]): Transaction;
addMuSig2PartialSignature(inputIndex: number, signerIndex: number, partialSig: BN): Transaction;
finalizeMuSig2Signatures(): Transaction;
getSignatures(privKey: PrivateKey | string, sigtype?: number, signingMethod?: string): TransactionSignature[];
applySignature(signature: TransactionSignature, signingMethod?: SignatureSigningMethod): Transaction;
isValidSignature(sig: TransactionSignature): boolean;
verifySignature(sig: Signature, pubkey: PublicKey, nin: number, subscript: Script, satoshisBN: BN, flags?: number, signingMethod?: string): boolean;
lockUntilDate(time: Date | number): Transaction;
lockUntilBlockHeight(height: number): Transaction;
getLockTime(): Date | number | null;
hasAllUtxoInfo(): boolean;
addData(value: Buffer | string): Transaction;
clearOutputs(): Transaction;
removeOutput(index: number): void;
sort(): Transaction;
sortInputs(sortingFunction: (inputs: Input[]) => Input[]): Transaction;
sortOutputs(sortingFunction: (outputs: Output[]) => Output[]): Transaction;
shuffleOutputs(): Transaction;
removeInput(index: number): void;
getFee(): number;
getChangeOutput(): Output | null;
verify(): string | boolean;
private _verifyScripts;
isCoinbase(): boolean;
uncheckedAddInput(input: Input): Transaction;
private _newOutputOrder;
private _fromNonP2SH;
private _fromMultisigUtxo;
private _updateChangeOutput;
private _getUnspentValue;
private _clearSignatures;
private _estimateFee;
private static _getVarintSize;
private _estimateSize;
private _removeOutput;
private _addOutput;
}
//# sourceMappingURL=transaction.d.ts.map