import { ReactNode } from "react";
import { Raycaster, Vector3 } from "three";
declare type PlayerVec = {
    set: (vec: Vector3) => void;
    get: () => Vector3;
};
declare type PlayerControls = {
    lock: () => void;
    unlock: () => void;
    isLocked: () => boolean;
};
declare type PlayerState = {
    position: PlayerVec;
    velocity: PlayerVec;
    controls: PlayerControls;
    raycaster: Raycaster;
};
export declare const PlayerContext: import("react").Context<PlayerState>;
export declare const usePlayer: () => PlayerState;
export declare type PlayerProps = {
    pos?: number[];
    rot?: number;
    speed?: number;
    flying?: boolean;
    controls?: {
        disableGyro?: boolean;
    };
};
declare type PlayerLayer = {
    children: ReactNode[] | ReactNode;
} & PlayerProps;
export declare function Player(props: PlayerLayer): JSX.Element;
export {};
