@ngraveio/ur-blockchain-commons
Version:
A JS implementation of Uniform Resources(UR) Registry specification from Blockchain Commons.
142 lines (141 loc) • 5.11 kB
TypeScript
import { Keypath } from './Keypath';
import { CoinInfo } from './CoinInfo';
interface HDKeyArgs {
isMaster?: boolean;
keyData: Buffer;
chainCode?: Buffer;
isPrivateKey?: boolean;
useInfo?: CoinInfo;
origin?: Keypath;
children?: Keypath;
parentFingerprint?: number;
name?: string;
note?: string;
}
declare const HDKey_base: import("@ngraveio/bc-ur").RegistryItemClass<import("@ngraveio/bc-ur").RegistryItemBase>;
export declare class HDKey extends HDKey_base {
data: HDKeyArgs;
constructor(input: HDKeyArgs);
/**
* @returns {boolean} True if the key is a master key, otherwise false.
*/
getIsMaster: () => boolean;
/**
* @returns {boolean} True if the key is a private key, otherwise false.
*/
getIsPrivateKey: () => boolean;
/**
* @returns {Buffer} The key data.
*/
getKeyData: () => Buffer<ArrayBufferLike>;
/**
* @returns {Buffer | undefined} The chain code.
*/
getChainCode: () => Buffer<ArrayBufferLike> | undefined;
/**
* @returns {CoinInfo | undefined} The coin information.
*/
getUseInfo: () => CoinInfo | undefined;
/**
* @returns {Keypath | undefined} The origin keypath.
*/
getOrigin: () => Keypath | undefined;
/**
* @returns {Keypath | undefined} The children keypath.
*/
getChildren: () => Keypath | undefined;
/**
* @returns {number | undefined} The parent fingerprint.
*/
getParentFingerprint: () => number | undefined;
/**
* @returns {string | undefined} The name of the key.
*/
getName: () => string | undefined;
/**
* @returns {string | undefined} The note associated with the key.
*/
getNote: () => string | undefined;
/**
* Prepares the data for CBOR encoding.
* @returns {any} The data prepared for CBOR encoding.
* @throws {Error} If the input data is invalid.
*/
preCBOR(): any;
/**
* Verifies the input data.
* @param {HDKeyArgs} input - The input data to verify.
* @returns {{ valid: boolean; reasons?: Error[] }} The verification result.
*/
verifyInput(input: HDKeyArgs): {
valid: boolean;
reasons?: Error[];
};
/**
* Creates an HDKey instance from an extended public key (xpub).
* @param {string} xpub - The extended public key.
* @param {{ xpubPath?: string; isPrivate?: boolean; sourceFingerprint?: number }} [params] - Optional parameters.
* @returns {HDKey} The HDKey instance.
* @throws {Error} If the xpub is invalid or inconsistent with the provided path.
*/
static fromXpub(xpub: string, params?: {
xpubPath?: string;
isPrivate?: boolean;
sourceFingerprint?: number;
}): HDKey;
/**
* Converts the HDKey instance to an extended public key (xpub).
* @param {{ versionBytes?: Buffer }} [params] - Optional parameters.
* @returns {string} The extended public key.
* @throws {Error} If the chain code or origin is missing.
*
* https://github.com/bitcoinjs/bip32/blob/master/ts-src/bip32.ts#L238
*/
toXpub(params?: {
versionBytes?: Buffer;
}): string;
/**
* Converts the HDKey instance to an extended public key (xpub).
* @param {{ versionBytes?: Buffer }} [params] - Optional parameters.
* @returns {string} The extended public key.
* @throws {Error} If the chain code or origin is missing.
*/
getBip32Key(params?: {
versionBytes?: Buffer;
}): ReturnType<HDKey['toXpub']>;
/**
* Extracts the parent fingerprint from an extended public key (xpub).
* @param {string} xpub - The extended public key.
* @returns {number} The parent fingerprint.
*/
static extractParentFingerprint(xpub: string): number;
/**
* Parses an extended public key (xpub).
* @param {string} xpub - The extended public key.
* @returns {{ version: Buffer; depth: number; parentFingerprint: number; childNumber: number; chainCode: Buffer; keyData: Buffer; checksum: Buffer; isMaster: boolean }} The parsed xpub components.
* @throws {Error} If the checksum is invalid.
*/
static parseXpub(xpub: string): {
version: Buffer<ArrayBuffer>;
depth: number;
parentFingerprint: number;
childNumber: number;
chainCode: Buffer<ArrayBuffer>;
keyData: Buffer<ArrayBuffer>;
checksum: Buffer<ArrayBuffer>;
};
/**
* Encodes the components into an extended public key (xpub).
* @param {{ version: Buffer; depth: number; parentFingerprint: number; childNumber: number; chainCode: Buffer; keyData: Buffer }} params - The components to encode.
* @returns {string} The encoded extended public key.
*/
static encodeXpub({ version, depth, parentFingerprint, childNumber, chainCode, keyData, }: {
version: Buffer;
depth: number | Buffer;
parentFingerprint: number | Buffer;
childNumber: number | Buffer;
chainCode: Buffer;
keyData: Buffer;
}): string;
}
export {};