liquidjs-lib
Version:
Client-side Liquid JavaScript library
43 lines (42 loc) • 2.67 kB
TypeScript
/// <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;
}
export declare function confidentialValueToSatoshi(value: Buffer): number;
export declare function satoshiToConfidentialValue(amount: number): Buffer;