import type { InstanceOfIssue } from "./checks/instance-of"; import type { GuardIssue } from "./checks/is"; import type { NeverIssue } from "./checks/never"; import type { MissingIssue, UnknownPropertyIssue } from "./checks/struct"; import type { LiteralIssue } from "./checks/value"; import type { RuntimeType, TypeMismatchIssue } from "./issues/shared"; import type { ValidationIssue } from "./type"; export type LeafIssue = TypeMismatchIssue | LiteralIssue | InstanceOfIssue | GuardIssue | ValidationIssue | MissingIssue | UnknownPropertyIssue | NeverIssue; export type PathSegment = { readonly kind: "property"; readonly key: string | symbol; } | { readonly kind: "array-element"; readonly index: number; } | { readonly kind: "dictionary-value"; readonly index: number; } | { readonly kind: "map-key"; readonly index: number; } | { readonly kind: "map-value"; readonly index: number; } | { readonly kind: "set-value"; readonly index: number; }; export type AtIssue = { readonly kind: "at"; readonly subject: RuntimeType; readonly path: ReadonlyArray; readonly issue: Issue; }; export type MultipleIssue = { readonly kind: "multiple"; readonly subject: RuntimeType; readonly issues: ReadonlyArray; }; export type UnionIssue = { readonly kind: "union"; readonly subject: RuntimeType; readonly issues: ReadonlyArray; }; export type Issue = LeafIssue | AtIssue | MultipleIssue | UnionIssue; export declare function at(segment: PathSegment, issue: Issue, subject: RuntimeType): AtIssue; export declare function multiple(issues: ReadonlyArray, subject: RuntimeType): Issue; export declare function unionIssue(issues: ReadonlyArray, subject: RuntimeType): UnionIssue;