import { NativeNumber16Type, PositionEditing, Viewer, RotationEditing, PrsEditing } from "vtxf-xe2/dist-node/xe2-base-objects";
import { ESSceneObject, PickedInfo } from "vtxf-xe2/dist-node/xe2-base-objects";
import { Event, getMinMaxPosition, JsonValue, Listener, PartialWithUndefinedReactivePropsToNativeProps, ReactivePropsToNativePropsAndChanged } from "vtxf-xe2/dist-node/xe2-base-utils";
import { AttributesType, IndexType } from "vtxf-xe2/dist-node/xe2-base-cesium";
import { SceneObjectKey } from "vtxf-xe2/dist-node/xe2-utils";
import { triangleIndicesToLine } from "./funcs";
import { AttributesJsonType, BoundingVolumeJsonType, CzmCustomPrimitiveUniformMapType, CzmPassType, CzmPrimitiveType, IndexJsonType } from "./types";
export declare class CzmCustomPrimitive extends ESSceneObject {
    static readonly type: string;
    get typeName(): string;
    get defaultProps(): {
        execOnceFuncStr: string | undefined;
        updateFuncStr: string | undefined;
        toDestroyFuncStr: string | undefined;
        name: string;
        ref: string | undefined;
        devTags: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<string[] | undefined>;
        extras: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<JsonValue>;
        show: boolean | undefined;
        allowPicking: boolean;
        allowPickingDepth: boolean;
        positionEditing: boolean;
        rotationEditing: boolean;
        editing: boolean;
        position: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        rotation: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        scale: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        maximumScale: number | undefined;
        minimumScale: number | undefined;
        pixelSize: number | undefined;
        showSceneScale: boolean | undefined;
        modelMatrix: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<NativeNumber16Type | undefined>;
        cull: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<boolean | undefined>;
        boundingVolume: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<BoundingVolumeJsonType | undefined>;
        renderState: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<JsonValue>;
        primitiveType: CzmPrimitiveType | undefined;
        pass: CzmPassType | undefined;
        vertexShaderSource: string | undefined;
        fragmentShaderSource: string | undefined;
        uniformMap: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<CzmCustomPrimitiveUniformMapType | undefined>;
        localPosition: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localRotation: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localScale: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localModelMatrix: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<NativeNumber16Type | undefined>;
        occlude: boolean | undefined;
        count: number | undefined;
        offset: number | undefined;
        instanceCount: number | undefined;
        castShadows: boolean | undefined;
        receiveShadows: boolean | undefined;
        executeInClosestFrustum: boolean | undefined;
        debugShowBoundingVolume: boolean | undefined;
        debugOverlappingFrustums: number | undefined;
        pickOnly: boolean | undefined;
        depthForTranslucentClassification: boolean | undefined;
        viewDistanceRange: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number, number] | undefined>;
        viewDistanceDebug: boolean;
    };
    get json(): JsonType;
    set json(value: JsonType);
    static readonly defaultRenderState: {
        depthTest: {
            enabled: boolean;
        };
        cull: {
            enabled: boolean;
            face: number;
        };
        depthMask: boolean;
        blending: {
            enabled: boolean;
            equationRgb: number;
            equationAlpha: number;
            functionSourceRgb: number;
            functionSourceAlpha: number;
            functionDestinationRgb: number;
            functionDestinationAlpha: number;
        };
    };
    static readonly defaultVertexShaderSource = "in vec3 position;\nin vec3 normal;\nin vec2 st;\nout vec3 v_normalEC;\nout vec2 v_st;\nvoid main()\n{\n    // \u5982\u679C\u8FD9\u4E00\u53E5\u6CE8\u91CA\uFF0C\u8981\u76F8\u5E94\u5730\u6CE8\u91CA\u6389attribute\u4E2D\u7684normal\uFF0C\u4E5F\u5C31\u662F\u8BF4\u9876\u70B9\u5C5E\u6027\u8981\u548Cshader\u4E2D\u7684\u4E00\u4E00\u5339\u914D\uFF01\n    v_normalEC = czm_normal * normal; \n    v_st = st;\n    gl_Position = czm_modelViewProjection * vec4(position, 1.0);\n}\n";
    static readonly defaultFragmentShaderSource = "in vec2 v_st;\nuniform sampler2D u_image;\nuniform vec4 u_color;\nvoid main()\n{\n    vec4 imageColor = texture(u_image, v_st);\n    out_FragColor = imageColor * u_color;\n}\n";
    static readonly defaultUniformMap: CzmCustomPrimitiveUniformMapType;
    static readonly defaultBoundingVolume: BoundingVolumeJsonType;
    static readonly defaultAttribute: AttributesType;
    static readonly defaultIndexTypedArray: Uint16Array;
    static readonly defaultDsAttribute: AttributesType;
    static readonly defaultDsIndexTypedArray: Uint16Array;
    static triangleIndicesToLine: typeof triangleIndicesToLine;
    get attributesJson(): AttributesJsonType | undefined;
    set attributesJson(value: AttributesJsonType | undefined);
    get attributesJsonChanged(): Listener<[AttributesType | undefined, AttributesType | undefined]>;
    get indexTypedArrayJson(): IndexJsonType | undefined;
    set indexTypedArrayJson(value: IndexJsonType | undefined);
    get indexTypedArrayJsonChanged(): Listener<[IndexType | undefined, IndexType | undefined]>;
    get geoJson(): JsonValue;
    set geoJson(value: JsonValue);
    get geoJsonStr(): string;
    set geoJsonStr(value: string);
    private _attributes;
    get attributes(): AttributesType | undefined;
    set attributes(value: AttributesType | undefined);
    get attributesChanged(): Listener<[AttributesType | undefined, AttributesType | undefined]>;
    private _indexTypedArray;
    get indexTypedArray(): IndexType | undefined;
    set indexTypedArray(value: IndexType | undefined);
    get indexTypedArrayChanged(): Listener<[IndexType | undefined, IndexType | undefined]>;
    private _pickedEvent;
    get pickedEvent(): Event<[PickedInfo]>;
    private _flyToEvent;
    get flyToEvent(): Listener<[number | undefined]>;
    flyTo(duration?: number): void;
    private _sceneScaleEvent;
    get sceneScaleEvent(): Event<[sceneScale: number | undefined, viewer: Viewer]>;
    private _sPositionEditing;
    get sPositionEditing(): PositionEditing;
    private _sRotationEditing;
    get sRotationEditing(): RotationEditing;
    private _sPrsEditing;
    get sPrsEditing(): PrsEditing;
    static defaults: {
        position: [number, number, number];
        rotation: [number, number, number];
        scale: [number, number, number];
        modelMatrix: NativeNumber16Type;
        viewDistanceRange: [number, number, number, number];
        viewerTagsEnums: [string, string][];
    };
    constructor(id?: SceneObjectKey);
    setUniformMap(value: CzmCustomPrimitiveUniformMapType): void;
    setLocalBoundingSphere(radius: number, center?: [number, number, number]): void;
    setLocalAxisedBoundingBox(min: [number, number, number], max: [number, number, number]): void;
    static getMinMaxPosition: typeof getMinMaxPosition;
    computeLocalAxisedBoundingBoxFromAttribute(attributeName?: string): {
        min: [number, number, number];
        max: [number, number, number];
    } | undefined;
    getProperties(language?: string): import("vtxf-xe2/dist-node/xe2-base-objects").Property[];
}
export declare namespace CzmCustomPrimitive {
    const createDefaultProps: () => {
        execOnceFuncStr: string | undefined;
        updateFuncStr: string | undefined;
        toDestroyFuncStr: string | undefined;
        name: string;
        ref: string | undefined;
        devTags: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<string[] | undefined>;
        extras: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<JsonValue>;
        show: boolean | undefined;
        allowPicking: boolean;
        allowPickingDepth: boolean;
        positionEditing: boolean;
        rotationEditing: boolean;
        editing: boolean;
        position: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        rotation: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        scale: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        maximumScale: number | undefined;
        minimumScale: number | undefined;
        pixelSize: number | undefined;
        showSceneScale: boolean | undefined;
        modelMatrix: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<NativeNumber16Type | undefined>;
        cull: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<boolean | undefined>;
        boundingVolume: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<BoundingVolumeJsonType | undefined>;
        renderState: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<JsonValue>;
        primitiveType: CzmPrimitiveType | undefined;
        pass: CzmPassType | undefined;
        vertexShaderSource: string | undefined;
        fragmentShaderSource: string | undefined;
        uniformMap: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<CzmCustomPrimitiveUniformMapType | undefined>;
        localPosition: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localRotation: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localScale: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number] | undefined>;
        localModelMatrix: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<NativeNumber16Type | undefined>;
        occlude: boolean | undefined;
        count: number | undefined;
        offset: number | undefined;
        instanceCount: number | undefined;
        castShadows: boolean | undefined;
        receiveShadows: boolean | undefined;
        executeInClosestFrustum: boolean | undefined;
        debugShowBoundingVolume: boolean | undefined;
        debugOverlappingFrustums: number | undefined;
        pickOnly: boolean | undefined;
        depthForTranslucentClassification: boolean | undefined;
        viewDistanceRange: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<[number, number, number, number] | undefined>;
        viewDistanceDebug: boolean;
    };
}
export interface CzmCustomPrimitive extends ReactivePropsToNativePropsAndChanged<ReturnType<typeof CzmCustomPrimitive.createDefaultProps>> {
}
declare type JsonType = PartialWithUndefinedReactivePropsToNativeProps<ReturnType<typeof CzmCustomPrimitive.createDefaultProps> & {
    type: string;
}> & {
    attributes?: AttributesJsonType;
    indexTypedArray?: IndexJsonType;
};
export {};
