import { IAnimateOption, IAttribute, IBlendOptions, ICameraService, IElements, IEncodeFeature, IFontService, IGlobalConfigService, IIconService, ILayer, ILayerModel, ILayerService, IMapService, IModel, IModelUniform, IPickingService, IRendererService, IShaderModuleService, IStyleAttributeService, ITexture2D, ITexture2DInitializationOptions, Triangulation } from '@antv/l7-core';
export declare type styleSingle = number | string | [string, (single: any) => number] | [string, [number, number]];
export declare type styleOffset = string | [number, number] | [string, (single: any) => number];
export declare type styleColor = string | [string, (single: any) => string] | [string, [string, string]];
export interface IDataTextureFrame {
    data: number[];
    width: number;
    height: number;
}
export interface ICellProperty {
    attr: string;
    count: number;
}
export default class BaseModel<ChildLayerStyleOptions = {}> implements ILayerModel {
    triangulation: Triangulation;
    createTexture2D: (options: ITexture2DInitializationOptions) => ITexture2D;
    protected layer: ILayer;
    protected dataTexture: ITexture2D;
    protected DATA_TEXTURE_WIDTH: number;
    protected rowCount: number;
    protected cacheStyleProperties: {
        thetaOffset: styleSingle | undefined;
        opacity: styleSingle | undefined;
        strokeOpacity: styleSingle | undefined;
        strokeWidth: styleSingle | undefined;
        stroke: styleColor | undefined;
        offsets: styleOffset | undefined;
    };
    protected cellLength: number;
    protected cellProperties: ICellProperty[];
    protected cellTypeLayout: number[];
    protected stylePropertyesExist: {
        hasThetaOffset: number;
        hasOpacity: number;
        hasStrokeOpacity: number;
        hasStrokeWidth: number;
        hasStroke: number;
        hasOffsets: number;
    };
    protected dataTextureTest: boolean;
    protected readonly configService: IGlobalConfigService;
    protected shaderModuleService: IShaderModuleService;
    protected rendererService: IRendererService;
    protected iconService: IIconService;
    protected fontService: IFontService;
    protected styleAttributeService: IStyleAttributeService;
    protected mapService: IMapService;
    protected cameraService: ICameraService;
    protected layerService: ILayerService;
    protected pickingService: IPickingService;
    constructor(layer: ILayer);
    /**
     * 清除上一次的计算结果 - 全量清除
     */
    clearLastCalRes(): void;
    getCellTypeLayout(): number[];
    /**
     * 判断数据纹理是否需要重新计算 - 根据传入的值进行判断
     * @param options
     * @returns
     */
    dataTextureNeedUpdate(options: {
        thetaOffset?: styleSingle;
        opacity?: styleSingle;
        strokeOpacity?: styleSingle;
        strokeWidth?: styleSingle;
        stroke?: styleColor;
        offsets?: styleOffset;
        textOffset?: styleOffset;
    }): boolean;
    /**
     * 判断当前的样式中哪些是需要进行数据映射的，哪些是常量，同时计算用于构建数据纹理的一些中间变量
     * @param options
     */
    judgeStyleAttributes(options: {
        thetaOffset?: styleSingle;
        opacity?: styleSingle;
        strokeOpacity?: styleSingle;
        strokeWidth?: styleSingle;
        stroke?: styleColor;
        offsets?: styleOffset;
    }): void;
    /**
     * 判断变量 stroke 是否是常量值
     * @param stroke
     * @returns
     */
    isStaticColor(stroke: styleColor): boolean;
    /**
     * 获取 stroke 颜色并做兼容处理
     * @param stroke
     * @returns
     */
    getStrokeColor(stroke: styleColor): number[];
    /**
     * 判断 offsets 是否是常量
     * @param offsets
     * @returns
     */
    isOffsetStatic(offsets: styleOffset): boolean;
    /**
     * 补空位
     * @param d
     * @param count
     */
    patchMod(d: number[], count: number): void;
    /**
     * 根据映射的数据字段往推入数据
     * @param d
     * @param cellData
     * @param cellPropertiesLayouts
     */
    patchData(d: number[], cellData: IEncodeFeature, cellPropertiesLayouts: ICellProperty[]): void;
    /**
     * 计算推入数据纹理的数据
     * @param cellLength
     * @param encodeData
     * @param cellPropertiesLayouts
     * @returns
     */
    calDataFrame(cellLength: number, encodeData: IEncodeFeature[], cellPropertiesLayouts: ICellProperty[]): IDataTextureFrame;
    getBlend(): IBlendOptions;
    getDefaultStyle(): unknown;
    getUninforms(): IModelUniform;
    getAnimateUniforms(): IModelUniform;
    needUpdate(): boolean;
    buildModels(): IModel[];
    initModels(): IModel[];
    clearModels(): void;
    getAttribute(): {
        attributes: {
            [attributeName: string]: IAttribute;
        };
        elements: IElements;
    };
    render(): void;
    protected registerBuiltinAttributes(): void;
    protected animateOption2Array(option: IAnimateOption): number[];
    protected startModelAnimate(): void;
}
