import { AggregationProperty, CalculatedMember, CalculationProperty, Cube, Dimension, EntityType, NamedSet, ParameterProperty, RestrictedMeasureProperty, VarianceMeasureProperty } from '@metad/ocap-core'; import { MDXHierarchyFilter, MDXProperty } from './filter'; export type WithMemberType = CalculatedMember | NamedSet; export declare function calculationPropertyToFormula(property: CalculationProperty, slicers?: MDXHierarchyFilter[]): string; /** * 1. Calculate dependent calculated fields from the CalculationProperty of EntityType. These fields may not come from the MDX CalculatedMembers of the Model, so they need to be calculated separately. * 2. Replace the parameters in the formula with actual values * * @param members * @param calculationProperties * @param formula * @param values Actual values of parameters */ export declare function addCalculatedMember(formula: string, members: Record, calculationProperties: Array, parameters: Array, slicers?: MDXHierarchyFilter[], values?: Record): string; /** * Calculate dependent calculated members from MDX CalculatedMembers * * @param members * @param calculatedMembers * @param formula */ export declare function addDependCalculatedMember(members: Record, calculatedMembers: CalculatedMember[], formula: string): void; /** * Calculated members that make calculations dependent on measures and dimensions that contain members * * @param dimensions Measures or has members dimensions * @param entityType EntityType * @param filters Filters */ export declare function withCalculationMembers(members: Record, dimensions: Array, cube: Cube, entityType: EntityType, filters?: MDXHierarchyFilter[], values?: Record): Record; export declare function sortWithMembers(members: Record): Array; /** * Serialized Conditional Aggregation Metrics * * @param property * @returns */ export declare function serializeAggregationProperty(property: AggregationProperty): string; /** * @todo also need to implement the constantDimensions condition * * @param property * @param filters * @returns */ export declare function serializeRestrictedMeasureProperty(property: RestrictedMeasureProperty, filters: MDXHierarchyFilter[]): string; /** * Serializes the variance measure into a calculation formula * * @param property * @returns */ export declare function serializeVarianceMeasureProperty(property: VarianceMeasureProperty): string; /** * Convert dimension configuration to MDX statements. You need to handle the case where `parameter` is used. * Otherwise, use `members` fixed value. Otherwise, use all member functions of the dimension. {@link Members} * * @param dimension * @returns */ export declare function serializeMemberSet(dimension: Dimension): string; export declare function serializeDimensionMembers(dimension: Dimension): string; /** * Serialize parameter value based on parameter definitions and actual values * * @param parameter * @param values * @returns value string */ export declare function serializeParameter(parameter: ParameterProperty, values: Record): any;