import { HashComputationLevel, Node } from "@chainsafe/persistent-merkle-tree"; import { ByteViews, Type, ValueOf } from "./abstract.ts"; import { BasicType } from "./basic.ts"; /** * SSZ Lists (variable-length arrays) include the length of the list in the tree * This length is always in the same index in the tree * ``` * 1 * / \ * 2 3 // <-here * ``` */ export declare function getLengthFromRootNode(node: Node): number; export declare function getChunksNodeFromRootNode(node: Node): Node; export declare function addLengthNode(chunksNode: Node, length: number): Node; export declare function setChunksNode(rootNode: Node, chunksNode: Node, newLength: number | null, hcOffset?: number, hcByLevel?: HashComputationLevel[] | null): Node; export type ArrayProps = { isList: true; limit: number; } | { isList: false; length: number; }; /** * @param length In List length = value.length, Vector length = fixed value */ export declare function value_serializeToBytesArrayBasic>(elementType: ElementType, length: number, output: ByteViews, offset: number, value: ArrayLike>): number; export declare function value_deserializeFromBytesArrayBasic>(elementType: ElementType, data: ByteViews, start: number, end: number, arrayProps: ArrayProps): ValueOf[]; /** * @param length In List length = value.length, Vector length = fixed value */ export declare function tree_serializeToBytesArrayBasic>(elementType: ElementType, length: number, depth: number, output: ByteViews, offset: number, node: Node, cachedNodes?: Node[] | null): number; export declare function tree_deserializeFromBytesArrayBasic>(elementType: ElementType, chunkDepth: number, data: ByteViews, start: number, end: number, arrayProps: ArrayProps): Node; /** * @param length In List length = undefined, Vector length = fixed value */ export declare function value_fromJsonArray>(elementType: ElementType, json: unknown, arrayProps: ArrayProps): ValueOf[]; /** * @param length In List length = undefined, Vector length = fixed value */ export declare function value_toJsonArray>(elementType: ElementType, value: ValueOf[], arrayProps: ArrayProps): unknown[]; /** * Clone recursively an array of basic or composite types */ export declare function value_cloneArray>(elementType: ElementType, value: ValueOf[]): ValueOf[]; /** * Check recursively if a type is structuraly equal. Returns early */ export declare function value_equals>(elementType: ElementType, a: ValueOf[], b: ValueOf[]): boolean; export declare function value_defaultValueArray>(elementType: ElementType, length: number): ValueOf[]; /** * @param checkNonDecimalLength Check that length is a multiple of element size. * Optional since it's not necessary in getOffsetsArrayComposite() fn. */ export declare function assertValidArrayLength(length: number, arrayProps: ArrayProps, checkNonDecimalLength?: boolean): void;