import { PropertyValues } from 'lit';
import { Constructor } from 'type-fest';
import { CounterBaseMixin } from './counter-base.js';
import { PartData } from '../types/group.js';
import { PartPreprocessedData } from '../utils/preprocess-part-data.js';
import { AvailableNumberAdapterValueType } from '../number-adapter/index.js';
export interface PartsOptions {
    sampleCount: number;
    /**
     * 可以通过该属性将数字转换为你想要的任意字符串.
     */
    digitToChar: Record<string | number, string> | string[];
    /**
     * 小数点分隔符.
     */
    decimalSeparator: string;
    /**
     * 当**位数不足**时, 强制补全的 [整数, 小数] 位数. 为空时位数自适应.
     */
    minPlaces: [number | undefined, number | undefined];
    fillChar: string;
    /**
     * 数据类型.
     *
     * 1. `'string'`: 字符串类型.
     *  1. 不会使用 `decimalSeparator` 截取小数部分.
     * 2. `'number'`: 数字类型.
     *
     *  @default `'number'`
     */
    type: 'string' | 'number';
}
export declare class CounterPartsMixinInterface<V extends AvailableNumberAdapterValueType> {
    parts: PartData[];
    oldParts: PartData[];
    partPreprocessDataList: PartPreprocessedData[][];
    get partsOptions(): Partial<PartsOptions>;
    set partsOptions(value: Partial<PartsOptions>);
    sampling(from: V, to: V): V[];
    sampleSplit(samples: V[]): V[][];
    sampleToString(value: V): string;
    shouldRebuildParts(changedProperties: PropertyValues<this>): boolean;
}
export declare const CounterPartsMixin: <V extends AvailableNumberAdapterValueType, T extends ReturnType<typeof CounterBaseMixin<V>> = Constructor<import("./counter-base.js").CounterBaseMixinInterface<V>> & Constructor<import("lit").LitElement>>(superClass: T) => Constructor<CounterPartsMixinInterface<V>> & T;
