import { HashMap } from 'tvrender/lib/core/util.js';
import Model from '../model/Model.js';
import { OrdinalNumber, OrdinalRawValue } from '../util/types.js';
import { TimePoint } from './scale-time/types.js';
interface MarksCache {
    maxIndexesPerMark: number;
    marks: TimePoint[];
}
declare class OrdinalMeta {
    readonly categories: OrdinalRawValue[];
    extraCategory: OrdinalRawValue[];
    private loadMoreCategory;
    cache: MarksCache | null;
    private _marksByWeight;
    private _needCollect;
    private _deduplication;
    private _map;
    private _appendCount;
    dataInterval: string;
    utcOffsetTime?: number;
    readonly uid: number;
    constructor(opt: {
        categories?: OrdinalRawValue[];
        extraCategory?: OrdinalRawValue[];
        loadMoreCategory?: (startTime: number, count: number) => number[];
        needCollect?: boolean;
        deduplication?: boolean;
        dataInterval?: string;
        utcOffsetTime?: number;
        marksByWeight?: HashMap<TimePoint[]>;
    });
    static createByAxisModel(axisModel: Model): OrdinalMeta;
    getOrdinal(category: OrdinalRawValue): OrdinalNumber;
    getMarksByWeight(): HashMap<TimePoint[], string | number>;
    reFillExtraCategories(startTime: number): void;
    appendData(data: string[]): void;
    getCategories(): OrdinalRawValue[];
    getClosestTime(time: string): number;
    getLastCategories(): OrdinalRawValue;
    getCategoriesSize(): number;
    /**
     * @return The ordinal. If not found, return NaN.
     */
    parseAndCollect(category: OrdinalRawValue | OrdinalNumber): OrdinalNumber;
    parseAndExtra(category: OrdinalRawValue | OrdinalNumber): OrdinalNumber;
    private _getOrCreateMap;
}
export default OrdinalMeta;
