import 'reflect-metadata';
import { IAttribute } from '../renderer/IAttribute';
import { IElements } from '../renderer/IElements';
import { ILayer, IWorkerOption } from './ILayerService';
import { IEncodeFeature, IScaleOptions, IStyleAttribute, IStyleAttributeInitializationOptions, IStyleAttributeService, IStyleAttributeUpdateOptions, Triangulation } from './IStyleAttributeService';
/**
 * 每个 Layer 都拥有一个，用于管理样式属性的注册和更新
 */
export default class StyleAttributeService implements IStyleAttributeService {
    attributesAndIndices: {
        attributes: {
            [attributeName: string]: IAttribute;
        };
        elements: IElements;
        count: number | null;
    };
    private readonly rendererService;
    private attributes;
    private triangulation;
    private featureLayout;
    registerStyleAttribute(options: Partial<IStyleAttributeInitializationOptions>): IStyleAttribute;
    updateScaleAttribute(scaleOption: IScaleOptions): void;
    updateStyleAttribute(attributeName: string, options: Partial<IStyleAttributeInitializationOptions>, updateOptions?: Partial<IStyleAttributeUpdateOptions>): void;
    getLayerStyleAttributes(): IStyleAttribute[] | undefined;
    getLayerStyleAttribute(attributeName: string): IStyleAttribute | undefined;
    getLayerAttributeScale(name: string): unknown;
    updateAttributeByFeatureRange(attributeName: string, features: IEncodeFeature[], startFeatureIdx?: number, endFeatureIdx?: number, layer?: ILayer): void;
    createAttributesAndIndicesAscy(features: IEncodeFeature[], segmentNumber: number, workerOptions: IWorkerOption): Promise<unknown>;
    createAttributesAndIndices(features: IEncodeFeature[], triangulation: Triangulation, segmentNumber: number): {
        attributes: {
            [attributeName: string]: IAttribute;
        };
        elements: IElements;
        count: number | null;
    };
    createAttributes(features: IEncodeFeature[], triangulation: Triangulation): {
        attributes: {
            [attributeName: string]: IAttribute;
        };
    };
    clearAllAttributes(): void;
    private getDescriptorsWithOutFunc;
}
