import { IAggregator, IChart, IMutField, PartialChart, TerseSpec } from '../interfaces'; type OnWarn = (message: string) => void; export declare function terseComputedFid(name: string): string; /** * Parse the aggregate shorthand: `aggName '(' fieldRef ')'` where aggName must be * exactly one of the shorthand aggregates and the parens are the outermost pair. * Anything else is returned as a plain field name (e.g. `'log(x)'`). */ export declare function parseShorthand(ref: string): { field: string; aggregate?: IAggregator; }; /** * Expand a TerseSpec into a PartialChart (docs/terse-spec-design.md §5). * The dimensions/measures pools are rebuilt from `meta` (newChart semantics) * plus the inline computed fields; terse never carries pools. * Pure: no store, no side effects beyond `onWarn`. */ export declare function expandTerse(spec: TerseSpec, meta: IMutField[], onWarn?: OnWarn): PartialChart; /** * Project a canonical IChart back into a TerseSpec (docs/terse-spec-design.md §6). * Lossy by design: pool fields not referenced by any channel/filter are dropped, * and inexpressible pieces (paint / binCount / dateTimeFeature computed fields, * regexp filters) are skipped with a warning. Persistence must stay canonical. */ export declare function projectTerse(chart: IChart, onWarn?: OnWarn): TerseSpec; export {};