import type { SocketClient } from './socketClient';
import * as RpcTypes from './rpcTypes';
export type MaterialHandle = 4294967295 | 6 | 2 | 0 | 1 | 3 | 4 | 5 | 7 | 8;
export declare class MaterialHandles {
    static readonly Invalid: MaterialHandle;
    static readonly Wireframe: MaterialHandle;
    static readonly FlatShaded: MaterialHandle;
    static readonly StandardOpaque: MaterialHandle;
    static readonly StandardGlass: MaterialHandle;
    static readonly GhostOutline: MaterialHandle;
    static readonly GhostFill: MaterialHandle;
    static readonly GhostBoth: MaterialHandle;
    static readonly Highlight: MaterialHandle;
    static readonly Invisible: MaterialHandle;
}
export type VisibilityState = 0 | 1 | 2 | 3 | 16;
export declare class VisibilityStates {
    static readonly Visible: VisibilityState;
    static readonly Hidden: VisibilityState;
    static readonly Ghosted: VisibilityState;
    static readonly Highlighted: VisibilityState;
}
export type RenderingMode = 0 | 1;
export declare class RenderingModes {
    static readonly Standard: RenderingMode;
    static readonly FlatShaded: RenderingMode;
}
export declare const materialHandles: MaterialHandle[];
export declare class RpcClient {
    private readonly _socket;
    get connected(): boolean;
    get url(): string;
    constructor(_socket: SocketClient);
    readonly API_VERSION = "6.0.0";
    RPCClearMaterialOverridesForElements(vimIndex: number, elementIndices: number[]): void;
    RPCClearMaterialOverridesForScene(): void;
    RPCClearMaterialOverridesForVim(vimIndex: number): void;
    RPCCreateMaterialInstances(materialHandle: number, smoothness: number, colors: RpcTypes.RGBA32[]): Promise<number>;
    RPCCreateText(position: RpcTypes.Vector3, color: RpcTypes.RGBA32, text: string): Promise<number>;
    RPCDestroyMaterialInstances(materialInstanceHandles: number[]): void;
    RPCDestroyText(componentHandle: number): void;
    RPCEnableSectionBox(value: boolean): void;
    RPCFrameAABB(box: RpcTypes.Box3, blendTime: number): Promise<RpcTypes.Segment>;
    RPCFrameElements(vimIndex: number, elementIndices: number[], blendTime: number): Promise<RpcTypes.Segment>;
    RPCFrameScene(blendTime: number): Promise<RpcTypes.Segment>;
    RPCFrameVim(vimIndex: number, blendTime: number): Promise<RpcTypes.Segment>;
    RPCGetAABBForElements(vimIndex: number, elementIndices: number[]): Promise<RpcTypes.Box3>;
    RPCGetAABBForScene(): Promise<RpcTypes.Box3>;
    RPCGetAABBForVim(vimIndex: number): Promise<RpcTypes.Box3>;
    RPCGetAPIVersion(): Promise<string>;
    RPCGetCameraPose(): Promise<RpcTypes.Segment>;
    RPCGetElementCountForScene(): Promise<number>;
    RPCGetElementCountForVim(vimIndex: number): Promise<number>;
    RPCGetElementIds(vimIndex: number): Promise<bigint[]>;
    RPCGetLastError(): Promise<string>;
    RPCGetRoomElements(vimIndex: number): Promise<number[]>;
    RPCGetSectionBox(): Promise<RpcTypes.SectionBoxState>;
    RPCGetVimLoadingState(vimIndex: number): Promise<RpcTypes.VimStatus>;
    RPCKeyEvent(keyCode: number, down: boolean): void;
    RPCLoadVim(fileName: string): Promise<number>;
    RPCLoadVimURL(url: string, authToken: string): Promise<number>;
    RPCMouseButtonEvent(mousePos: RpcTypes.Vector2, mouseButton: number, down: boolean): void;
    RPCMouseDoubleClickEvent(mousePos: RpcTypes.Vector2, mouseButton: number): void;
    RPCMouseMoveEvent(mousePos: RpcTypes.Vector2): void;
    RPCMouseScrollEvent(scrollValue: number): void;
    RPCMouseSelectEvent(mousePos: RpcTypes.Vector2, mouseButton: number): void;
    RPCPauseRendering(pause: boolean): void;
    RPCPerformHitTest(pos: RpcTypes.Vector2): Promise<RpcTypes.HitCheckResult>;
    RPCSetCameraAspectRatio(width: number, height: number): void;
    RPCSetCameraMode(orbit: boolean): void;
    RPCSetCameraPose(state: RpcTypes.Segment, blendTime: number): void;
    RPCSetCameraPosition(position: RpcTypes.Vector3, blendTime: number): void;
    RPCSetCameraSpeed(speed: number): void;
    RPCSetCameraTarget(target: RpcTypes.Vector3, blendTime: number): void;
    RPCSetGhostColor(ghostColor: RpcTypes.RGBA): void;
    RPCSetLighting(toneMappingWhitePoint: number, hdrScale: number, hdrBackgroundScale: number, hdrBackgroundSaturation: number, backgroundBlur: number, backgroundColor: RpcTypes.RGBA): void;
    RPCSetMaterialOverridesForElements(vimIndex: number, elementIndices: number[], materialInstanceHandles: number[]): void;
    RPCSetSectionBox(state: RpcTypes.SectionBoxState): void;
    RPCSetStateElements(vimIndex: number, elementIndices: number[], state: number): void;
    RPCSetStateScene(state: number): void;
    RPCSetStateVim(vimIndex: number, state: number): void;
    RPCSetStatesElements(vimIndex: number, elementIndices: number[], states: number[]): void;
    RPCStartScene(toneMappingWhitePoint: number, hdrScale: number, hdrBackgroundScale: number, hdrBackgroundSaturation: number, backgroundBlur: number, backgroundColor: RpcTypes.RGBA): Promise<boolean>;
    RPCTriggerRenderDocCapture(): void;
    RPCUnloadAll(): void;
}
