UNPKG

liquidjs-lib

Version:

Client-side Liquid JavaScript library

44 lines (43 loc) 2.76 kB
/// <reference types="node" /> import { Output } from './transaction'; import type { Secp256k1Interface as ZKPInterface } from './secp256k1-zkp'; export interface UnblindOutputResult { value: string; valueBlindingFactor: Buffer; asset: Buffer; assetBlindingFactor: Buffer; } export interface RangeProofInfoResult { ctExp: number; ctBits: number; minValue: number; maxValue: number; } export declare class Confidential { private zkp; constructor(zkp: ZKPInterface); nonceHash(pubkey: Buffer, privkey: Buffer): Buffer; valueBlindingFactor(inValues: string[], outValues: string[], inAssetBlinders: Buffer[], outAssetBlinders: Buffer[], inValueBlinders: Buffer[], outValueBlinders: Buffer[]): Buffer; valueCommitment(value: string, generator: Buffer, blinder: Buffer): Buffer; assetCommitment(asset: Buffer, factor: Buffer): Buffer; unblindOutputWithKey(out: Output, blindingPrivKey: Buffer): UnblindOutputResult; unblindOutputWithNonce(out: Output, nonce: Buffer): UnblindOutputResult; rangeProofInfo(proof: Buffer): RangeProofInfoResult; /** * nonceHash from blinding key + ephemeral key and then rangeProof computation */ rangeProofWithNonceHash(blindingPubkey: Buffer, ephemeralPrivkey: Buffer, value: string, asset: Buffer, valueCommitment: Buffer, assetCommitment: Buffer, valueBlinder: Buffer, assetBlinder: Buffer, scriptPubkey: Buffer, minValue?: string, exp?: string, minBits?: string): Buffer; rangeProofVerify(proof: Buffer, valueCommitment: Buffer, assetCommitment: Buffer, script?: Buffer): boolean; /** * rangeProof computation without nonceHash step. */ rangeProof(value: string, asset: Buffer, valueCommitment: Buffer, assetCommitment: Buffer, valueBlinder: Buffer, assetBlinder: Buffer, nonce: Buffer, scriptPubkey: Buffer, minValue?: string, exp?: string, minBits?: string): Buffer; surjectionProof(outputAsset: Buffer, outputAssetBlindingFactor: Buffer, inputAssets: Buffer[], inputAssetBlindingFactors: Buffer[], seed: Buffer): Buffer; surjectionProofVerify(inAssets: Buffer[], inAssetBlinders: Buffer[], outAsset: Buffer, outAssetBlinder: Buffer, proof: Buffer): boolean; blindValueProof(value: string, valueCommitment: Buffer, assetCommitment: Buffer, valueBlinder: Buffer, nonce: Buffer): Buffer; blindAssetProof(asset: Buffer, assetCommitment: Buffer, assetBlinder: Buffer): Buffer; assetBlindProofVerify(asset: Buffer, assetCommitment: Buffer, proof: Buffer): boolean; isUnblindedAssetValid: (output: Output, unblinded: UnblindOutputResult) => boolean; } export declare function confidentialValueToSatoshi(value: Buffer): number; export declare function satoshiToConfidentialValue(amount: number): Buffer;