import { z } from "zod";
export declare const bindingPathSchema: z.ZodString;
export declare const bindingSchema: z.ZodObject<{
    from: z.ZodString;
    fallback: z.ZodOptional<z.ZodUnknown>;
    transforms: z.ZodDefault<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    pick: z.ZodDefault<z.ZodEnum<{
        value: "value";
        context: "context";
        collection: "collection";
    }>>;
    coerce: z.ZodOptional<z.ZodEnum<{
        string: "string";
        number: "number";
        boolean: "boolean";
    }>>;
}, z.core.$strip>;
export type Binding = z.input<typeof bindingSchema>;
export declare const repeatSchema: z.ZodObject<{
    collection: z.ZodObject<{
        from: z.ZodString;
        fallback: z.ZodOptional<z.ZodUnknown>;
        transforms: z.ZodDefault<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>>>;
        pick: z.ZodDefault<z.ZodEnum<{
            value: "value";
            context: "context";
            collection: "collection";
        }>>;
        coerce: z.ZodOptional<z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
        }>>;
    }, z.core.$strip>;
    itemName: z.ZodDefault<z.ZodString>;
    indexName: z.ZodDefault<z.ZodString>;
    limit: z.ZodOptional<z.ZodNumber>;
    sortBy: z.ZodOptional<z.ZodObject<{
        path: z.ZodString;
        direction: z.ZodDefault<z.ZodEnum<{
            asc: "asc";
            desc: "desc";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type RepeatConfig = z.input<typeof repeatSchema>;
export declare const conditionSchema: z.ZodObject<{
    when: z.ZodObject<{
        from: z.ZodString;
        fallback: z.ZodOptional<z.ZodUnknown>;
        transforms: z.ZodDefault<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>>>;
        pick: z.ZodDefault<z.ZodEnum<{
            value: "value";
            context: "context";
            collection: "collection";
        }>>;
        coerce: z.ZodOptional<z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
        }>>;
    }, z.core.$strip>;
    equals: z.ZodOptional<z.ZodUnknown>;
    not: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>;
export type ConditionConfig = z.input<typeof conditionSchema>;
export declare const dataScopeSchema: z.ZodObject<{
    name: z.ZodString;
    from: z.ZodObject<{
        from: z.ZodString;
        fallback: z.ZodOptional<z.ZodUnknown>;
        transforms: z.ZodDefault<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>>>;
        pick: z.ZodDefault<z.ZodEnum<{
            value: "value";
            context: "context";
            collection: "collection";
        }>>;
        coerce: z.ZodOptional<z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
        }>>;
    }, z.core.$strip>;
}, z.core.$strip>;
export type DataScope = z.input<typeof dataScopeSchema>;
export declare const nodePropsSchema: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
export type NodeDefinition = {
    type: string;
    key?: string;
    props?: Record<string, unknown>;
    children?: NodeDefinition[];
    $bind?: Binding;
    $repeat?: RepeatConfig;
    $when?: ConditionConfig;
    $scopes?: DataScope[];
    [key: string]: unknown;
};
export declare const nodeSchema: z.ZodType<NodeDefinition>;
export declare const nodeTreeSchema: z.ZodUnion<[z.ZodArray<z.ZodType<NodeDefinition, unknown, z.core.$ZodTypeInternals<NodeDefinition, unknown>>>, z.ZodType<NodeDefinition, unknown, z.core.$ZodTypeInternals<NodeDefinition, unknown>>]>;
export type NodeTree = z.input<typeof nodeTreeSchema>;
export declare const NodeSchema: z.ZodType<NodeDefinition, unknown, z.core.$ZodTypeInternals<NodeDefinition, unknown>>;
export declare const NodeTreeSchema: z.ZodUnion<[z.ZodArray<z.ZodType<NodeDefinition, unknown, z.core.$ZodTypeInternals<NodeDefinition, unknown>>>, z.ZodType<NodeDefinition, unknown, z.core.$ZodTypeInternals<NodeDefinition, unknown>>]>;
