/*
 * Copyright (C) 2018 Richard Hughes <richard@hughsie.com>
 * Copyright (C) 2019 Mario Limonciello <mario.limonciello@dell.com>
 *
 * SPDX-License-Identifier: LGPL-2.1+
 */

#pragma once

#include <glib-object.h>

#include "fu-device-locker.h"

#define FU_TYPE_VOLUME (fu_volume_get_type ())

G_DECLARE_FINAL_TYPE (FuVolume, fu_volume, FU, VOLUME, GObject)

/**
 * FU_VOLUME_KIND_ESP:
 *
 * The GUID for the ESP.
 *
 * Since: 1.5.0
 **/
#define FU_VOLUME_KIND_ESP		"c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
/**
 * FU_VOLUME_KIND_BDP:
 *
 * The GUID for the BDP.
 *
 * Since: 1.5.3
 **/
#define FU_VOLUME_KIND_BDP		"ebd0a0a2-b9e5-4433-87c0-68b6b72699c7"

const gchar	*fu_volume_get_id		(FuVolume	*self);
gboolean	 fu_volume_check_free_space	(FuVolume	*self,
						 guint64	 required,
						 GError		**error)
						 G_GNUC_WARN_UNUSED_RESULT;
gboolean	 fu_volume_is_mounted		(FuVolume	*self);
gboolean	 fu_volume_is_encrypted		(FuVolume	*self);
gchar		*fu_volume_get_mount_point	(FuVolume	*self);
gboolean	 fu_volume_mount		(FuVolume	*self,
						 GError		**error)
						 G_GNUC_WARN_UNUSED_RESULT;
gboolean	 fu_volume_unmount		(FuVolume	*self,
						 GError		**error)
						 G_GNUC_WARN_UNUSED_RESULT;
FuDeviceLocker	*fu_volume_locker		(FuVolume	*self,
						 GError		**error)
						 G_GNUC_WARN_UNUSED_RESULT;
gboolean	 fu_volume_is_internal		(FuVolume	*self);
gchar		*fu_volume_get_id_type		(FuVolume	*self);
