import type { MalloyElement } from './ast'; import type { FieldUsage, PipeSegment, SourceDef, RequiredGroupBy, Annotation, PartitionCompositeDesc, StructDef } from '../model/malloy_types'; type CompositeCouldNotFindFieldError = { code: 'could_not_find_field'; data: { field: FieldUsage; }; }; type CompositeError = { code: 'not_a_composite_source'; data: { path: string[]; }; } | CompositeCouldNotFindFieldError | { code: 'composite_source_not_defined'; data: { path: string[]; }; } | { code: 'composite_source_not_a_join'; data: { path: string[]; }; } | { code: 'composite_source_is_not_joinable'; data: { path: string[]; }; } | { code: 'no_suitable_composite_source_input'; data: { failures: CompositeFailure[]; path: string[]; usage: FieldUsage[]; }; }; type CompositeIssue = { type: 'join-failed'; failures: CompositeFailure[]; path: string[]; firstUsage: FieldUsage; } | { type: 'missing-field'; field: FieldUsage; } | { type: 'missing-required-group-by'; requiredGroupBy: RequiredGroupBy; }; interface CompositeFailure { source: SourceDef; issues: CompositeIssue[]; } export declare function getExpandedSegment(segment: PipeSegment, inputSource: SourceDef): PipeSegment; export declare function getPartitionCompositeDesc(annotation: Annotation | undefined, structDef: StructDef, logTo: MalloyElement): PartitionCompositeDesc | undefined; type SingleNarrowedCompositeFieldResolution = { source: SourceDef; nested?: SingleNarrowedCompositeFieldResolution | undefined; }[]; type NarrowedCompositeFieldResolutionByJoinName = { [name: string]: NarrowedCompositeFieldResolution; }; export interface NarrowedCompositeFieldResolution { source: SingleNarrowedCompositeFieldResolution | undefined; joined: NarrowedCompositeFieldResolutionByJoinName; } export declare function resolveCompositeSources(source: SourceDef, segment: PipeSegment): { sourceDef: SourceDef | undefined; error: undefined; } | { error: CompositeError; sourceDef: undefined; }; export declare function fieldUsagePaths(fieldUsage: FieldUsage[]): string[][]; export declare function formatFieldUsages(fieldUsage: FieldUsage[]): string; export declare function isEmptyFieldUsage(fieldUsage: FieldUsage[]): boolean; export declare function fieldUsageIsPlural(fieldUsage: FieldUsage[]): boolean; export declare function formatFieldUsage(fieldUsage: string[]): string; export declare function unique(values: T[]): T[]; export declare function mergeFieldUsage(...usages: FieldUsage[][]): FieldUsage[]; export declare function mergeFieldUsage(...usages: (FieldUsage[] | undefined)[]): FieldUsage[] | undefined; export declare function fieldUsageDifference(a: FieldUsage[], b: FieldUsage[]): FieldUsage[]; export declare function emptyFieldUsage(): FieldUsage[]; export declare function joinedFieldUsage(joinPath: string[], fieldUsage: FieldUsage[]): FieldUsage[]; export declare function fieldUsageJoinPaths(fieldUsage: FieldUsage[]): string[][]; export declare function checkRequiredGroupBys(compositeResolvedSourceDef: SourceDef, segment: PipeSegment): RequiredGroupBy[]; export declare function pathEq(a: string[], b: string[]): boolean; export declare function pathBegins(path: string[], prefix: string[]): boolean; export declare function hasCompositesAnywhere(source: SourceDef): boolean; export declare function logCompositeError(error: CompositeError, logTo: MalloyElement): void; export {};