import { PathComponent } from './helpers/PathComponent'; interface KeypathInput { path?: string | PathComponent[]; sourceFingerprint?: number; depth?: number; } interface KeypathData { components: PathComponent[]; sourceFingerprint?: number; depth?: number; } interface postCBORData { components: (number | boolean | [number, number] | [] | [number, boolean] | [number, boolean, number, boolean])[]; sourceFingerprint?: number; depth?: number; } declare const Keypath_base: import("@ngraveio/bc-ur").RegistryItemClass; /** * Keypath class for handling hierarchical key derivation paths. * * Metadata for the complete or partial derivation path of a key: * - 'source-fingerprint': Fingerprint of the ancestor key or master key if components are empty. * - 'depth': Number of derivation steps in the path. * * Valid Path String Rules: * 1. Paths can include: * - Single indices (e.g., `44'/0'/0'/0/0`). * - Ranges with hardening applied to the second element (e.g., `1-6'`; `1h-6` is invalid). * - Wildcards (`*`) at any depth (e.g., `44'/0'/0'/*`). * - Pairs for external/internal addresses (e.g., `<0h;1h>` or `<0;1>`). * - Mixed components combining ranges, wildcards, and pairs (e.g., `44'/0'/1'-5'/<0h;1h>/*`). * 2. Rules for hardening: * - Hardened indices must be ≤ `0x80000000`. * - Hardened chars (`'` or `h`) must immediately follow the index. * 3. Path formatting: * - Paths can optionally start with `m`, but it is not required. * - Components must be delimited by `/` and contain integers, ranges, wildcards, or pairs. * * Invalid Examples: * - `1h-6` (hardening not applied to the second element in range). * - `<0;1h>` (mixed hardening in pair). * * Usage: * - The `components` can be passed as a string or an array of `PathComponent`. * - `source-fingerprint`: The fingerprint of the ancestor or master key. Required if `components` is empty. * - `depth`: The number of derivation steps in the path. If omitted, it will be inferred from `components`. */ export declare class Keypath extends Keypath_base { data: KeypathData; constructor(input: KeypathInput); /** * Sets the depth of the Keypath based on the number of components. * Representing the number of derivation steps */ setDepth(): void; /** * Check if all the paths are hardened * TODO: add tests */ isOnlyHardened(): boolean; /** * Check if all the paths are simple * TODO: add tests */ isOnlySimple(): boolean; /** * Parses a path string into an array of PathComponent objects. * @param path The path string to parse. * @returns {PathComponent[]} Array of PathComponent objects. */ static pathToComponents(path: string): PathComponent[]; /** * Converts an array of PathComponent objects back into a path string. * @param components Array of PathComponent objects. * @returns {string} Path string. */ static componentsToString(components: PathComponent[], hardenedFlag?: "'" | 'h'): string; /** * Converts the Keypath components back to a path string. * @returns {string} Path string. */ toString(hardenedFlag?: "'" | 'h'): string; /** * Gets the components of the Keypath. * @returns {PathComponent[]} Array of PathComponent objects. */ getComponents(): PathComponent[]; /** * Gets the source fingerprint of the Keypath. * @returns {number | undefined} Source fingerprint. */ getSourceFingerprint(): number | undefined; /** * Gets the depth of the Keypath. * @returns {number | undefined} Depth. */ getDepth(): number | undefined; preCBOR(): Map; static postCBOR(_data: Map): postCBORData; } export {};