import { Node } from "@chainsafe/persistent-merkle-tree"; import { Type } from "../type/abstract.ts"; import { BasicType } from "../type/basic.ts"; import { CompositeType } from "../type/composite.ts"; import { OptionalType } from "../type/optional.ts"; import { StableContainerTypeGeneric } from "../view/stableContainer.ts"; import { TreeViewDU } from "./abstract.ts"; export type ViewDUValue> = T extends CompositeType ? TVDU : T extends BasicType ? V : never; export type OptionalViewDUValue> = T extends CompositeType ? // If composite, return view. MAY propagate changes updwards TVDU | null | undefined : T extends BasicType ? V | null | undefined : never; export type FieldsViewDU>> = { [K in keyof Fields]: Fields[K] extends OptionalType ? OptionalViewDUValue : ViewDUValue; }; export type ContainerTreeViewDUType>> = FieldsViewDU & TreeViewDU>; export type ContainerTreeViewDUTypeConstructor>> = { new (type: StableContainerTypeGeneric, node: Node, cache?: unknown): ContainerTreeViewDUType; }; export declare function getContainerTreeViewDUClass>>(type: StableContainerTypeGeneric): ContainerTreeViewDUTypeConstructor;