import { Transform as EffectsTransform, spec } from '@galacean/effects';
import { Quaternion, Euler, Vector3, Matrix4 } from './math';
import type { BaseTransform } from '../index';
/**
 * Model 插件中的对象类型
 */
export declare enum PObjectType {
    none = 0,
    mesh = 1,
    texture = 2,
    material = 3,
    light = 4,
    camera = 5,
    skybox = 6,
    skin = 7,
    morph = 8,
    skeleton = 9,
    animation = 10,
    animationManager = 11,
    reference = 12
}
/**
 * 灯光类型
 */
export declare enum PLightType {
    directional = 0,
    point = 1,
    spot = 2,
    ambient = 3
}
/**
 * 纹理类型
 */
export declare enum PTextureType {
    none = 0,
    t2d = 1,
    t3d = 2,
    cube = 3
}
/**
 * 材质类型
 */
export declare enum PMaterialType {
    none = 0,
    unlit = 1,
    pbr = 2,
    normalVis = 3,
    simpleFilter = 4,
    shadowBase = 5,
    shadowFilter = 6,
    skyboxFilter = 7
}
/**
 * 混合模式
 */
export declare enum PBlendMode {
    opaque = 0,
    masked = 1,
    translucent = 2,
    additive = 3
}
/**
 * 面片朝向模式
 */
export declare enum PFaceSideMode {
    both = 0,
    front = 1,
    back = 2
}
export declare enum PShadowType {
    none = 0,
    standard = 1,
    variance = 2,
    expVariance = 3
}
export declare const PBRShaderGUID: string;
export declare const UnlitShaderGUID: string;
/**
 * 插件变换类
 */
export declare class PTransform {
    private translation;
    private rotation;
    private scale;
    /**
     * 从矩阵设置数据
     * @param matrix - 4阶矩阵
     * @returns
     */
    fromMatrix4(matrix: Matrix4): this;
    /**
     * 从 GE 变换设置数据
     * @param trans - GE 变换对象或数据
     * @returns
     */
    fromEffectsTransform(trans: EffectsTransform | BaseTransform): this;
    /**
     * 转成 GE 变换对象
     * @param transform - GE 变换对象
     * @returns
     */
    toEffectsTransform(transform: EffectsTransform): EffectsTransform;
    /**
     * 通过 GE 变换参数设置
     * @param trans - GE 变换参数
     * @returns
     */
    fromBaseTransform(trans: BaseTransform): this;
    /**
     * 获取平移
     * @returns
     */
    getTranslation(): Vector3;
    /**
     * 设置平移
     * @param val - 平移
     */
    setTranslation(val: Vector3 | spec.vec3): void;
    /**
     * 获取位置
     * @returns
     */
    getPosition(): Vector3;
    /**
     * 设置位置
     * @param val - 位置
     */
    setPosition(val: Vector3 | spec.vec3): void;
    /**
     * 获取旋转
     * @returns
     */
    getRotation(): Quaternion;
    /**
     * 设置旋转
     * @param val - 旋转，可能是四元数或欧拉角
     */
    setRotation(val: Quaternion | Euler | Vector3 | spec.vec4 | spec.vec3): void;
    /**
     * 获取缩放
     * @returns
     */
    getScale(): Vector3;
    /**
     * 设置缩放
     * @param val - 缩放
     */
    setScale(val: Vector3 | spec.vec3): void;
    /**
     * 获取矩阵
     * @returns
     */
    getMatrix(): Matrix4;
    /**
     * 设置矩阵
     * @param mat - 4阶矩阵
     */
    setMatrix(mat: Matrix4 | spec.mat4): void;
}
/**
 * 坐标系类
 */
export declare class PCoordinate {
    /**
     * 原点
     */
    origin: Vector3;
    /**
     * X 轴
     */
    xAxis: Vector3;
    /**
     * Y 轴
     */
    yAxis: Vector3;
    /**
     * Z 轴
     */
    zAxis: Vector3;
    constructor();
    /**
     * 从插件变换创建坐标系
     * @param trans - 变换
     * @param invert - 是否旋转取反
     * @returns 坐标系对象
     */
    fromPTransform(trans: PTransform, invert?: boolean): this;
    /**
     * 从旋转矩阵创建坐标系
     * @param matrix - 矩阵
     */
    fromRotationMatrix(matrix: Matrix4): void;
}
/**
 * 全局状态
 */
export declare class PGlobalState {
    /**
     * 是否 WebGL2
     */
    isWebGL2: boolean;
    /**
     * 是否共享 Shader
     */
    shaderShared: boolean;
    /**
     * 运行时环境，编辑器模式或设备模式
     */
    runtimeEnv: string;
    /**
     * 兼容模式，glTF 模式或 Tiny3d 模式
     */
    compatibleMode: string;
    /**
     * 是否显示包围盒
     */
    visBoundingBox: boolean;
    /**
     * 渲染输出结果模式，可以换中间渲染数据
     */
    renderMode3D: spec.RenderMode3D;
    /**
     * UV结果输出时，棋盘格的大小控制，范围(0, 1)
     */
    renderMode3DUVGridSize: number;
    private static instance;
    /**
     * 获取单例
     * @returns
     */
    static getInstance(): PGlobalState;
    private constructor();
    /**
     * 重置数据
     */
    reset(): void;
    /**
     * 是否可视化渲染中间结果
     */
    hasRenderMode3D(): boolean;
    /**
     * 是否编辑器模式
     */
    get isEditorEnv(): boolean;
    /**
     * 是否设备模式
     */
    get isDeviceEnv(): boolean;
    /**
     * 是否 Tiny3d 模式
     */
    get isTiny3dMode(): boolean;
    /**
     * 是否 glTF 模式
     */
    get isGLTFMode(): boolean;
}
