import { z } from 'zod';
export declare const SubFeatureSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    component: z.ZodOptional<z.ZodString>;
    type: z.ZodString;
    wired: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"stubbed">, z.ZodLiteral<"partial">]>;
    handler: z.ZodOptional<z.ZodString>;
    default: z.ZodOptional<z.ZodUnknown>;
    range: z.ZodOptional<z.ZodUnknown>;
    options: z.ZodOptional<z.ZodUnknown>;
    shortcut: z.ZodOptional<z.ZodString>;
    testable: z.ZodOptional<z.ZodEnum<{
        blocked: "blocked";
        testable: "testable";
        observable: "observable";
    }>>;
    test_hint: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const FeatureGroupSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    component: z.ZodOptional<z.ZodString>;
    sub_features: z.ZodDefault<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        component: z.ZodOptional<z.ZodString>;
        type: z.ZodString;
        wired: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"stubbed">, z.ZodLiteral<"partial">]>;
        handler: z.ZodOptional<z.ZodString>;
        default: z.ZodOptional<z.ZodUnknown>;
        range: z.ZodOptional<z.ZodUnknown>;
        options: z.ZodOptional<z.ZodUnknown>;
        shortcut: z.ZodOptional<z.ZodString>;
        testable: z.ZodOptional<z.ZodEnum<{
            blocked: "blocked";
            testable: "testable";
            observable: "observable";
        }>>;
        test_hint: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export declare const FeatureRegistrySchema: z.ZodObject<{
    area: z.ZodString;
    route: z.ZodString;
    components: z.ZodDefault<z.ZodArray<z.ZodString>>;
    last_scanned: z.ZodString;
    features: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        component: z.ZodOptional<z.ZodString>;
        sub_features: z.ZodDefault<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            component: z.ZodOptional<z.ZodString>;
            type: z.ZodString;
            wired: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"stubbed">, z.ZodLiteral<"partial">]>;
            handler: z.ZodOptional<z.ZodString>;
            default: z.ZodOptional<z.ZodUnknown>;
            range: z.ZodOptional<z.ZodUnknown>;
            options: z.ZodOptional<z.ZodUnknown>;
            shortcut: z.ZodOptional<z.ZodString>;
            testable: z.ZodOptional<z.ZodEnum<{
                blocked: "blocked";
                testable: "testable";
                observable: "observable";
            }>>;
            test_hint: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type SubFeature = z.infer<typeof SubFeatureSchema>;
export type FeatureGroup = z.infer<typeof FeatureGroupSchema>;
export type FeatureRegistry = z.infer<typeof FeatureRegistrySchema>;
export declare function validateFeatureRegistry(data: unknown): z.ZodSafeParseResult<{
    area: string;
    route: string;
    components: string[];
    last_scanned: string;
    features: {
        id: string;
        name: string;
        sub_features: {
            id: string;
            name: string;
            type: string;
            wired: boolean | "partial" | "stubbed";
            component?: string | undefined;
            handler?: string | undefined;
            default?: unknown;
            range?: unknown;
            options?: unknown;
            shortcut?: string | undefined;
            testable?: "blocked" | "testable" | "observable" | undefined;
            test_hint?: string | undefined;
        }[];
        component?: string | undefined;
    }[];
}>;
export declare const featureRegistryJsonSchema: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
    area: z.ZodString;
    route: z.ZodString;
    components: z.ZodDefault<z.ZodArray<z.ZodString>>;
    last_scanned: z.ZodString;
    features: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        component: z.ZodOptional<z.ZodString>;
        sub_features: z.ZodDefault<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            component: z.ZodOptional<z.ZodString>;
            type: z.ZodString;
            wired: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"stubbed">, z.ZodLiteral<"partial">]>;
            handler: z.ZodOptional<z.ZodString>;
            default: z.ZodOptional<z.ZodUnknown>;
            range: z.ZodOptional<z.ZodUnknown>;
            options: z.ZodOptional<z.ZodUnknown>;
            shortcut: z.ZodOptional<z.ZodString>;
            testable: z.ZodOptional<z.ZodEnum<{
                blocked: "blocked";
                testable: "testable";
                observable: "observable";
            }>>;
            test_hint: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>>;
//# sourceMappingURL=feature-registry.d.ts.map