import type { ScaleAlignment } from 'ag-charts-core';
import { AbstractScale } from './abstractScale';
/**
 * Maps a discrete domain to a continuous numeric range.
 */
export declare abstract class BandScale<D, I = number> extends AbstractScale<D, number, I> {
    static is(value: unknown): value is BandScale<any, any>;
    abstract readonly type: 'category' | 'unit-time' | 'ordinal-time';
    protected invalid: boolean;
    range: number[];
    round: boolean;
    protected _bandwidth: number;
    get bandwidth(): number;
    private _step;
    get step(): number;
    protected _inset: number;
    get inset(): number;
    protected _rawBandwidth: number;
    get rawBandwidth(): number;
    set padding(value: number);
    get padding(): number;
    /**
     * The ratio of the range that is reserved for space between bands.
     */
    private _paddingInner;
    set paddingInner(value: number);
    get paddingInner(): number;
    /**
     * The ratio of the range that is reserved for space before the first
     * and after the last band.
     */
    private _paddingOuter;
    set paddingOuter(value: number);
    get paddingOuter(): number;
    abstract readonly bands: readonly D[];
    /** Override in subclass to provide band count without triggering full band materialization */
    protected getBandCountForUpdate(): number;
    protected refresh(): void;
    convert(d: D, options?: {
        clamp?: boolean;
        alignment?: ScaleAlignment;
        alignmentExclusive?: boolean;
    }): number;
    getDomainMinMax(): [undefined, undefined] | [D, D];
    protected invertNearestIndex(position: number): number;
    update(): void;
    protected ordinalRange(i: number): number;
    abstract findIndex(value: D, alignment?: ScaleAlignment, alignmentExclusive?: boolean): number | undefined;
}
