@proton/ccxt
Version:
A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
92 lines (91 loc) • 4.36 kB
TypeScript
import { mod } from './abstract/modular.js';
import { ProjPointType as PointType } from './abstract/weierstrass.js';
import type { Hex, PrivKey } from './abstract/utils.js';
import { bytesToNumberBE } from './abstract/utils.js';
import * as htf from './abstract/hash-to-curve.js';
export declare const secp256k1: Readonly<{
create: (hash: import("./abstract/utils.js").CHash) => import("./abstract/weierstrass.js").CurveFn;
CURVE: Readonly<{
readonly nBitLength: number;
readonly nByteLength: number;
readonly Fp: import("./abstract/modular.js").Field<bigint>;
readonly n: bigint;
readonly h: bigint;
readonly hEff?: bigint;
readonly Gx: bigint;
readonly Gy: bigint;
readonly allowInfinityPoint?: boolean;
readonly a: bigint;
readonly b: bigint;
readonly allowedPrivateKeyLengths?: readonly number[];
readonly wrapPrivateKey?: boolean;
readonly endo?: {
beta: bigint;
splitScalar: (k: bigint) => {
k1neg: boolean;
k1: bigint;
k2neg: boolean;
k2: bigint;
};
};
readonly isTorsionFree?: (c: import("./abstract/weierstrass.js").ProjConstructor<bigint>, point: PointType<bigint>) => boolean;
readonly clearCofactor?: (c: import("./abstract/weierstrass.js").ProjConstructor<bigint>, point: PointType<bigint>) => PointType<bigint>;
readonly hash: import("./abstract/utils.js").CHash;
readonly hmac: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;
readonly randomBytes: (bytesLength?: number) => Uint8Array;
lowS: boolean;
readonly bits2int?: (bytes: Uint8Array) => bigint;
readonly bits2int_modN?: (bytes: Uint8Array) => bigint;
}>;
getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;
getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;
sign: (msgHash: Hex, privKey: PrivKey, opts?: import("./abstract/weierstrass.js").SignOpts) => import("./abstract/weierstrass.js").SignatureType;
verify: (signature: Hex | {
r: bigint;
s: bigint;
}, msgHash: Hex, publicKey: Hex, opts?: import("./abstract/weierstrass.js").VerOpts) => boolean;
ProjectivePoint: import("./abstract/weierstrass.js").ProjConstructor<bigint>;
Signature: import("./abstract/weierstrass.js").SignatureConstructor;
utils: {
normPrivateKeyToScalar: (key: PrivKey) => bigint;
isValidPrivateKey(privateKey: PrivKey): boolean;
randomPrivateKey: () => Uint8Array;
precompute: (windowSize?: number, point?: PointType<bigint>) => PointType<bigint>;
};
}>;
declare function taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array;
/**
* lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.
* @returns valid point checked for being on-curve
*/
declare function lift_x(x: bigint): PointType<bigint>;
/**
* Schnorr public key is just `x` coordinate of Point as per BIP340.
*/
declare function schnorrGetPublicKey(privateKey: Hex): Uint8Array;
/**
* Creates Schnorr signature as per BIP340. Verifies itself before returning anything.
* auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
*/
declare function schnorrSign(message: Hex, privateKey: PrivKey, auxRand?: Hex): Uint8Array;
/**
* Verifies Schnorr signature.
* Will swallow errors & return false except for initial type validation of arguments.
*/
declare function schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean;
export declare const schnorr: {
getPublicKey: typeof schnorrGetPublicKey;
sign: typeof schnorrSign;
verify: typeof schnorrVerify;
utils: {
randomPrivateKey: () => Uint8Array;
lift_x: typeof lift_x;
pointToBytes: (point: PointType<bigint>) => Uint8Array;
numberToBytesBE: (n: bigint, len: number) => Uint8Array;
bytesToNumberBE: typeof bytesToNumberBE;
taggedHash: typeof taggedHash;
mod: typeof mod;
};
};
export declare const hashToCurve: (msg: Uint8Array, options?: htf.htfBasicOpts) => htf.H2CPoint<bigint>, encodeToCurve: (msg: Uint8Array, options?: htf.htfBasicOpts) => htf.H2CPoint<bigint>;
export {};