import { z } from 'zod';
import { TemplateImplementationOverridesInterface } from './template-implementation-overrides.interface';
import { TemplateInterface } from './template.interface';
export declare const TemplateImplementationSchema: z.ZodObject<{
    templateVersion: z.ZodUnion<[z.ZodLiteral<"latest">, z.ZodString]>;
    name: z.ZodString;
    description: z.ZodString;
    overrides: z.ZodObject<{
        datasets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            name: z.ZodString;
            description: z.ZodString;
            type: z.ZodEnum<typeof import("./type-enums").DatasetTypeEnum>;
            prefix: z.ZodString;
            parent: z.ZodOptional<z.ZodString>;
            sql: z.ZodOptional<z.ZodString>;
            meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            collection: z.ZodOptional<z.ZodObject<{
                collection: z.ZodString;
                filters: z.ZodOptional<z.ZodType<import(".").FiltersInterface, unknown, z.core.$ZodTypeInternals<import(".").FiltersInterface, unknown>>>;
            }, z.core.$strip>>;
            dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                name: z.ZodString;
                description: z.ZodString;
                type: z.ZodEnum<typeof import("./type-enums").DimensionTypesEnum>;
                format: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").DimensionFormatsEnum>>;
                explode: z.ZodOptional<z.ZodBoolean>;
                index: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
                upperIndex: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
                switch: z.ZodOptional<z.ZodObject<{
                    when: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
                        sql: z.ZodOptional<z.ZodString>;
                        dimension: z.ZodOptional<z.ZodString>;
                        operator: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").FilterOperatorsEnum>>;
                        value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
                    }, z.core.$strip>, z.ZodObject<{
                        label: z.ZodString;
                        description: z.ZodOptional<z.ZodString>;
                    }, z.core.$strip>>, z.ZodLiteral<false>]>>;
                    else: z.ZodOptional<z.ZodString>;
                    segment: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>>;
                field: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
                sql: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                primaryKey: z.ZodOptional<z.ZodBoolean>;
                subQuery: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
                meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            segments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
                sql: z.ZodOptional<z.ZodString>;
                dimension: z.ZodOptional<z.ZodString>;
                operator: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").FilterOperatorsEnum>>;
                value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
            }, z.core.$strip>, z.ZodObject<{
                name: z.ZodOptional<z.ZodString>;
                description: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
            }, z.core.$strip>>, z.ZodLiteral<false>]>>>;
            relations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                type: z.ZodEnum<typeof import("./type-enums").RelationTypesEnum>;
                dimension: z.ZodOptional<z.ZodString>;
                targetDataset: z.ZodString;
                targetDimension: z.ZodOptional<z.ZodString>;
                sql: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            measures: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                type: z.ZodEnum<typeof import("./type-enums").MeasureTypesEnum>;
                format: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").MeasureFormatsEnum>>;
                index: z.ZodOptional<z.ZodString>;
                upperIndex: z.ZodOptional<z.ZodString>;
                sql: z.ZodOptional<z.ZodString>;
                dimension: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
                meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            preAggregations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                type: z.ZodOptional<z.ZodEnum<{
                    rollup: "rollup";
                    original_sql: "original_sql";
                    rollup_join: "rollup_join";
                }>>;
                measures: z.ZodOptional<z.ZodArray<z.ZodString>>;
                dimensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
                segments: z.ZodOptional<z.ZodArray<z.ZodString>>;
                timeDimension: z.ZodOptional<z.ZodString>;
                granularity: z.ZodOptional<z.ZodString>;
                partitionGranularity: z.ZodOptional<z.ZodString>;
                rollups: z.ZodOptional<z.ZodArray<z.ZodString>>;
                refreshKeySql: z.ZodOptional<z.ZodString>;
                refreshKeyEvery: z.ZodOptional<z.ZodString>;
                refreshKeyIncremental: z.ZodOptional<z.ZodBoolean>;
                refreshKeyUpdateWindow: z.ZodOptional<z.ZodString>;
                buildRangeStartSql: z.ZodOptional<z.ZodString>;
                buildRangeEndSql: z.ZodOptional<z.ZodString>;
                lambda: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        semanticTriggers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
            name: z.ZodOptional<z.ZodString>;
            description: z.ZodOptional<z.ZodString>;
            eventType: z.ZodOptional<z.ZodString>;
            dataset: z.ZodString;
            dimensions: z.ZodArray<z.ZodString>;
            limit: z.ZodOptional<z.ZodNumber>;
            filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                dimension: z.ZodString;
                operator: z.ZodEnum<typeof import("./type-enums").SemanticTriggerFilterOperatorsEnum>;
                values: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            cron: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            tz: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            incrementalField: z.ZodOptional<z.ZodString>;
            ungrouped: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            identifier: z.ZodString;
            connectorType: z.ZodEnum<typeof import("../types").ConfiguredConnectorTypes>;
            name: z.ZodString;
            location: z.ZodString;
            config: z.ZodObject<{}, z.core.$loose>;
            enabled: z.ZodBoolean;
            actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
                identifier: z.ZodString;
                version: z.ZodString;
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                config: z.ZodRecord<z.ZodString, z.ZodAny>;
                inputParameters: z.ZodArray<z.ZodObject<{
                    name: z.ZodString;
                    description: z.ZodOptional<z.ZodString>;
                    type: z.ZodEnum<{
                        string: "string";
                        number: "number";
                        boolean: "boolean";
                        unknown: "unknown";
                        array: "array";
                        "simple-array": "simple-array";
                    }>;
                    required: z.ZodOptional<z.ZodBoolean>;
                    itemType: z.ZodOptional<z.ZodEnum<{
                        string: "string";
                        number: "number";
                        boolean: "boolean";
                    }>>;
                    items: z.ZodOptional<z.ZodArray<z.ZodAny>>;
                }, z.core.$strip>>;
                outputParameters: z.ZodRecord<z.ZodString, z.ZodAny>;
                mode: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").ConnectorOrigin>>;
                createdAt: z.ZodOptional<z.ZodDate>;
                updatedAt: z.ZodOptional<z.ZodDate>;
            }, z.core.$strip>>>;
            webhooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
                identifier: z.ZodString;
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                actionIdentifier: z.ZodString;
                inputParameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>[]>>>;
                validation: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    selector: z.ZodString;
                    operator: z.ZodDefault<z.ZodOptional<z.ZodEnum<typeof import("./webhook").WebhookValidationOperator>>>;
                    value: z.ZodString;
                }, z.core.$strip>>>;
            }, z.core.$strip>>>;
            createdAt: z.ZodOptional<z.ZodDate>;
            updatedAt: z.ZodOptional<z.ZodDate>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        metrics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            name: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            source: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
                collection: z.ZodString;
                expr: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>]>;
            measures: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                type: z.ZodEnum<typeof import("./metrics").MetricMeasureTypeEnum>;
                expr: z.ZodString;
            }, z.core.$strip>, z.ZodBoolean]>>;
            dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                expr: z.ZodString;
            }, z.core.$strip>, z.ZodBoolean]>>>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
    }, z.core.$strip>;
}, z.core.$strip>;
export declare const TemplateImplementationCreateSchema: z.ZodObject<{
    templateVersion: z.ZodUnion<[z.ZodLiteral<"latest">, z.ZodString]>;
    name: z.ZodString;
    description: z.ZodString;
    overrides: z.ZodObject<{
        datasets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            name: z.ZodString;
            description: z.ZodString;
            type: z.ZodEnum<typeof import("./type-enums").DatasetTypeEnum>;
            prefix: z.ZodString;
            parent: z.ZodOptional<z.ZodString>;
            sql: z.ZodOptional<z.ZodString>;
            meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            collection: z.ZodOptional<z.ZodObject<{
                collection: z.ZodString;
                filters: z.ZodOptional<z.ZodType<import(".").FiltersInterface, unknown, z.core.$ZodTypeInternals<import(".").FiltersInterface, unknown>>>;
            }, z.core.$strip>>;
            dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                name: z.ZodString;
                description: z.ZodString;
                type: z.ZodEnum<typeof import("./type-enums").DimensionTypesEnum>;
                format: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").DimensionFormatsEnum>>;
                explode: z.ZodOptional<z.ZodBoolean>;
                index: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
                upperIndex: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
                switch: z.ZodOptional<z.ZodObject<{
                    when: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
                        sql: z.ZodOptional<z.ZodString>;
                        dimension: z.ZodOptional<z.ZodString>;
                        operator: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").FilterOperatorsEnum>>;
                        value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
                    }, z.core.$strip>, z.ZodObject<{
                        label: z.ZodString;
                        description: z.ZodOptional<z.ZodString>;
                    }, z.core.$strip>>, z.ZodLiteral<false>]>>;
                    else: z.ZodOptional<z.ZodString>;
                    segment: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>>;
                field: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
                sql: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                primaryKey: z.ZodOptional<z.ZodBoolean>;
                subQuery: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
                meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            segments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
                sql: z.ZodOptional<z.ZodString>;
                dimension: z.ZodOptional<z.ZodString>;
                operator: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").FilterOperatorsEnum>>;
                value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
            }, z.core.$strip>, z.ZodObject<{
                name: z.ZodOptional<z.ZodString>;
                description: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
            }, z.core.$strip>>, z.ZodLiteral<false>]>>>;
            relations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                type: z.ZodEnum<typeof import("./type-enums").RelationTypesEnum>;
                dimension: z.ZodOptional<z.ZodString>;
                targetDataset: z.ZodString;
                targetDimension: z.ZodOptional<z.ZodString>;
                sql: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            measures: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                type: z.ZodEnum<typeof import("./type-enums").MeasureTypesEnum>;
                format: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").MeasureFormatsEnum>>;
                index: z.ZodOptional<z.ZodString>;
                upperIndex: z.ZodOptional<z.ZodString>;
                sql: z.ZodOptional<z.ZodString>;
                dimension: z.ZodOptional<z.ZodString>;
                public: z.ZodOptional<z.ZodBoolean>;
                override: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"custom">]>>;
                meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            preAggregations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                type: z.ZodOptional<z.ZodEnum<{
                    rollup: "rollup";
                    original_sql: "original_sql";
                    rollup_join: "rollup_join";
                }>>;
                measures: z.ZodOptional<z.ZodArray<z.ZodString>>;
                dimensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
                segments: z.ZodOptional<z.ZodArray<z.ZodString>>;
                timeDimension: z.ZodOptional<z.ZodString>;
                granularity: z.ZodOptional<z.ZodString>;
                partitionGranularity: z.ZodOptional<z.ZodString>;
                rollups: z.ZodOptional<z.ZodArray<z.ZodString>>;
                refreshKeySql: z.ZodOptional<z.ZodString>;
                refreshKeyEvery: z.ZodOptional<z.ZodString>;
                refreshKeyIncremental: z.ZodOptional<z.ZodBoolean>;
                refreshKeyUpdateWindow: z.ZodOptional<z.ZodString>;
                buildRangeStartSql: z.ZodOptional<z.ZodString>;
                buildRangeEndSql: z.ZodOptional<z.ZodString>;
                lambda: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        semanticTriggers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
            name: z.ZodOptional<z.ZodString>;
            description: z.ZodOptional<z.ZodString>;
            eventType: z.ZodOptional<z.ZodString>;
            dataset: z.ZodString;
            dimensions: z.ZodArray<z.ZodString>;
            limit: z.ZodOptional<z.ZodNumber>;
            filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
                dimension: z.ZodString;
                operator: z.ZodEnum<typeof import("./type-enums").SemanticTriggerFilterOperatorsEnum>;
                values: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
            }, z.core.$strip>, z.ZodLiteral<false>]>>>;
            cron: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            tz: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            incrementalField: z.ZodOptional<z.ZodString>;
            ungrouped: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            identifier: z.ZodString;
            connectorType: z.ZodEnum<typeof import("../types").ConfiguredConnectorTypes>;
            name: z.ZodString;
            location: z.ZodString;
            config: z.ZodObject<{}, z.core.$loose>;
            enabled: z.ZodBoolean;
            actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
                identifier: z.ZodString;
                version: z.ZodString;
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                config: z.ZodRecord<z.ZodString, z.ZodAny>;
                inputParameters: z.ZodArray<z.ZodObject<{
                    name: z.ZodString;
                    description: z.ZodOptional<z.ZodString>;
                    type: z.ZodEnum<{
                        string: "string";
                        number: "number";
                        boolean: "boolean";
                        unknown: "unknown";
                        array: "array";
                        "simple-array": "simple-array";
                    }>;
                    required: z.ZodOptional<z.ZodBoolean>;
                    itemType: z.ZodOptional<z.ZodEnum<{
                        string: "string";
                        number: "number";
                        boolean: "boolean";
                    }>>;
                    items: z.ZodOptional<z.ZodArray<z.ZodAny>>;
                }, z.core.$strip>>;
                outputParameters: z.ZodRecord<z.ZodString, z.ZodAny>;
                mode: z.ZodOptional<z.ZodEnum<typeof import("./type-enums").ConnectorOrigin>>;
                createdAt: z.ZodOptional<z.ZodDate>;
                updatedAt: z.ZodOptional<z.ZodDate>;
            }, z.core.$strip>>>;
            webhooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
                identifier: z.ZodString;
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                actionIdentifier: z.ZodString;
                inputParameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>[]>>>;
                validation: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    selector: z.ZodString;
                    operator: z.ZodDefault<z.ZodOptional<z.ZodEnum<typeof import("./webhook").WebhookValidationOperator>>>;
                    value: z.ZodString;
                }, z.core.$strip>>>;
            }, z.core.$strip>>>;
            createdAt: z.ZodOptional<z.ZodDate>;
            updatedAt: z.ZodOptional<z.ZodDate>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
        metrics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
            name: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            source: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
                collection: z.ZodString;
                expr: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>]>;
            measures: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                type: z.ZodEnum<typeof import("./metrics").MetricMeasureTypeEnum>;
                expr: z.ZodString;
            }, z.core.$strip>, z.ZodBoolean]>>;
            dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                name: z.ZodString;
                description: z.ZodOptional<z.ZodString>;
                expr: z.ZodString;
            }, z.core.$strip>, z.ZodBoolean]>>>;
        }, z.core.$strip>, z.ZodBoolean]>>>;
    }, z.core.$strip>;
    templateId: z.ZodString;
    tenantId: z.ZodString;
}, z.core.$strip>;
export interface TemplateImplementationInterface {
    id: string;
    templateId: string;
    templateIdentifier: string;
    template: TemplateInterface;
    templateVersion: string | 'latest';
    tenantId: string;
    name: string;
    description: string;
    overrides: TemplateImplementationOverridesInterface;
    createdAt: Date;
    updatedAt: Date;
}
export type ShallowTemplateImplementationInterface = Omit<TemplateImplementationInterface, 'template' | 'overrides'>;
