import * as PIXI from "pixi.js"; import { z } from "zod"; import { BlendModeEnum } from '../../types'; import { PropertyDescription } from "./types/Property.types"; import { InputTextureDescriptor } from "./types/Texture.types"; /** * Serializable and runtime options used to define an effect entry in the library. */ export interface EffectDataOptions { id?: string; name?: string; provider?: string; fragmentSrc: string; properties?: PropertyDescription[]; inputTextures?: InputTextureDescriptor[]; serializable?: boolean; autoFit?: boolean; noTransform?: boolean; blendMode?: BlendModeEnum; padding?: number; } /** * Zod schema for a serialized effect definition. */ export declare const EffectDataSchema: z.ZodObject<{ id: z.ZodString; name: z.ZodString; provider: z.ZodString; fragmentSrc: z.ZodString; properties: z.ZodArray; label: z.ZodOptional; description: z.ZodOptional; defaultValue: z.ZodType, z.ZodTypeDef, Required>; min: z.ZodOptional]>>; max: z.ZodOptional]>>; step: z.ZodOptional]>>; initOnly: z.ZodOptional; }, "strip", z.ZodTypeAny, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }>, "many">; inputTextures: z.ZodOptional>; scaleMode: z.ZodOptional>; mipmap: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }>, "many">>; autoFit: z.ZodOptional; noTransform: z.ZodOptional; blendMode: z.ZodOptional>; padding: z.ZodOptional; }, "strip", z.ZodTypeAny, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: BlendModeEnum | undefined; padding?: number | undefined; }, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: BlendModeEnum | undefined; padding?: number | undefined; }>; /** * Library description of a reusable effect, including shader source, editable properties, and input textures. * * Effect data is the factory-level definition; clip-level `Effect` instances are created from it later with * concrete property values and loaded Pixi textures. */ export declare class EffectData { private readonly id; private readonly name; private readonly provider; private readonly fragmentSrc; private readonly properties; private readonly inputTextures?; private readonly autoFit; private readonly noTransform; private readonly blendMode; private readonly padding; private readonly serializable; private initialized; private readonly defaultPropertyMap; private readonly textures; constructor(options: EffectDataOptions); /** * Loads any external input textures referenced by the effect definition. * * @returns A promise that resolves after all declared input textures are available. */ init(): Promise; getInputTextures(): InputTextureDescriptor[] | undefined; getTextureImage(name: string): ImageBitmap | undefined; createPixiTexture(name: string): PIXI.Texture | null; getId(): string; getName(): string; getProvider(): string; getIsBuiltIn(): boolean; getProperties(): PropertyDescription[]; getDefaultPropertyMap(): ReadonlyMap; getIsSerializable(): boolean; /** * Creates a runtime effect instance using the provided property map and resolved input textures. * * Built-in effects are dispatched through `BuiltInFactory`; custom shader effects fall back to a generic Pixi filter. * * @param initPropertyMap Initial property values keyed by property name. * @param inputTextures Resolved Pixi textures keyed by uniform/input name. * @returns Runtime effect instance ready to attach to a clip. */ createEffectInstance(initPropertyMap: Map, inputTextures: Record): import("../effect/EffectBase").EffectBase | null; private getPixiBlendMode; /** * Serializes the effect definition into project-safe data. * * @returns Serialized effect definition payload. */ serialize(): { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: BlendModeEnum | undefined; padding?: number | undefined; }; /** * Reconstructs an effect definition from serialized data. * * @param data Serialized effect definition payload. * @returns Deserialized effect definition. */ static deserialize(data: any): EffectData; }