import { ILayer, ILayerPlugin } from '@antv/l7-core';
import 'reflect-metadata';
interface IDirectionalLight {
    type: 'directional';
    direction: [number, number, number];
    ambient: [number, number, number];
    diffuse: [number, number, number];
    specular: [number, number, number];
}
interface ISpotLight {
    type: 'spot';
    position: [number, number, number];
    direction: [number, number, number];
    ambient: [number, number, number];
    diffuse: [number, number, number];
    specular: [number, number, number];
    constant: number;
    linear: number;
    quadratic: number;
    angle: number;
    exponent: number;
    blur: number;
}
export declare function generateLightingUniforms(lights?: Array<Partial<IDirectionalLight | ISpotLight>>): {
    u_DirectionalLights: Array<Omit<IDirectionalLight, 'type'>>;
    u_NumOfDirectionalLights: number;
    u_SpotLights: Array<Omit<ISpotLight, 'type'>>;
    u_NumOfSpotLights: number;
};
/**
 * 光照 & Shadow
 */
export default class LightingPlugin implements ILayerPlugin {
    apply(layer: ILayer): void;
}
export {};
