import { HSMLEntity, SWID } from "../hsml-types";
import { Matrix } from "../index";
export type RenderableProps = {
    selectedEntities: SWID[];
    setSelectedEntities: (val: SWID[]) => void;
    selectedEntitiesDeltaMatrix: Matrix;
    isDragging: boolean;
};
export type EntityRenderable<T extends HSMLEntity> = {
    add: (entities: T[]) => void;
    remove: (entities: T[]) => void;
    select: (entity: T[]) => void;
    deselect: (entity: T[]) => void;
};
export declare const entityAccessors: {
    getVector3: (entity: HSMLEntity) => any;
    getPosition: (entity: HSMLEntity) => any;
    getPositionOrVector: (entity: HSMLEntity) => any;
    getRotation: (entity: HSMLEntity) => any;
    getScale: (entity: HSMLEntity) => any;
    getFiles: (entity: HSMLEntity) => {
        name: string;
        scale: {
            x: number;
            y: number;
            z: number;
        };
        uri: string;
    }[];
};
export declare const getMatrix: <T extends {
    swid: string;
    name: string;
    description: string;
    schema: string;
    transform: {
        position: {
            x: number;
            y: number;
            z: number;
        };
        rotation: {
            x: number;
            y: number;
            z: number;
            w: number;
        };
    };
    volume: {
        x: number;
        y: number;
        z: number;
    };
    __archived: boolean | null;
    semantic_space_name?: string | undefined;
} | {
    swid: string;
    name: string;
    schema: string[];
    volume: {
        x: number;
        y: number;
        z: number;
    };
    __archived: boolean | null;
    files: {
        name: string;
        scale: {
            x: number;
            y: number;
            z: number;
        };
        uri: string;
    }[];
    hull: {
        uri: string;
    };
} | {
    swid: string;
    name: string;
    schema: string[];
    transform: {
        position: {
            x: number;
            y: number;
            z: number;
        };
        rotation: {
            x: number;
            y: number;
            z: number;
            w: number;
        };
        scale: {
            x: number;
            y: number;
            z: number;
        };
    };
    volume: {
        x: number;
        y: number;
        z: number;
    };
    __archived: boolean | null;
    files: {
        name: string;
        scale: {
            x: number;
            y: number;
            z: number;
        };
        uri: string;
    }[];
    hull: {
        uri: string;
    };
}>(entity: T) => Matrix;
export declare const renderableUtils: (schema: string) => false | {
    create: (props: RenderableProps) => EntityRenderable<{
        swid: string;
        name: string;
        description: string;
        schema: string;
        transform: {
            position: {
                x: number;
                y: number;
                z: number;
            };
            rotation: {
                x: number;
                y: number;
                z: number;
                w: number;
            };
        };
        volume: {
            x: number;
            y: number;
            z: number;
        };
        __archived: boolean | null;
        semantic_space_name?: string | undefined;
    }>;
};
