import { BimChangeStatus } from './BimChangeStatus';
/**
 * Predefined queries to use with {@link BimCoreApiClient.getChanges}.
 */
export class PredefinedBimChangeMetadataQuery {
    /**
     * Gets all successfully processed folders.
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.folder())
     * ```
     * Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static folder() {
        return { query: `folder.status=${BimChangeStatus.Processed}` };
    }
    /**
     * Gets all successfully processed folders.
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.folder())
     * ```
     * Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static all() {
        return { query: 'all' };
    }
    /**
     * Gets all successfully processed IFC changes.
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.ifc())
     * ```
     * @param status Status of IFC files to get.
     * Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static ifc(status = BimChangeStatus.Processed) {
        return PredefinedBimChangeMetadataQuery.blob('ifc', status);
    }
    /**
     * Gets all successfully processed DWG changes.
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.dwg())
     * ```
     * @param status Status of DWG files to get.
     * Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static dwg(status = BimChangeStatus.Processed) {
        return PredefinedBimChangeMetadataQuery.blob('dwg', status);
    }
    /**
     * Gets all successfully processed PDF changes.
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.pdf())
     * ```
     * @param status Status of PDF files to get.
     * Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static pdf(status = BimChangeStatus.Processed) {
        return PredefinedBimChangeMetadataQuery.blob('pdf', status);
    }
    /**
     * Gets all layers of a specific format
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.layer("sensors"))
     * ```
     * @param format Type of layer to get. For example "sensors"
     * @returns Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static layer(format) {
        return { query: `_system.layers.format=${format}` };
    }
    /**
     * Retrieves the BimChangeMetadataQuery for layer attachments.
     * @param format The format or layerId property.
     * @returns The BimChangeMetadataQuery object.
     * @example
     * ```
     * // Get all layer attachments for sensor layers in projectA
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.layerAttachments("sensors"));
     * // Get all layer attachments for sensor layers in folderA
     * api.getChanges(folderA, PredefinedBimChangeMetadataQuery.layerAttachments("sensors"));
     * ```
     */
    static layerAttachments(format) {
        return { query: `_system.attachment.parent.format=${format}` };
    }
    /**
     * Gets all blobs/files with a specific file extension and status
     * @example
     * ```
     * api.getChanges(projectA, PredefinedBimChangeMetadataQuery.blob("docx"))
     * ```
     * @param extension File extension
     * @param status Status of files to get.
     * @returns Query for use with {@link TwinfinityApiClient.getChanges}.
     */
    static blob(extension, status = BimChangeStatus.Processed) {
        return { query: `${extension}.status=${status}` };
    }
}
//# sourceMappingURL=PredefinedBimChangeMetadataQuery.js.map