import { Color, Object3D } from "three";
import { Behaviour } from "../engine-components/Component.js";
import { EventList } from "../engine-components/EventList.js";
import { SerializationContext, TypeSerializer } from "./engine_serialization_core.js";
import { RenderTexture } from "./engine_texture.js";
import { RGBAColor } from "./js-extensions/index.js";
declare class ColorSerializer extends TypeSerializer {
    constructor();
    onDeserialize(data: any): Color | RGBAColor | void;
    onSerialize(data: any): any | void;
}
declare type ObjectData = {
    node?: number;
    guid?: string;
};
declare class ObjectSerializer extends TypeSerializer {
    constructor();
    onSerialize(data: any, context: SerializationContext): {
        node: number;
    } | undefined;
    onDeserialize(data: ObjectData | string | null, context: SerializationContext): Object3D<import("three").Object3DEventMap> | Behaviour | null | undefined;
}
declare class ComponentSerializer extends TypeSerializer {
    constructor();
    onSerialize(data: any, _context: SerializationContext): {
        guid: any;
    } | undefined;
    onDeserialize(data: any, context: SerializationContext): any;
    findObjectForGuid(guid: string, root: Object3D): any;
}
declare class EventListData {
    type: string;
    calls: Array<EventListCall>;
}
declare type EventListCall = {
    method: string;
    target: string;
    argument?: any;
    arguments?: Array<any>;
    enabled?: boolean;
};
declare class EventListSerializer extends TypeSerializer {
    constructor();
    onSerialize(_data: EventList<any>, _context: SerializationContext): EventListData | undefined;
    onDeserialize(data: EventListData, context: SerializationContext): EventList<any> | undefined | null;
}
export declare class RenderTextureSerializer extends TypeSerializer {
    constructor();
    onSerialize(_data: any, _context: SerializationContext): void;
    onDeserialize(data: any, context: SerializationContext): RenderTexture | undefined;
}
export declare class UriSerializer extends TypeSerializer {
    constructor();
    onSerialize(_data: string, _context: SerializationContext): null;
    onDeserialize(data: string, _context: SerializationContext): string | undefined;
}
export declare let colorSerializer: ColorSerializer;
export declare let objectSerializer: ObjectSerializer;
export declare let componentSerializer: ComponentSerializer;
export declare let eventListSerializer: EventListSerializer;
/** Register all builtin serializers and prototype patches.
 * Must be called from {@link initEngine} so the registrations survive tree-shaking
 * when the package declares `sideEffects: false`.
 */
export declare function initBuiltinSerializers(): void;
export {};
