UNPKG

@etherna/sdk-js

Version:

Etherna SDKs for operations on the network

115 lines 4.34 kB
import type { Bytes, BytesReference, MetadataMapping, StorageLoader, StorageSaver } from "./types"; export type ForkMapping = { [key: number]: MantarayFork; }; export declare class MantarayFork { prefix: Uint8Array; node: MantarayNode; /** * @param prefix the non-branching part of the subpath * @param node in memory structure that represents the Node */ constructor(prefix: Uint8Array, node: MantarayNode); private createMetadataPadding; serialize(): Uint8Array; static deserialize(data: Uint8Array, obfuscationKey: Bytes<32>, options?: { withMetadata?: { refBytesSize: number; metadataByteSize: number; }; }): MantarayFork; } export declare class MantarayNode { /** Used with NodeType type */ private _type?; private _obfuscationKey?; /** reference of a loaded manifest node. if undefined, the node can be handled as `dirty` */ private _contentAddress?; /** reference of an content that the manifest refers to */ private _entry?; private _metadata?; /** Forks of the manifest. Has to be initialized with `{}` on load even if there were no forks */ forks?: ForkMapping; get contentAddress(): BytesReference | undefined; set contentAddress(contentAddress: BytesReference); get entry(): BytesReference | undefined; set entry(entry: BytesReference); get type(): number; set type(type: number); get obfuscationKey(): Bytes<32> | undefined; set obfuscationKey(obfuscationKey: Bytes<32>); get metadata(): MetadataMapping | undefined; set metadata(metadata: MetadataMapping); get readable(): object; isValueType(): boolean; isEdgeType(): boolean; isWithPathSeparatorType(): boolean; IsWithMetadataType(): boolean; private makeValue; private makeEdge; private makeWithPathSeparator; private makeWithMetadata; private makeNotWithPathSeparator; private updateWithPathSeparator; /** * * @param path path sting represented in bytes. can be 0 length, then `entry` will be the current node's entry * @param entry * @param metadata * @param storage */ addFork(path: Uint8Array, entry: BytesReference, metadata?: MetadataMapping): void; /** * Gives back a MantarayFork under the given path * * @param path valid path within the MantarayNode * @returns MantarayFork with the last unique prefix and its node * @throws error if there is no node under the given path */ getForkAtPath(path: Uint8Array): MantarayFork; /** * Check if node exists under the given path * * @param path valid path within the MantarayNode * @returns True if exists, false otherwise */ hasForkAtPath(path: Uint8Array): boolean; /** * Get all forks with a path prefix * @param prefix path prefix * @returns List of forks */ getNodesWithPrefix(prefix: Uint8Array): MantarayNode[]; /** * Removes a path from the node * * @param path Uint8Array of the path of the node intended to remove */ removePath(path: Uint8Array): void; load(storageLoader: StorageLoader, reference: BytesReference): Promise<void>; /** * Saves dirty flagged ManifestNodes and its forks recursively * @returns Reference of the top manifest node. */ save(storageSaver: StorageSaver): Promise<BytesReference>; isDirty(): boolean; makeDirty(): void; serialize(): Uint8Array; deserialize(data: Uint8Array): void; private recursiveLoad; private recursiveSave; } /** Checks for separator character in the node and its descendants prefixes */ export declare function checkForSeparator(node: MantarayNode): boolean; /** loads all nodes recursively */ export declare function loadAllNodes(storageLoader: StorageLoader, node: MantarayNode): Promise<void>; /** * Throws an error if the given nodes properties are not equal * * @param a Mantaray node to compare * @param b Mantaray node to compare * @param accumulatedPrefix accumulates the prefix during the recursion * @throws Error if the two nodes properties are not equal recursively */ export declare const equalNodes: (a: MantarayNode, b: MantarayNode, accumulatedPrefix?: string) => void | never; //# sourceMappingURL=index.d.ts.map