if [ -n "${__included_kopidel_boot_image_methods-}" ]; then
	return 0
fi
readonly __included_kopidel_boot_image_methods=1

. "${KOPIDEL_LIBDIR:-/usr/lib/alterator-kopidel}/variables"

is_img_efi_bootable() (
	rpm -q grub-efi &>/dev/null
)

is_img_legacy_bootable() (
	rpm -q grub-pc &>/dev/null
)

grub_efi_target() (
	case "$(uname -m)" in
	x86_64)       echo x86_64-efi ;;
	i?86)         echo i386-efi ;;
	aarch64)      echo arm64-efi ;;
	loongarch64)  echo loongarch64-efi ;;
	riscv64)      echo riscv64-efi ;;
	esac
)

grub_reserve_mb() (
	reserve=8
	targets=()
	if is_img_legacy_bootable; then
		targets+=( i386-pc )
	fi
	if is_img_efi_bootable; then
		targets+=( "$(grub_efi_target)" )
	fi

	for target in "${targets[@]}"; do
		if [ -d "$GRUB_LIBDIR/$target" ]; then
			(( reserve += $(du -sm "$GRUB_LIBDIR/$target" | cut -f 1) ))
		fi
	done

	echo "$reserve"
)

razlivochniy_img_size_mb() (
	payload_mb="$1"
	(( size_mb = payload_mb + payload_mb * EXT4_OVERHEAD_PERCENT / 100 + $(grub_reserve_mb) ))
	if is_img_efi_bootable; then
		(( size_mb += ESP_SIZE_MB ))
	fi
	echo "$size_mb"
)
