import { z } from 'zod';
import { DatasetStatusEnum, DatasetTypeEnum } from '../type-enums';
import { CollectionInterface } from './collection.interface';
import { DimensionsInterface } from './dimensions.interface';
import { MeasuresInterface } from './measures.interface';
import { MetaInterface } from './meta.interface';
import { PreAggregationsInterface } from './pre-aggregations.interface';
import { RelationsInterface } from './relations.interface';
import { SegmentsInterface } from './segments.interface';
export declare const DatasetSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    type: z.ZodEnum<typeof 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("./filters.interface").FiltersInterface, unknown, z.core.$ZodTypeInternals<import("./filters.interface").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>;
export interface DatasetInterface {
    key: string;
    name: string;
    description: string;
    status: DatasetStatusEnum;
    type: DatasetTypeEnum;
    prefix: string;
    parent?: string;
    sql?: string;
    refreshSql?: string;
    meta?: MetaInterface;
    collection?: CollectionInterface;
    dimensions?: DimensionsInterface;
    segments?: SegmentsInterface;
    relations?: RelationsInterface;
    measures?: MeasuresInterface;
    preAggregations?: PreAggregationsInterface;
}
