/**
 * Defines the data status.
 */
export interface IFileDataStatus {
    /**
     * Data state. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.
     */
    state: string;
    /**
     * Unique ID of the data job.
     */
    jobId?: string;
    jobUrl?: string;
}
/**
 * Defines the file status.
 */
export interface IFileStatus {
    /**
     * Status of geometry data of `vsfx` type.
     */
    geometry: IFileDataStatus;
    /**
     * Status of geometry data of `gltf` type.
     */
    geometryGltf: IFileDataStatus;
    /**
     * Status of the properties.
     */
    properties: IFileDataStatus;
    /**
     * Status of the validation.
     */
    validation: IFileDataStatus;
}
/**
 * Reference to file.
 */
export interface IFileReference {
    /**
     * The ID of the referenced file.
     */
    id: string;
    /**
     * The name of the referenced file.
     */
    name: string;
}
/**
 * References are images, fonts, or any other files to correct rendering of the file.
 */
export interface IFileReferences {
    /**
     * The references list ID, changed after each update of the file references.
     */
    id: string;
    /**
     * List of file references or `null` if there are no references.
     */
    references: IFileReference[] | null;
}
/**
 * Defines the information about file version.
 */
export interface IFileVersionInfo {
    /**
     * Version file ID.
     */
    fileId: string;
    /**
     * Version file data status.
     */
    status: IFileStatus;
    /**
     * Zero-based version number. The original file has version `0`.
     */
    version: number;
    /**
     * Version creation time (UTC).
     */
    createdAt: string;
    /**
     * Size of the version file in bytes.
     */
    size: number;
    /**
     * ID of the user who created the version.
     */
    ownerId: string;
}
/**
 * Defines the user, project, or group that will have access to the file.
 */
export interface IGrantedTo {
    /**
     * The user that has access to the file.
     */
    user?: {
        /**
         * User ID.
         */
        id: string;
        /**
         * User email.
         */
        email: string;
    };
    /**
     * The project that has access to the file.
     */
    project?: {
        /**
         * Project ID.
         */
        id: string;
        /**
         * Project name.
         */
        name: string;
    };
    /**
     * The group that has access to the file.
     */
    group?: {
        /**
         * Project ID.
         */
        projectId: string;
        /**
         * Group ID.
         */
        groupId: string;
        /**
         * Group name.
         */
        name: string;
    };
}
/**
 * Defines the CDA tree node.
 */
export interface ICdaNode {
    /**
     * Object original handle.
     */
    handle: string;
    /**
     * Object name.
     */
    name: string;
    /**
     * Nested objects.
     */
    children: ICdaNode[];
}
