import type { Animation, BoxelDefinition, Material, Pattern, Primitive, TexturedBox, Texture, Vec2, Vec3 } from './types';
export interface BoxelValidationIssue {
    path: string;
    message: string;
}
export declare class BoxelValidationError extends Error {
    readonly issues: BoxelValidationIssue[];
    constructor(message: string, issues: BoxelValidationIssue[]);
}
export declare function isTupleOfNumbers(value: unknown, expectedLength: number): value is number[];
export declare function assertVec3(value: unknown, context: string): asserts value is Vec3;
export declare function assertVec2(value: unknown, context: string): asserts value is Vec2;
export declare function assertPattern(value: unknown, index: number): asserts value is Pattern;
export declare function assertMaterial(value: unknown, index: number): asserts value is Material;
export declare function assertTexture(value: unknown, index: number): asserts value is Texture;
export declare function assertPrimitive(value: unknown, index: number): asserts value is Primitive;
export declare function assertAnimation(value: unknown, index: number): asserts value is Animation;
export declare function assertTexturedBoxFaceSizes(box: TexturedBox, textureLookup: Map<string, Texture>, patternLookup: Map<string, Pattern>, materialLookup: Map<string, Material>): void;
export declare function validateBoxel(candidate: unknown): {
    boxel: BoxelDefinition | null;
    issues: BoxelValidationIssue[];
};
export declare function assertBoxel(candidate: unknown): BoxelDefinition;
export declare function collectBoxelValidationIssues(candidate: unknown): BoxelValidationIssue[];
