export type CharacterOptionsPlaceholder<CharacterName extends string, DollName extends string, FontName extends string> = Record<CharacterName, {
    doll: any;
    font: any;
}>;
export type DollOptionsPlaceholder<DollName extends string, ModelName extends string> = Record<DollName, {
    model: any;
}>;
export type PlaceInfoByNamePlaceholder<PlaceName extends string> = Record<PlaceName, {
    modelFile: string;
    cameraNames: readonly string[];
    segmentNames: readonly string[];
    wallNames: readonly string[];
    floorNames: readonly string[];
    triggerNames: readonly string[];
    spotNames: readonly string[];
    soundspotNames: readonly string[];
    probesByCamera: Record<string, string>;
    backdropsByCamera: Record<string, Record<string, {
        frameRate: number;
        totalFrames: number;
        maxFramesPerRow: number;
        textures: Array<{
            color: string;
            depth: string;
        }>;
    }>>;
    segmentNamesByCamera: Record<string, Array<string>>;
}>;
export type ModelInfoByNamePlaceholder<ModelName extends string> = Record<ModelName, {
    modelFile: string;
    animationNames: readonly string[];
    boneNames: readonly string[];
    meshNames: readonly string[];
    materialNames: readonly string[];
    skeletonName: string;
}>;
export type PickupsInfoPlaceholder<PickupName extends string> = Record<PickupName, {
    name: string;
    hint: string;
    image: string;
}>;
export type DeepWriteable<T> = {
    -readonly [P in keyof T]: DeepWriteable<T[P]>;
};
type ToNewOptionUntyped = {
    toPlace: string;
    toSpot: string;
    toCam?: string;
    toSegment?: string;
};
export type PrendyOptionsUntyped = {
    place: string;
    segment: string;
    camera: string;
    heldPickups: string[];
    playerCharacter: string;
    playerAnimations: {
        walking: string;
        idle: string;
    };
    zoomLevels: {
        default: number;
        max: number;
    };
    walkSpeed: number;
    gameTimeSpeed: number;
    headHeightOffsets: Record<string, number>;
    doorsInfo?: Partial<Record<string, Partial<Record<string, ToNewOptionUntyped>>>>;
    modelNamesByPlace: Record<string, string[]>;
    hasInteracting?: boolean;
    hasJumping?: boolean;
};
type ToPlaceOption<AnyCameraName extends string, AnySegmentName extends string, PlaceName extends string, AnySpotName extends string> = {
    toPlace: PlaceName;
    toSpot: AnySpotName;
    toCam?: AnyCameraName;
    toSegment?: AnySegmentName;
};
export type PrendyOptionsGeneric<AnyCameraName extends string, AnySegmentName extends string, PlaceName extends string, CharacterName extends string, PickupName extends string, ModelName extends string, AnySpotName extends string> = {
    place: PlaceName;
    segment: AnySegmentName;
    camera: AnyCameraName;
    heldPickups: PickupName[];
    playerCharacter: CharacterName;
    zoomLevels: {
        default: number;
        max: number;
    };
    walkSpeed: number;
    gameTimeSpeed: number;
    headHeightOffsets: Record<string, number>;
    doorsInfo?: Partial<Record<PlaceName, Partial<Record<string, ToPlaceOption<AnyCameraName, AnySegmentName, PlaceName, AnySpotName>>>>>;
    modelNamesByPlace: Record<PlaceName, ModelName[]>;
};
export {};
