import { BaseConstraint } from "../constraint.ts"; import type { RootSchema, nodeOfKind } from "../kinds.ts"; import { type BaseNode, type DeepNodeTransformContext, type DeepNodeTransformation } from "../node.ts"; import type { BaseRoot } from "../roots/root.ts"; import type { BaseNormalizedSchema, declareNode } from "../shared/declare.ts"; import { type RootKind, type nodeImplementationOf } from "../shared/implement.ts"; import { type TraverseAllows, type TraverseApply } from "../shared/traversal.ts"; export declare namespace Index { type KeyKind = Exclude; type KeyNode = nodeOfKind; interface Schema extends BaseNormalizedSchema { readonly signature: RootSchema; readonly value: RootSchema; } interface Inner { readonly signature: KeyNode; readonly value: BaseRoot; } interface Declaration extends declareNode<{ kind: "index"; schema: Schema; normalizedSchema: Schema; inner: Inner; prerequisite: object; intersectionIsOpen: true; childKind: RootKind; }> { } type Node = IndexNode; } export declare class IndexNode extends BaseConstraint { impliedBasis: BaseRoot; expression: string; flatRefs: import("../node.ts").FlatRef>[]; traverseAllows: TraverseAllows; traverseApply: TraverseApply; protected _transform(mapper: DeepNodeTransformation, ctx: DeepNodeTransformContext): BaseNode | null; compile(): void; } export declare const Index: { implementation: nodeImplementationOf; Node: typeof IndexNode; }; export declare const writeEnumerableIndexBranches: (keys: string[]) => string; export declare const writeInvalidPropertyKeyMessage: (indexSchema: indexSchema) => writeInvalidPropertyKeyMessage; export type writeInvalidPropertyKeyMessage = `Indexed key definition '${indexSchema}' must be a string or symbol`;