import { Material, MeshDepthMaterial, MeshDistanceMaterial, TypedArray, Vector2Tuple, WebGLProgramParametersWithUniforms, WebGLRenderer } from 'three'; import { Constructor } from './utils.js'; import { Signal } from '@preact/signals-core'; import type { ColorRepresentation, Fix_TS_56_Float32Array } from '../utils.js'; import { Properties } from '../properties/index.js'; import { Inset } from '../flex/index.js'; export type MaterialClass = { new (...args: Array): Material; }; type InstanceOf = T extends { new (): infer K; } ? K : never; declare const defaultDefaults: { backgroundColor: ColorRepresentation; borderColor: ColorRepresentation; borderBottomLeftRadius: number | string; borderTopLeftRadius: number | string; borderBottomRightRadius: number | string; borderTopRightRadius: number | string; borderBend: number; }; export type PanelMaterialConfig = ReturnType; export declare function getDefaultPanelMaterialConfig(): { hasProperty: (key: string) => boolean; defaultData: Fix_TS_56_Float32Array; setters: { [x: string]: (data: TypedArray, offset: number, value: unknown, size: Signal, opacity: Signal, onUpdate: ((start: number, count: number) => void) | undefined) => void; }; computedIsVisibile: (properties: Properties, borderInset: Signal, size: Signal, isVisible: Signal) => import("@preact/signals-core").ReadonlySignal; }; export declare function createPanelMaterialConfig(keys: { [Key in keyof typeof materialSetters]?: string; }, providedDefaults?: { [Key in Exclude]?: (typeof defaultDefaults)[Key]; }): { hasProperty: (key: string) => boolean; defaultData: Fix_TS_56_Float32Array; setters: { [x: string]: (data: TypedArray, offset: number, value: unknown, size: Signal, opacity: Signal, onUpdate: ((start: number, count: number) => void) | undefined) => void; }; computedIsVisibile: (properties: Properties, borderInset: Signal, size: Signal, isVisible: Signal) => import("@preact/signals-core").ReadonlySignal; }; declare const materialSetters: { readonly backgroundColor: (d: TypedArray, o: number, p: ColorRepresentation, _: Signal, op: Signal, u: ((start: number, count: number) => void) | undefined) => void; readonly borderBottomLeftRadius: (d: TypedArray, o: number, p: number | string, { value: s }: Signal, _: Signal, u: ((start: number, count: number) => void) | undefined) => void; readonly borderBottomRightRadius: (d: TypedArray, o: number, p: number | string, { value: s }: Signal, _: Signal, u: ((start: number, count: number) => void) | undefined) => false | void; readonly borderTopRightRadius: (d: TypedArray, o: number, p: number | string, { value: s }: Signal, _: Signal, u: ((start: number, count: number) => void) | undefined) => false | void; readonly borderTopLeftRadius: (d: TypedArray, o: number, p: number | string, { value: s }: Signal, _: Signal, u: ((start: number, count: number) => void) | undefined) => false | void; readonly borderColor: (d: TypedArray, o: number, p: ColorRepresentation, _: Signal, op: Signal, u: ((start: number, count: number) => void) | undefined) => void; readonly borderBend: (d: TypedArray, o: number, p: number | `${number}%`, _: Signal, op: Signal, u: ((start: number, count: number) => void) | undefined) => void; }; export declare function writeColor(target: Array | TypedArray, offset: number, color: ColorRepresentation, opacity: number, onUpdate?: ((start: number, count: number) => void) | undefined): void; export type PanelMaterial = InstanceOf>; export type PanelMaterialInfo = { type: 'instanced'; } | { type: 'normal'; data: Float32Array; }; export declare function createPanelMaterial>(MaterialClass: T, info: PanelMaterialInfo): Material; export declare class PanelDistanceMaterial extends MeshDistanceMaterial { private info; constructor(info: PanelMaterialInfo); onBeforeCompile(parameters: WebGLProgramParametersWithUniforms, renderer: WebGLRenderer): void; } export declare class PanelDepthMaterial extends MeshDepthMaterial { private info; constructor(info: PanelMaterialInfo); onBeforeCompile(parameters: WebGLProgramParametersWithUniforms, renderer: WebGLRenderer): void; } export declare const instancedPanelDepthMaterial: PanelDepthMaterial; export declare const instancedPanelDistanceMaterial: PanelDistanceMaterial; export declare function compilePanelMaterial(parameters: WebGLProgramParametersWithUniforms, instanced: boolean): void; export {};