import type { ResponsiveChartDefinition, ChartAxisOptions, ChartBuildContext, CheckedChartSpec, ChartDefinitionOptions, ChartDefinition, ResponsiveChartConfig, ChartLayoutOptions, ChartMark, ChartMarkDatum, ChartMarkPointX, ChartMarkPointY, ChartPoint, ChartScene, ChartSize, ChartSpec, ChartSpecDatum, ChartSpecXValue, ChartSpecYValue, StaticChartDefinition, ChartTheme, ChartValue } from './types.js';
export declare const defaultChartTheme: ChartTheme;
type DefinedStaticChart<TMarks extends readonly ChartMark<any, any, any>[], TSpec extends ChartSpec<TMarks>> = Omit<StaticChartDefinition<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>, keyof ChartDefinitionOptions | keyof ChartSpec> & Omit<TSpec, keyof ChartDefinitionOptions> & Pick<StaticChartDefinition<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>, Exclude<Extract<keyof TSpec, keyof ChartDefinitionOptions>, 'tooltip'>> & Pick<TSpec, Extract<keyof TSpec, 'tooltip'>>;
type ChartDefinitionDatum<TDefinition> = TDefinition extends ChartDefinition<infer TDatum, any, any> ? TDatum : never;
type ChartDefinitionXValue<TDefinition> = TDefinition extends ChartDefinition<any, infer TXValue, any> ? TXValue : never;
type ChartDefinitionYValue<TDefinition> = TDefinition extends ChartDefinition<any, any, infer TYValue> ? TYValue : never;
type ChartDefinitionWithOptions<TDefinition, TOptions> = Omit<TDefinition, keyof TOptions> & TOptions;
type DefinedResponsiveChart<TSpec extends {
    marks: readonly ChartMark<any, any, any>[];
    x?: ChartAxisOptions<any> | null;
    y?: ChartAxisOptions<any> | null;
}> = Omit<ResponsiveChartDefinition<ChartSpecDatum<TSpec>, ChartSpecXValue<TSpec>, ChartSpecYValue<TSpec>>, keyof ChartDefinitionOptions> & {
    chart: (context: ChartBuildContext) => CheckedChartSpec<TSpec>;
};
export declare function defineChart<const TMarks extends readonly ChartMark<any, any, any>[], const TSpec extends ChartSpec<TMarks>>(spec: TSpec & {
    marks: TMarks;
} & ChartDefinitionOptions<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>): DefinedStaticChart<TMarks, TSpec>;
export declare function defineChart<const TSpec extends {
    marks: readonly ChartMark<any, any, any>[];
    x?: ChartAxisOptions<any> | null;
    y?: ChartAxisOptions<any> | null;
}, TTooltipHost extends string = never>(config: ResponsiveChartConfig<TSpec, TTooltipHost>): Omit<ResponsiveChartDefinition<ChartSpecDatum<TSpec>, ChartSpecXValue<TSpec>, ChartSpecYValue<TSpec>>, keyof ChartDefinitionOptions> & ResponsiveChartConfig<TSpec, TTooltipHost>;
export declare function defineChart<const TSpec extends {
    marks: readonly ChartMark<any, any, any>[];
    x?: ChartAxisOptions<any> | null;
    y?: ChartAxisOptions<any> | null;
}>(chart: (context: ChartBuildContext) => CheckedChartSpec<TSpec>): DefinedResponsiveChart<TSpec>;
export declare function defineChart<const TMarks extends readonly ChartMark<any, any, any>[], const TSpec extends ChartSpec<TMarks>, const TOptions extends ChartDefinitionOptions<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>>(spec: TSpec & {
    marks: TMarks;
} & ChartDefinitionOptions<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>, options: TOptions): ChartDefinitionWithOptions<DefinedStaticChart<TMarks, TSpec>, TOptions>;
export declare function defineChart<const TSpec extends {
    marks: readonly ChartMark<any, any, any>[];
    x?: ChartAxisOptions<any> | null;
    y?: ChartAxisOptions<any> | null;
}, const TOptions extends ChartDefinitionOptions<ChartSpecDatum<TSpec>, ChartSpecXValue<TSpec>, ChartSpecYValue<TSpec>>>(chart: (context: ChartBuildContext) => TSpec, options: TOptions): ChartDefinitionWithOptions<DefinedResponsiveChart<TSpec>, TOptions>;
export declare function defineChart<const TMarks extends readonly ChartMark<any, any, any>[], const TSpec extends ChartSpec<TMarks>, const TOptions extends ChartDefinitionOptions<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>>(config: {
    chart: (context: ChartBuildContext) => TSpec & {
        marks: TMarks;
    };
}, options: TOptions): ChartDefinitionWithOptions<DefinedResponsiveChart<TSpec & {
    marks: TMarks;
}>, TOptions>;
export declare function defineChart<const TDefinition extends StaticChartDefinition<any, any, any>, const TOptions extends ChartDefinitionOptions<ChartDefinitionDatum<TDefinition>, ChartDefinitionXValue<TDefinition>, ChartDefinitionYValue<TDefinition>>>(definition: TDefinition, options: TOptions): ChartDefinitionWithOptions<NoInfer<TDefinition>, NoInfer<TOptions>>;
export declare function defineChart<const TDefinition extends ResponsiveChartDefinition<any, any, any>, const TOptions extends ChartDefinitionOptions<ChartDefinitionDatum<TDefinition>, ChartDefinitionXValue<TDefinition>, ChartDefinitionYValue<TDefinition>>>(definition: TDefinition, options: TOptions): ChartDefinitionWithOptions<NoInfer<TDefinition>, NoInfer<TOptions>>;
export declare function createChartScene<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(definition: StaticChartDefinition<TDatum, TXValue, TYValue>, size: ChartSize, layout?: ChartLayoutOptions): ChartScene<TDatum, TXValue, TYValue>;
export declare function findNearestPoint<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(scene: ChartScene<TDatum, TXValue, TYValue>, x: number, y: number, maxDistance?: number, points?: readonly ChartPoint<TDatum, TXValue, TYValue>[]): ChartPoint<TDatum, TXValue, TYValue> | null;
/** Points whose presented anchors are inside an active viewport clip. */
export declare function viewportInteractionPoints<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(scene: ChartScene<TDatum, TXValue, TYValue>, points?: readonly ChartPoint<TDatum, TXValue, TYValue>[]): readonly ChartPoint<TDatum, TXValue, TYValue>[];
export {};
