import { AxisDomain, AxisScale, ChartDataSourceItem, ChartExtend, ChartOptions, ChartXAxisType, LineChartDataType } from '../../../types/vega-chart';
import { InputProcessor } from './input-processor';
import { LayoutProcessResultType } from './layout-input-processor';
/** The XAxisInputProcessor class generates X-axis options for a line chart based on input data and previous layout results. */
export declare class XAxisInputProcessor implements InputProcessor<ChartOptions<LineChartDataType>, ChartExtend<AxisScale<AxisDomain>>, LayoutProcessResultType> {
  /**
   * This function generates X-axis options for a line chart based on input data and previous layout results.
   *
   * @param {ChartOptions<LineChartDataType>} input - An object containing chart options, including the data source, x-axis options, and
   * container element.
   * @param {LayoutProcessResultType} [previousOutput] - The optional output from the previous layout
   * process. It is of type LayoutProcessResultType and contains information about the innerWidth and
   * innerHeight of the chart container.
   * @returns {ChartExtend<AxisScale<AxisDomain>>} a ChartExtend object that contains the options for the X-axis of a line chart, including
   * the scale generated by the scaleGenerator and the axis options generated by the axisGenerator.
   */
  process(input: ChartOptions<LineChartDataType>, previousOutput: LayoutProcessResultType): ChartExtend<AxisScale<AxisDomain>>;
  /**
   * get x scale
   *
   * @param {ChartDataSourceItem[]} data data source
   * @param {number} width svg width
   * @param {ChartXAxisType} xAxisType x axis data type
   * @param {number} padding x position offset value
   * @param {(item:string,nextItem:string)=>number} sorter the sorter function using when the category type
   * @returns {AxisScale<AxisDomain>} x scale
   */
  protected getScale(data: ChartDataSourceItem[] | ChartDataSourceItem[][], width: number, xAxisType: ChartXAxisType, padding?: number, sorter?: Required<ChartOptions<unknown>>['xAxis']['sorter']): AxisScale<AxisDomain>;
}
