import { Point3D } from "chootils/dist/points3d";
import { CameraNameByPlace, CharacterName, PlaceName, SegmentNameByPlace, SpotNameByPlace, WallNameByPlace } from "../types";
type ToPlaceOption<T_PlaceName extends PlaceName> = {
    toPlace: T_PlaceName;
    toSpot?: SpotNameByPlace[T_PlaceName];
    toPositon?: Point3D;
    toCam?: CameraNameByPlace[T_PlaceName];
    toSegment?: SegmentNameByPlace[T_PlaceName];
};
export declare const sceneEvents: {
    changeSegmentAtLoop: import("repond-events").EventTypeDefinition<{
        place: string;
        segment: string;
    }>;
    changeCameraAtLoop: import("repond-events").EventTypeDefinition<{
        place: string;
        cam: string;
    }>;
    hideWall: import("repond-events").EventTypeDefinition<{
        place: string;
        wall: string;
        unhide: boolean | undefined;
    }>;
    showStoryView: import("repond-events").EventTypeDefinition<{
        hide: boolean | undefined;
    }>;
    setSegment: import("repond-events").EventTypeDefinition<{
        place: string;
        segment: string;
    }>;
    setCamera: import("repond-events").EventTypeDefinition<{
        place: string;
        cam: string;
        whenToRun: "now" | "at loop" | undefined;
    }>;
    canTriggerCamera: import("repond-events").EventTypeDefinition<{
        place: string;
        cam: string;
        whenToRun: "now" | "at loop" | undefined;
    }>;
    goToNewPlace: import("repond-events").EventTypeDefinition<{
        toOption: ToPlaceOption<string>;
        who: string | undefined;
    }>;
};
type SceneHideWallParams<T_Place extends PlaceName> = {
    place: T_Place;
    wall: WallNameByPlace[T_Place];
    unhide?: boolean;
};
type SceneSetSegmentParams<T_Place extends PlaceName> = {
    place: T_Place;
    segment: SegmentNameByPlace[T_Place];
};
type SceneSetCameraParams<T_Place extends PlaceName> = {
    place: T_Place;
    cam: CameraNameByPlace[T_Place];
    whenToRun?: "at loop" | "now" | undefined;
};
type SceneGoToNewPlaceParams<T_Place extends PlaceName> = {
    toOption: ToPlaceOption<T_Place>;
    who?: undefined | CharacterName;
};
type CanTriggerCameraParams<T_Place extends PlaceName> = {
    place: T_Place;
    cam: CameraNameByPlace[T_Place];
    can?: boolean | undefined;
};
export type SceneEventParameters<T_Group, T_Event, T_GenericParamA> = T_Group extends "scene" ? T_Event extends "hideWall" ? SceneHideWallParams<T_GenericParamA & PlaceName> : T_Event extends "setSegment" ? SceneSetSegmentParams<T_GenericParamA & PlaceName> : T_Event extends "setCamera" ? SceneSetCameraParams<T_GenericParamA & PlaceName> : T_Event extends "goToNewPlace" ? SceneGoToNewPlaceParams<T_GenericParamA & PlaceName> : T_Event extends "canTriggerCamera" ? CanTriggerCameraParams<T_GenericParamA & PlaceName> : never : never;
export {};
