lotus-sdk
Version:
Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem
65 lines • 3.27 kB
TypeScript
import { PublicKey } from './publickey.js';
import { PrivateKey } from './privatekey.js';
import { Script } from './script.js';
export interface TapLeafNode {
script: Script | Buffer;
leafVersion?: number;
}
export interface TapBranchNode {
left: TapNode;
right: TapNode;
}
export type TapNode = TapLeafNode | TapBranchNode;
export interface TapLeaf {
script: Script;
leafVersion: number;
leafHash: Buffer;
merklePath: Buffer[];
}
export interface TapTreeBuildResult {
merkleRoot: Buffer;
leaves: TapLeaf[];
}
export declare const TAPROOT_LEAF_MASK = 254;
export declare const TAPROOT_LEAF_TAPSCRIPT = 192;
export declare const TAPROOT_CONTROL_BASE_SIZE = 33;
export declare const TAPROOT_CONTROL_NODE_SIZE = 32;
export declare const TAPROOT_CONTROL_MAX_NODE_COUNT = 128;
export declare const TAPROOT_CONTROL_MAX_SIZE: number;
export declare const TAPROOT_SCRIPTTYPE = 81;
export declare const TAPROOT_INTRO_SIZE = 3;
export declare const TAPROOT_SIZE_WITHOUT_STATE: number;
export declare const TAPROOT_SIZE_WITH_STATE: number;
export declare const TAPROOT_SIGHASH_TYPE: number;
export declare const TAPROOT_ANNEX_TAG = 80;
export declare function taggedHash(tag: string, data: Buffer): Buffer;
export declare function calculateTapTweak(internalPubKey: PublicKey, merkleRoot?: Buffer): Buffer;
export declare function calculateTapLeaf(script: Script | Buffer, leafVersion?: number): Buffer;
export declare function calculateTapBranch(left: Buffer, right: Buffer): Buffer;
export declare function tweakPublicKey(internalPubKey: PublicKey, merkleRoot?: Buffer): PublicKey;
export declare function tweakPrivateKey(internalPrivKey: PrivateKey, merkleRoot?: Buffer): PrivateKey;
export declare function isTapLeafNode(node: TapNode): node is TapLeafNode;
export declare function isTapBranchNode(node: TapNode): node is TapBranchNode;
export declare function buildTapTree(tree: TapNode): TapTreeBuildResult;
export declare function createControlBlock(internalPubKey: PublicKey, leafIndex: number, tree: TapNode): Buffer;
export declare function verifyTaprootCommitment(commitmentPubKey: PublicKey, internalPubKey: PublicKey, merkleRoot: Buffer): boolean;
export declare function isPayToTaproot(script: Script): boolean;
export declare function extractTaprootCommitment(script: Script): PublicKey;
export declare function extractTaprootState(script: Script): Buffer | null;
export declare function buildPayToTaproot(commitment: PublicKey, state?: Buffer): Script;
export declare function buildKeyPathTaproot(internalPubKey: PublicKey, state?: Buffer): Script;
export declare function buildScriptPathTaproot(internalPubKey: PublicKey, tree: TapNode, state?: Buffer): {
script: Script;
commitment: PublicKey;
merkleRoot: Buffer;
leaves: TapLeaf[];
};
export declare function verifyTaprootScriptPath(internalPubKey: Buffer, script: Script, commitmentPubKey: Buffer, leafVersion: number, merklePath: Buffer[], parity: number): boolean;
export interface TaprootVerifyResult {
success: boolean;
error?: string;
scriptToExecute?: Script;
stack?: Buffer[];
}
export declare function verifyTaprootSpend(scriptPubkey: Script, stack: Buffer[], flags: number): TaprootVerifyResult;
//# sourceMappingURL=taproot.d.ts.map