import { z } from "zod";
export declare const attributeSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"string">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    size: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    encrypted: z.ZodOptional<z.ZodBoolean>;
    format: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
}, "strip", z.ZodTypeAny, {
    type: "string";
    key: string;
    size: number;
    format?: string | null | undefined;
    description?: string | Record<string, string> | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
    encrypted?: boolean | undefined;
}, {
    key: string;
    type?: "string" | undefined;
    format?: string | null | undefined;
    description?: string | Record<string, string> | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    size?: number | undefined;
    xdefault?: string | null | undefined;
    encrypted?: boolean | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"integer">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    min: z.ZodOptional<z.ZodNumber>;
    max: z.ZodOptional<z.ZodNumber>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "integer";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}, {
    key: string;
    type?: "integer" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"float">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    min: z.ZodOptional<z.ZodNumber>;
    max: z.ZodOptional<z.ZodNumber>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "float";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}, {
    key: string;
    type?: "float" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"boolean">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "boolean";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: boolean | null | undefined;
}, {
    key: string;
    type?: "boolean" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: boolean | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"datetime">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "datetime";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "datetime" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"email">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "email";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "email" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodLiteral<"ip">;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "ip";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    type: "ip";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"url">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "url";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "url" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"enum">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    elements: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "enum";
    key: string;
    elements: string[];
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "enum" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
    elements?: string[] | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"relationship">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    relatedCollection: z.ZodString;
    relationType: z.ZodEnum<["oneToMany", "manyToOne", "oneToOne", "manyToMany"]>;
    twoWay: z.ZodBoolean;
    twoWayKey: z.ZodString;
    onDelete: z.ZodDefault<z.ZodEnum<["setNull", "cascade", "restrict"]>>;
    side: z.ZodEnum<["parent", "child"]>;
    importMapping: z.ZodOptional<z.ZodObject<{
        originalIdField: z.ZodString;
        targetField: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        originalIdField: string;
        targetField?: string | undefined;
    }, {
        originalIdField: string;
        targetField?: string | undefined;
    }>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "relationship";
    key: string;
    relatedCollection: string;
    relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany";
    twoWay: boolean;
    twoWayKey: string;
    onDelete: "setNull" | "cascade" | "restrict";
    side: "parent" | "child";
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    importMapping?: {
        originalIdField: string;
        targetField?: string | undefined;
    } | undefined;
}, {
    key: string;
    relatedCollection: string;
    relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany";
    twoWay: boolean;
    twoWayKey: string;
    side: "parent" | "child";
    type?: "relationship" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    onDelete?: "setNull" | "cascade" | "restrict" | undefined;
    importMapping?: {
        originalIdField: string;
        targetField?: string | undefined;
    } | undefined;
}>]>;
export type Attribute = z.infer<typeof attributeSchema>;
export declare const attributesSchema: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"string">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    size: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    encrypted: z.ZodOptional<z.ZodBoolean>;
    format: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
}, "strip", z.ZodTypeAny, {
    type: "string";
    key: string;
    size: number;
    format?: string | null | undefined;
    description?: string | Record<string, string> | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
    encrypted?: boolean | undefined;
}, {
    key: string;
    type?: "string" | undefined;
    format?: string | null | undefined;
    description?: string | Record<string, string> | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    size?: number | undefined;
    xdefault?: string | null | undefined;
    encrypted?: boolean | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"integer">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    min: z.ZodOptional<z.ZodNumber>;
    max: z.ZodOptional<z.ZodNumber>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "integer";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}, {
    key: string;
    type?: "integer" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"float">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    min: z.ZodOptional<z.ZodNumber>;
    max: z.ZodOptional<z.ZodNumber>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "float";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}, {
    key: string;
    type?: "float" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: number | null | undefined;
    min?: number | undefined;
    max?: number | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"boolean">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "boolean";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: boolean | null | undefined;
}, {
    key: string;
    type?: "boolean" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: boolean | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"datetime">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "datetime";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "datetime" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"email">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "email";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "email" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodLiteral<"ip">;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "ip";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    type: "ip";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"url">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "url";
    key: string;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "url" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"enum">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    elements: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    xdefault: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "enum";
    key: string;
    elements: string[];
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
}, {
    key: string;
    type?: "enum" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    xdefault?: string | null | undefined;
    elements?: string[] | undefined;
}>, z.ZodObject<{
    key: z.ZodString;
    type: z.ZodDefault<z.ZodLiteral<"relationship">>;
    error: z.ZodOptional<z.ZodDefault<z.ZodString>>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    array: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    relatedCollection: z.ZodString;
    relationType: z.ZodEnum<["oneToMany", "manyToOne", "oneToOne", "manyToMany"]>;
    twoWay: z.ZodBoolean;
    twoWayKey: z.ZodString;
    onDelete: z.ZodDefault<z.ZodEnum<["setNull", "cascade", "restrict"]>>;
    side: z.ZodEnum<["parent", "child"]>;
    importMapping: z.ZodOptional<z.ZodObject<{
        originalIdField: z.ZodString;
        targetField: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        originalIdField: string;
        targetField?: string | undefined;
    }, {
        originalIdField: string;
        targetField?: string | undefined;
    }>>;
    description: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>;
}, "strip", z.ZodTypeAny, {
    type: "relationship";
    key: string;
    relatedCollection: string;
    relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany";
    twoWay: boolean;
    twoWayKey: string;
    onDelete: "setNull" | "cascade" | "restrict";
    side: "parent" | "child";
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    importMapping?: {
        originalIdField: string;
        targetField?: string | undefined;
    } | undefined;
}, {
    key: string;
    relatedCollection: string;
    relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany";
    twoWay: boolean;
    twoWayKey: string;
    side: "parent" | "child";
    type?: "relationship" | undefined;
    description?: string | Record<string, string> | null | undefined;
    required?: boolean | undefined;
    array?: boolean | undefined;
    error?: string | undefined;
    onDelete?: "setNull" | "cascade" | "restrict" | undefined;
    importMapping?: {
        originalIdField: string;
        targetField?: string | undefined;
    } | undefined;
}>]>, "many">;
export type Attributes = z.infer<typeof attributesSchema>;
