import { TCubeDimension, TCubeFolder, TCubeMeasure, TCubeMemberType } from '@cubejs-client/core';
import { Agent } from './agent';

type Measure = TCubeMeasure & {
    memberType?: 'measure';
    title?: string;
};
type Dimension = TCubeDimension & {
    memberType?: 'dimension';
    title?: string;
};
type CalculatedField = {
    id?: string;
    name: string;
    expression: string;
    semanticView?: string;
    type: 'number' | 'string' | 'boolean' | 'time';
    memberType?: 'measure' | 'dimension';
    format?: 'currency' | 'percent' | 'number' | 'id' | 'link' | 'imageUrl' | null;
    title?: string | null;
    custom?: boolean;
    shortTitle?: string | null;
    description?: string | null;
    aliasMember?: string | null;
};
export type DataAssetMember = (Dimension | Measure | CalculatedField) & {
    isSelected?: boolean;
    isCustom?: boolean;
};
export type DataAssetType = 'cube:cube' | 'cube:view' | 'table';
export interface DataAsset {
    id: string;
    name: string;
    type: DataAssetType;
    measures: Measure[];
    dimensions: Dimension[];
}
export type SemanticViewMember = {
    name: string;
    type: TCubeMemberType;
    title?: string;
    format?: string;
    aliasMember?: string;
    drillMembers?: string[];
    description?: string;
};
export interface SemanticView {
    name: string;
    title: string;
    measures: SemanticViewMember[];
    dimensions: SemanticViewMember[];
    folders?: TCubeFolder[];
}
export type { Agent };
//# sourceMappingURL=data-assets.d.ts.map