import { Vector3, DirectionalLight, Object3D, Material, PerspectiveCamera, OrthographicCamera, Color } from 'three'; import CSMHelper from './CSMHelper'; import CSMFrustum from './CSMFrustum'; export declare type CustomSplitsCallbackType = (cascadeCount: number, nearDistance: number, farDistance: number) => number[]; export interface CSMParams { camera: PerspectiveCamera | OrthographicCamera; parent: Object3D; cascades?: number; maxCascades?: number; maxFar?: number; mode?: 'uniform' | 'logarithmic' | 'practical' | 'custom'; practicalModeLambda?: number; customSplitsCallback?: CustomSplitsCallbackType; shadowMapSize?: number; shadowBias?: number; shadowNormalBias?: number; lightIntensity?: number; lightColor?: Color; lightDirection?: Vector3; lightDirectionUp?: Vector3; lightMargin?: number; fade?: boolean; noLastCascadeCutOff?: boolean; } declare class CSM { camera: PerspectiveCamera | OrthographicCamera; parent: Object3D; cascades: number; maxCascades: number; maxFar: number; mode: string; practicalModeLambda: number; shadowMapSize: number; shadowBias: number; shadowNormalBias: number; lightDirection: Vector3; lightDirectionUp: Vector3; lightIntensity: number; lightColor: Color; lightMargin: number; customSplitsCallback: CustomSplitsCallbackType; fade: boolean; noLastCascadeCutOff: boolean; mainFrustum: CSMFrustum; frustums: CSMFrustum[]; breaks: number[]; lights: DirectionalLight[]; private readonly shaders; constructor(data: CSMParams); private createLights; private initCascades; private updateShadowBounds; private updateBreaks; update(): void; private injectInclude; setupMaterial(material: Material): void; private updateUniforms; private getExtendedBreaks; updateFrustums(): void; updateCascades(cascades: number): void; updateShadowMapSize(size: number): void; dispose(): void; static Helper: typeof CSMHelper; } export default CSM;