// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.
// ignore_for_file: type=lint
import 'dart:ffi' as ffi;

class BiosealSDK {
  /// Holds the symbol lookup function.
  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
      _lookup;

  /// The symbols are looked up in [dynamicLibrary].
  BiosealSDK(ffi.DynamicLibrary dynamicLibrary)
      : _lookup = dynamicLibrary.lookup;

  /// The symbols are looked up with [lookup].
  BiosealSDK.fromLookup(
      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
          lookup)
      : _lookup = lookup;

  ffi.Pointer<ffi.Char> id3Bioseal_GetBiosealFormatString(
    int value,
  ) {
    return _id3Bioseal_GetBiosealFormatString(
      value,
    );
  }

  late final _id3Bioseal_GetBiosealFormatStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetBiosealFormatString');
  late final _id3Bioseal_GetBiosealFormatString =
      _id3Bioseal_GetBiosealFormatStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a DateTime object.
  /// @param phDateTime [in] Handle to the DateTime object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_Initialize(
    ffi.Pointer<ID3_BIOSEAL_DATE_TIME> phDateTime,
  ) {
    return _id3BiosealDateTime_Initialize(
      phDateTime,
    );
  }

  late final _id3BiosealDateTime_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME>)>>(
      'id3BiosealDateTime_Initialize');
  late final _id3BiosealDateTime_Initialize = _id3BiosealDateTime_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME>)>();

  /// @brief Releases the memory allocated for a DateTime.
  /// @param phDateTime [in] Handle to the DateTime object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_Dispose(
    ffi.Pointer<ID3_BIOSEAL_DATE_TIME> phDateTime,
  ) {
    return _id3BiosealDateTime_Dispose(
      phDateTime,
    );
  }

  late final _id3BiosealDateTime_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME>)>>(
      'id3BiosealDateTime_Dispose');
  late final _id3BiosealDateTime_Dispose = _id3BiosealDateTime_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_CheckHandle(
    ID3_BIOSEAL_DATE_TIME hDateTime,
  ) {
    return _id3BiosealDateTime_CheckHandle(
      hDateTime,
    );
  }

  late final _id3BiosealDateTime_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_DATE_TIME)>>(
          'id3BiosealDateTime_CheckHandle');
  late final _id3BiosealDateTime_CheckHandle =
      _id3BiosealDateTime_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the year (1 through 9999, 0 if invalid date).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param year [out] The year (1 through 9999, 0 if invalid date).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetYear(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> year,
  ) {
    return _id3BiosealDateTime_GetYear(
      hDateTime,
      year,
    );
  }

  late final _id3BiosealDateTime_GetYearPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetYear');
  late final _id3BiosealDateTime_GetYear = _id3BiosealDateTime_GetYearPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Gets the the month (1 through 12).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param month [out] The month (1 through 12).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetMonth(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> month,
  ) {
    return _id3BiosealDateTime_GetMonth(
      hDateTime,
      month,
    );
  }

  late final _id3BiosealDateTime_GetMonthPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetMonth');
  late final _id3BiosealDateTime_GetMonth = _id3BiosealDateTime_GetMonthPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Gets the the day (1 through the number of days in month).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param day [out] The day (1 through the number of days in month).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetDay(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> day,
  ) {
    return _id3BiosealDateTime_GetDay(
      hDateTime,
      day,
    );
  }

  late final _id3BiosealDateTime_GetDayPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetDay');
  late final _id3BiosealDateTime_GetDay = _id3BiosealDateTime_GetDayPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Gets the the hour (0 through 23, -1 if invalid time).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param hour [out] The hour (0 through 23, -1 if invalid time).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetHour(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> hour,
  ) {
    return _id3BiosealDateTime_GetHour(
      hDateTime,
      hour,
    );
  }

  late final _id3BiosealDateTime_GetHourPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetHour');
  late final _id3BiosealDateTime_GetHour = _id3BiosealDateTime_GetHourPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Gets the the minute (0 through 59).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param minute [out] The minute (0 through 59).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetMinute(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> minute,
  ) {
    return _id3BiosealDateTime_GetMinute(
      hDateTime,
      minute,
    );
  }

  late final _id3BiosealDateTime_GetMinutePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetMinute');
  late final _id3BiosealDateTime_GetMinute = _id3BiosealDateTime_GetMinutePtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Gets the the second (0 through 59).
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param second [out] The second (0 through 59).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_GetSecond(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Int> second,
  ) {
    return _id3BiosealDateTime_GetSecond(
      hDateTime,
      second,
    );
  }

  late final _id3BiosealDateTime_GetSecondPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_GetSecond');
  late final _id3BiosealDateTime_GetSecond = _id3BiosealDateTime_GetSecondPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Int>)>();

  /// Indicates whether the date and/or time is valid.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param result [out] true if date and/or time is valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_IsValid(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealDateTime_IsValid(
      hDateTime,
      result,
    );
  }

  late final _id3BiosealDateTime_IsValidPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealDateTime_IsValid');
  late final _id3BiosealDateTime_IsValid = _id3BiosealDateTime_IsValidPtr
      .asFunction<int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Bool>)>();

  /// Indicates whether the time is valid.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param result [out] true if the time is valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_IsTimeValid(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealDateTime_IsTimeValid(
      hDateTime,
      result,
    );
  }

  late final _id3BiosealDateTime_IsTimeValidPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealDateTime_IsTimeValid');
  late final _id3BiosealDateTime_IsTimeValid =
      _id3BiosealDateTime_IsTimeValidPtr.asFunction<
          int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Bool>)>();

  /// Indicates whether the date is valid.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param result [out] true if the date is valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_IsDateValid(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealDateTime_IsDateValid(
      hDateTime,
      result,
    );
  }

  late final _id3BiosealDateTime_IsDateValidPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealDateTime_IsDateValid');
  late final _id3BiosealDateTime_IsDateValid =
      _id3BiosealDateTime_IsDateValidPtr.asFunction<
          int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Bool>)>();

  /// Indicates whether the date and time are valid.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param result [out] true if date and time is valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_IsDateTimeValid(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealDateTime_IsDateTimeValid(
      hDateTime,
      result,
    );
  }

  late final _id3BiosealDateTime_IsDateTimeValidPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealDateTime_IsDateTimeValid');
  late final _id3BiosealDateTime_IsDateTimeValid =
      _id3BiosealDateTime_IsDateTimeValidPtr.asFunction<
          int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Bool>)>();

  /// Convert the date/time to a string.
  /// @param hDateTime [in] Handle to the DateTime object.
  /// @param result [out] Automatic format is YYYY-MM-DDTHH:MM:SS, YYYY-MM-DD or HH:MM:SS
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTime_ToString(
    ID3_BIOSEAL_DATE_TIME hDateTime,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3BiosealDateTime_ToString(
      hDateTime,
      result,
      resultSize,
    );
  }

  late final _id3BiosealDateTime_ToStringPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTime_ToString');
  late final _id3BiosealDateTime_ToString =
      _id3BiosealDateTime_ToStringPtr.asFunction<
          int Function(ID3_BIOSEAL_DATE_TIME, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetFieldTypeString(
    int value,
  ) {
    return _id3Bioseal_GetFieldTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetFieldTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetFieldTypeString');
  late final _id3Bioseal_GetFieldTypeString = _id3Bioseal_GetFieldTypeStringPtr
      .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a StringArray object.
  /// @param phStringArray [in] Handle to the StringArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_Initialize(
    ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY> phStringArray,
  ) {
    return _id3BiosealStringArray_Initialize(
      phStringArray,
    );
  }

  late final _id3BiosealStringArray_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY>)>>(
      'id3BiosealStringArray_Initialize');
  late final _id3BiosealStringArray_Initialize =
      _id3BiosealStringArray_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY>)>();

  /// @brief Releases the memory allocated for a StringArray.
  /// @param phStringArray [in] Handle to the StringArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_Dispose(
    ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY> phStringArray,
  ) {
    return _id3BiosealStringArray_Dispose(
      phStringArray,
    );
  }

  late final _id3BiosealStringArray_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY>)>>(
      'id3BiosealStringArray_Dispose');
  late final _id3BiosealStringArray_Dispose = _id3BiosealStringArray_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hStringArray [in] Handle to the StringArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_CheckHandle(
    ID3_BIOSEAL_STRING_ARRAY hStringArray,
  ) {
    return _id3BiosealStringArray_CheckHandle(
      hStringArray,
    );
  }

  late final _id3BiosealStringArray_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_STRING_ARRAY)>>(
          'id3BiosealStringArray_CheckHandle');
  late final _id3BiosealStringArray_CheckHandle =
      _id3BiosealStringArray_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets an item of the StringArray object.
  /// @param hStringArray [in] Handle to the StringArray object.
  /// @param index [in] Index of the  item to get.
  /// @param item [out]  item to get.
  /// @param itemSize [in,out] Size of the 'item' buffer. Receives the minimum required buffer size to hold the 'item' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'item' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_Get(
    ID3_BIOSEAL_STRING_ARRAY hStringArray,
    int index,
    ffi.Pointer<ffi.Char> item,
    ffi.Pointer<ffi.Int> itemSize,
  ) {
    return _id3BiosealStringArray_Get(
      hStringArray,
      index,
      item,
      itemSize,
    );
  }

  late final _id3BiosealStringArray_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_STRING_ARRAY,
              ffi.Int,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealStringArray_Get');
  late final _id3BiosealStringArray_Get =
      _id3BiosealStringArray_GetPtr.asFunction<
          int Function(ID3_BIOSEAL_STRING_ARRAY, int, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the number of elements in the StringArray object.
  /// @param hStringArray [in] Handle to the StringArray object.
  /// @param count [out] Number of elements in the  object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_GetCount(
    ID3_BIOSEAL_STRING_ARRAY hStringArray,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealStringArray_GetCount(
      hStringArray,
      count,
    );
  }

  late final _id3BiosealStringArray_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_STRING_ARRAY,
              ffi.Pointer<ffi.Int>)>>('id3BiosealStringArray_GetCount');
  late final _id3BiosealStringArray_GetCount =
      _id3BiosealStringArray_GetCountPtr.asFunction<
          int Function(ID3_BIOSEAL_STRING_ARRAY, ffi.Pointer<ffi.Int>)>();

  /// Returns a value indicating whether a specified string occurs in this string array.
  /// @param hStringArray [in] Handle to the StringArray object.
  /// @param item [in] The string to seek.
  /// @param result [out] true if the item parameter occurs within this string array; otherwise, false.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealStringArray_Contains(
    ID3_BIOSEAL_STRING_ARRAY hStringArray,
    ffi.Pointer<ffi.Char> item,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealStringArray_Contains(
      hStringArray,
      item,
      result,
    );
  }

  late final _id3BiosealStringArray_ContainsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_STRING_ARRAY, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealStringArray_Contains');
  late final _id3BiosealStringArray_Contains =
      _id3BiosealStringArray_ContainsPtr.asFunction<
          int Function(ID3_BIOSEAL_STRING_ARRAY, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// @brief Initializes a DateTimeArray object.
  /// @param phDateTimeArray [in] Handle to the DateTimeArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTimeArray_Initialize(
    ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY> phDateTimeArray,
  ) {
    return _id3BiosealDateTimeArray_Initialize(
      phDateTimeArray,
    );
  }

  late final _id3BiosealDateTimeArray_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY>)>>(
      'id3BiosealDateTimeArray_Initialize');
  late final _id3BiosealDateTimeArray_Initialize =
      _id3BiosealDateTimeArray_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY>)>();

  /// @brief Releases the memory allocated for a DateTimeArray.
  /// @param phDateTimeArray [in] Handle to the DateTimeArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTimeArray_Dispose(
    ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY> phDateTimeArray,
  ) {
    return _id3BiosealDateTimeArray_Dispose(
      phDateTimeArray,
    );
  }

  late final _id3BiosealDateTimeArray_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY>)>>(
      'id3BiosealDateTimeArray_Dispose');
  late final _id3BiosealDateTimeArray_Dispose =
      _id3BiosealDateTimeArray_DisposePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hDateTimeArray [in] Handle to the DateTimeArray object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTimeArray_CheckHandle(
    ID3_BIOSEAL_DATE_TIME_ARRAY hDateTimeArray,
  ) {
    return _id3BiosealDateTimeArray_CheckHandle(
      hDateTimeArray,
    );
  }

  late final _id3BiosealDateTimeArray_CheckHandlePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_DATE_TIME_ARRAY)>>(
      'id3BiosealDateTimeArray_CheckHandle');
  late final _id3BiosealDateTimeArray_CheckHandle =
      _id3BiosealDateTimeArray_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_DATE_TIME_ARRAY)>();

  /// Gets an item of the DateTimeArray object.
  /// @param hDateTimeArray [in] Handle to the DateTimeArray object.
  /// @param index [in] Index of the DateTime item to get.
  /// @param hDateTimeItem [out] DateTime item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTimeArray_Get(
    ID3_BIOSEAL_DATE_TIME_ARRAY hDateTimeArray,
    int index,
    ID3_BIOSEAL_DATE_TIME hDateTimeItem,
  ) {
    return _id3BiosealDateTimeArray_Get(
      hDateTimeArray,
      index,
      hDateTimeItem,
    );
  }

  late final _id3BiosealDateTimeArray_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME_ARRAY, ffi.Int,
              ID3_BIOSEAL_DATE_TIME)>>('id3BiosealDateTimeArray_Get');
  late final _id3BiosealDateTimeArray_Get =
      _id3BiosealDateTimeArray_GetPtr.asFunction<
          int Function(
              ID3_BIOSEAL_DATE_TIME_ARRAY, int, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the number of elements in the DateTimeArray object.
  /// @param hDateTimeArray [in] Handle to the DateTimeArray object.
  /// @param count [out] Number of elements in the DateTime object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDateTimeArray_GetCount(
    ID3_BIOSEAL_DATE_TIME_ARRAY hDateTimeArray,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealDateTimeArray_GetCount(
      hDateTimeArray,
      count,
    );
  }

  late final _id3BiosealDateTimeArray_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DATE_TIME_ARRAY,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDateTimeArray_GetCount');
  late final _id3BiosealDateTimeArray_GetCount =
      _id3BiosealDateTimeArray_GetCountPtr.asFunction<
          int Function(ID3_BIOSEAL_DATE_TIME_ARRAY, ffi.Pointer<ffi.Int>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetFieldExtensionTypeString(
    int value,
  ) {
    return _id3Bioseal_GetFieldExtensionTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetFieldExtensionTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetFieldExtensionTypeString');
  late final _id3Bioseal_GetFieldExtensionTypeString =
      _id3Bioseal_GetFieldExtensionTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a Extension object.
  /// @param phExtension [in] Handle to the Extension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_Initialize(
    ffi.Pointer<ID3_BIOSEAL_EXTENSION> phExtension,
  ) {
    return _id3BiosealExtension_Initialize(
      phExtension,
    );
  }

  late final _id3BiosealExtension_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION>)>>(
      'id3BiosealExtension_Initialize');
  late final _id3BiosealExtension_Initialize =
      _id3BiosealExtension_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION>)>();

  /// @brief Releases the memory allocated for a Extension.
  /// @param phExtension [in] Handle to the Extension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_Dispose(
    ffi.Pointer<ID3_BIOSEAL_EXTENSION> phExtension,
  ) {
    return _id3BiosealExtension_Dispose(
      phExtension,
    );
  }

  late final _id3BiosealExtension_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION>)>>(
      'id3BiosealExtension_Dispose');
  late final _id3BiosealExtension_Dispose = _id3BiosealExtension_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hExtension [in] Handle to the Extension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_CheckHandle(
    ID3_BIOSEAL_EXTENSION hExtension,
  ) {
    return _id3BiosealExtension_CheckHandle(
      hExtension,
    );
  }

  late final _id3BiosealExtension_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_EXTENSION)>>(
          'id3BiosealExtension_CheckHandle');
  late final _id3BiosealExtension_CheckHandle =
      _id3BiosealExtension_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_EXTENSION)>();

  /// Gets the the extension name.
  /// @param hExtension [in] Handle to the Extension object.
  /// @param name [out] The extension name.
  /// @param nameSize [in,out] Size of the 'name' buffer. Receives the minimum required buffer size to hold the 'name' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'name' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_GetName(
    ID3_BIOSEAL_EXTENSION hExtension,
    ffi.Pointer<ffi.Char> name,
    ffi.Pointer<ffi.Int> nameSize,
  ) {
    return _id3BiosealExtension_GetName(
      hExtension,
      name,
      nameSize,
    );
  }

  late final _id3BiosealExtension_GetNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealExtension_GetName');
  late final _id3BiosealExtension_GetName =
      _id3BiosealExtension_GetNamePtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the gets a string list containing the keys in the dict.
  /// @param hExtension [in] Handle to the Extension object.
  /// @param hKeys [out] Gets a string list containing the keys in the dict.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_GetKeys(
    ID3_BIOSEAL_EXTENSION hExtension,
    ID3_BIOSEAL_STRING_ARRAY hKeys,
  ) {
    return _id3BiosealExtension_GetKeys(
      hExtension,
      hKeys,
    );
  }

  late final _id3BiosealExtension_GetKeysPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION,
              ID3_BIOSEAL_STRING_ARRAY)>>('id3BiosealExtension_GetKeys');
  late final _id3BiosealExtension_GetKeys =
      _id3BiosealExtension_GetKeysPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets an item of the Extension object.
  /// @param hExtension [in] Handle to the Extension object.
  /// @param key [in] Unique key of the  item to get.
  /// @param item [out]  item to get.
  /// @param itemSize [in,out] Size of the 'item' buffer. Receives the minimum required buffer size to hold the 'item' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'item' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_Get(
    ID3_BIOSEAL_EXTENSION hExtension,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Char> item,
    ffi.Pointer<ffi.Int> itemSize,
  ) {
    return _id3BiosealExtension_Get(
      hExtension,
      key,
      item,
      itemSize,
    );
  }

  late final _id3BiosealExtension_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_EXTENSION,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealExtension_Get');
  late final _id3BiosealExtension_Get = _id3BiosealExtension_GetPtr.asFunction<
      int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Char>,
          ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the number of elements in the Extension object.
  /// @param hExtension [in] Handle to the Extension object.
  /// @param count [out] Number of elements in the  object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_GetCount(
    ID3_BIOSEAL_EXTENSION hExtension,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealExtension_GetCount(
      hExtension,
      count,
    );
  }

  late final _id3BiosealExtension_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION,
              ffi.Pointer<ffi.Int>)>>('id3BiosealExtension_GetCount');
  late final _id3BiosealExtension_GetCount = _id3BiosealExtension_GetCountPtr
      .asFunction<int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Int>)>();

  /// Determines whether the Extensionobject contains the specified key.
  /// @param hExtension [in] Handle to the Extension object.
  /// @param key [in] The key to locate in the  object.
  /// @param result [out] true if the  object contains an element with the specified key, otherwise false.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtension_ContainsKey(
    ID3_BIOSEAL_EXTENSION hExtension,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealExtension_ContainsKey(
      hExtension,
      key,
      result,
    );
  }

  late final _id3BiosealExtension_ContainsKeyPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealExtension_ContainsKey');
  late final _id3BiosealExtension_ContainsKey =
      _id3BiosealExtension_ContainsKeyPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetVisibilityConditionString(
    int value,
  ) {
    return _id3Bioseal_GetVisibilityConditionString(
      value,
    );
  }

  late final _id3Bioseal_GetVisibilityConditionStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetVisibilityConditionString');
  late final _id3Bioseal_GetVisibilityConditionString =
      _id3Bioseal_GetVisibilityConditionStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetBiometricDataTypeString(
    int value,
  ) {
    return _id3Bioseal_GetBiometricDataTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetBiometricDataTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetBiometricDataTypeString');
  late final _id3Bioseal_GetBiometricDataTypeString =
      _id3Bioseal_GetBiometricDataTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a Field object.
  /// @param phField [in] Handle to the Field object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_Initialize(
    ffi.Pointer<ID3_BIOSEAL_FIELD> phField,
  ) {
    return _id3BiosealField_Initialize(
      phField,
    );
  }

  late final _id3BiosealField_InitializePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD>)>>(
      'id3BiosealField_Initialize');
  late final _id3BiosealField_Initialize = _id3BiosealField_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_FIELD>)>();

  /// @brief Releases the memory allocated for a Field.
  /// @param phField [in] Handle to the Field object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_Dispose(
    ffi.Pointer<ID3_BIOSEAL_FIELD> phField,
  ) {
    return _id3BiosealField_Dispose(
      phField,
    );
  }

  late final _id3BiosealField_DisposePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD>)>>(
      'id3BiosealField_Dispose');
  late final _id3BiosealField_Dispose = _id3BiosealField_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_FIELD>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hField [in] Handle to the Field object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_CheckHandle(
    ID3_BIOSEAL_FIELD hField,
  ) {
    return _id3BiosealField_CheckHandle(
      hField,
    );
  }

  late final _id3BiosealField_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_FIELD)>>(
          'id3BiosealField_CheckHandle');
  late final _id3BiosealField_CheckHandle = _id3BiosealField_CheckHandlePtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD)>();

  /// Gets the the field type.
  /// @param hField [in] Handle to the Field object.
  /// @param eFieldType [out] The field type.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetFieldType(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Int32> eFieldType,
  ) {
    return _id3BiosealField_GetFieldType(
      hField,
      eFieldType,
    );
  }

  late final _id3BiosealField_GetFieldTypePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Int32>)>>('id3BiosealField_GetFieldType');
  late final _id3BiosealField_GetFieldType = _id3BiosealField_GetFieldTypePtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the field name.
  /// @param hField [in] Handle to the Field object.
  /// @param name [out] The field name.
  /// @param nameSize [in,out] Size of the 'name' buffer. Receives the minimum required buffer size to hold the 'name' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'name' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetName(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> name,
    ffi.Pointer<ffi.Int> nameSize,
  ) {
    return _id3BiosealField_GetName(
      hField,
      name,
      nameSize,
    );
  }

  late final _id3BiosealField_GetNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetName');
  late final _id3BiosealField_GetName = _id3BiosealField_GetNamePtr.asFunction<
      int Function(
          ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the field value as a 64-bit integer.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsInteger [out] The field value as a 64-bit integer.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsInteger(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.LongLong> valueAsInteger,
  ) {
    return _id3BiosealField_GetValueAsInteger(
      hField,
      valueAsInteger,
    );
  }

  late final _id3BiosealField_GetValueAsIntegerPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.LongLong>)>>('id3BiosealField_GetValueAsInteger');
  late final _id3BiosealField_GetValueAsInteger =
      _id3BiosealField_GetValueAsIntegerPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>)>();

  /// Gets the the field value as a boolean.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsBoolean [out] The field value as a boolean.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsBoolean(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Bool> valueAsBoolean,
  ) {
    return _id3BiosealField_GetValueAsBoolean(
      hField,
      valueAsBoolean,
    );
  }

  late final _id3BiosealField_GetValueAsBooleanPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_GetValueAsBoolean');
  late final _id3BiosealField_GetValueAsBoolean =
      _id3BiosealField_GetValueAsBooleanPtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the field value as a float.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsFloat [out] The field value as a float.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsFloat(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Float> valueAsFloat,
  ) {
    return _id3BiosealField_GetValueAsFloat(
      hField,
      valueAsFloat,
    );
  }

  late final _id3BiosealField_GetValueAsFloatPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Float>)>>('id3BiosealField_GetValueAsFloat');
  late final _id3BiosealField_GetValueAsFloat =
      _id3BiosealField_GetValueAsFloatPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Float>)>();

  /// Gets the the field value as a string.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsString [out] The field value as a string.
  /// @param valueAsStringSize [in,out] Size of the 'valueAsString' buffer. Receives the minimum required buffer size to hold the 'valueAsString' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'valueAsString' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsString(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> valueAsString,
    ffi.Pointer<ffi.Int> valueAsStringSize,
  ) {
    return _id3BiosealField_GetValueAsString(
      hField,
      valueAsString,
      valueAsStringSize,
    );
  }

  late final _id3BiosealField_GetValueAsStringPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetValueAsString');
  late final _id3BiosealField_GetValueAsString =
      _id3BiosealField_GetValueAsStringPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the data as a binary array.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsBinary [out] The data as a binary array.
  /// @param valueAsBinarySize [in,out] Size of the 'valueAsBinary' buffer. Receives the number of elements in the 'valueAsBinary' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsBinary(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.UnsignedChar> valueAsBinary,
    ffi.Pointer<ffi.Int> valueAsBinarySize,
  ) {
    return _id3BiosealField_GetValueAsBinary(
      hField,
      valueAsBinary,
      valueAsBinarySize,
    );
  }

  late final _id3BiosealField_GetValueAsBinaryPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetValueAsBinary');
  late final _id3BiosealField_GetValueAsBinary =
      _id3BiosealField_GetValueAsBinaryPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the field value as a date.
  /// @param hField [in] Handle to the Field object.
  /// @param hValueAsDate [out] The field value as a date.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsDate(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_DATE_TIME hValueAsDate,
  ) {
    return _id3BiosealField_GetValueAsDate(
      hField,
      hValueAsDate,
    );
  }

  late final _id3BiosealField_GetValueAsDatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ID3_BIOSEAL_DATE_TIME)>>('id3BiosealField_GetValueAsDate');
  late final _id3BiosealField_GetValueAsDate =
      _id3BiosealField_GetValueAsDatePtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the field value as a time.
  /// @param hField [in] Handle to the Field object.
  /// @param hValueAsTime [out] The field value as a time.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsTime(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_DATE_TIME hValueAsTime,
  ) {
    return _id3BiosealField_GetValueAsTime(
      hField,
      hValueAsTime,
    );
  }

  late final _id3BiosealField_GetValueAsTimePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ID3_BIOSEAL_DATE_TIME)>>('id3BiosealField_GetValueAsTime');
  late final _id3BiosealField_GetValueAsTime =
      _id3BiosealField_GetValueAsTimePtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the field value as a date/time.
  /// @param hField [in] Handle to the Field object.
  /// @param hValueAsDateTime [out] The field value as a date/time.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsDateTime(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_DATE_TIME hValueAsDateTime,
  ) {
    return _id3BiosealField_GetValueAsDateTime(
      hField,
      hValueAsDateTime,
    );
  }

  late final _id3BiosealField_GetValueAsDateTimePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ID3_BIOSEAL_DATE_TIME)>>('id3BiosealField_GetValueAsDateTime');
  late final _id3BiosealField_GetValueAsDateTime =
      _id3BiosealField_GetValueAsDateTimePtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the field value as a timestamp (without timezone computation).
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsTimestamp [out] The field value as a timestamp (without timezone computation).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsTimestamp(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.LongLong> valueAsTimestamp,
  ) {
    return _id3BiosealField_GetValueAsTimestamp(
      hField,
      valueAsTimestamp,
    );
  }

  late final _id3BiosealField_GetValueAsTimestampPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>)>>(
      'id3BiosealField_GetValueAsTimestamp');
  late final _id3BiosealField_GetValueAsTimestamp =
      _id3BiosealField_GetValueAsTimestampPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>)>();

  /// Gets the the field value as an array of 64-bit integers.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsIntegerArray [out] The field value as an array of 64-bit integers.
  /// @param valueAsIntegerArraySize [in,out] Size of the 'valueAsIntegerArray' buffer. Receives the number of elements in the 'valueAsIntegerArray' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsIntegerArray(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.LongLong> valueAsIntegerArray,
    ffi.Pointer<ffi.Int> valueAsIntegerArraySize,
  ) {
    return _id3BiosealField_GetValueAsIntegerArray(
      hField,
      valueAsIntegerArray,
      valueAsIntegerArraySize,
    );
  }

  late final _id3BiosealField_GetValueAsIntegerArrayPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetValueAsIntegerArray');
  late final _id3BiosealField_GetValueAsIntegerArray =
      _id3BiosealField_GetValueAsIntegerArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the field value as an array of booleans.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsBooleanArray [out] The field value as an array of booleans.
  /// @param valueAsBooleanArraySize [in,out] Size of the 'valueAsBooleanArray' buffer. Receives the number of elements in the 'valueAsBooleanArray' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsBooleanArray(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Bool> valueAsBooleanArray,
    ffi.Pointer<ffi.Int> valueAsBooleanArraySize,
  ) {
    return _id3BiosealField_GetValueAsBooleanArray(
      hField,
      valueAsBooleanArray,
      valueAsBooleanArraySize,
    );
  }

  late final _id3BiosealField_GetValueAsBooleanArrayPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Bool>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetValueAsBooleanArray');
  late final _id3BiosealField_GetValueAsBooleanArray =
      _id3BiosealField_GetValueAsBooleanArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Bool>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the field value as an array of floats.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsFloatArray [out] The field value as an array of floats.
  /// @param valueAsFloatArraySize [in,out] Size of the 'valueAsFloatArray' buffer. Receives the number of elements in the 'valueAsFloatArray' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsFloatArray(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Float> valueAsFloatArray,
    ffi.Pointer<ffi.Int> valueAsFloatArraySize,
  ) {
    return _id3BiosealField_GetValueAsFloatArray(
      hField,
      valueAsFloatArray,
      valueAsFloatArraySize,
    );
  }

  late final _id3BiosealField_GetValueAsFloatArrayPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Float>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetValueAsFloatArray');
  late final _id3BiosealField_GetValueAsFloatArray =
      _id3BiosealField_GetValueAsFloatArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Float>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the field value as an array of strings.
  /// @param hField [in] Handle to the Field object.
  /// @param hValueAsStringArray [out] The field value as an array of strings.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsStringArray(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_STRING_ARRAY hValueAsStringArray,
  ) {
    return _id3BiosealField_GetValueAsStringArray(
      hField,
      hValueAsStringArray,
    );
  }

  late final _id3BiosealField_GetValueAsStringArrayPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_STRING_ARRAY)>>(
      'id3BiosealField_GetValueAsStringArray');
  late final _id3BiosealField_GetValueAsStringArray =
      _id3BiosealField_GetValueAsStringArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets the the field value as an array of dates.
  /// @param hField [in] Handle to the Field object.
  /// @param hValueAsDateTimeArray [out] The field value as an array of dates.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsDateTimeArray(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_DATE_TIME_ARRAY hValueAsDateTimeArray,
  ) {
    return _id3BiosealField_GetValueAsDateTimeArray(
      hField,
      hValueAsDateTimeArray,
    );
  }

  late final _id3BiosealField_GetValueAsDateTimeArrayPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_FIELD, ID3_BIOSEAL_DATE_TIME_ARRAY)>>(
      'id3BiosealField_GetValueAsDateTimeArray');
  late final _id3BiosealField_GetValueAsDateTimeArray =
      _id3BiosealField_GetValueAsDateTimeArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_DATE_TIME_ARRAY)>();

  /// Gets the the field value as an array of timestamp.
  /// @param hField [in] Handle to the Field object.
  /// @param valueAsTimestampArray [out] The field value as an array of timestamp.
  /// @param valueAsTimestampArraySize [in,out] Size of the 'valueAsTimestampArray' buffer. Receives the number of elements in the 'valueAsTimestampArray' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetValueAsTimestampArray(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.LongLong> valueAsTimestampArray,
    ffi.Pointer<ffi.Int> valueAsTimestampArraySize,
  ) {
    return _id3BiosealField_GetValueAsTimestampArray(
      hField,
      valueAsTimestampArray,
      valueAsTimestampArraySize,
    );
  }

  late final _id3BiosealField_GetValueAsTimestampArrayPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealField_GetValueAsTimestampArray');
  late final _id3BiosealField_GetValueAsTimestampArray =
      _id3BiosealField_GetValueAsTimestampArrayPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.LongLong>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the A value indicating whether if the field is null.
  /// @param hField [in] Handle to the Field object.
  /// @param isNull [out] A value indicating whether if the field is null.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetIsNull(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Bool> isNull,
  ) {
    return _id3BiosealField_GetIsNull(
      hField,
      isNull,
    );
  }

  late final _id3BiosealField_GetIsNullPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_GetIsNull');
  late final _id3BiosealField_GetIsNull = _id3BiosealField_GetIsNullPtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Bool>)>();

  /// Gets the A value indicating whether the field (or one of its child fields) contains biometric data.
  /// @param hField [in] Handle to the Field object.
  /// @param containsBiometrics [out] A value indicating whether the field (or one of its child fields) contains biometric data.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetContainsBiometrics(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Bool> containsBiometrics,
  ) {
    return _id3BiosealField_GetContainsBiometrics(
      hField,
      containsBiometrics,
    );
  }

  late final _id3BiosealField_GetContainsBiometricsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_GetContainsBiometrics');
  late final _id3BiosealField_GetContainsBiometrics =
      _id3BiosealField_GetContainsBiometricsPtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the field extension type.
  /// @param hField [in] Handle to the Field object.
  /// @param eExtensionType [out] The field extension type.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetExtensionType(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Int32> eExtensionType,
  ) {
    return _id3BiosealField_GetExtensionType(
      hField,
      eExtensionType,
    );
  }

  late final _id3BiosealField_GetExtensionTypePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Int32>)>>('id3BiosealField_GetExtensionType');
  late final _id3BiosealField_GetExtensionType =
      _id3BiosealField_GetExtensionTypePtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the field extension.
  /// @param hField [in] Handle to the Field object.
  /// @param hFieldExtension [out] The field extension.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetFieldExtension(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_EXTENSION hFieldExtension,
  ) {
    return _id3BiosealField_GetFieldExtension(
      hField,
      hFieldExtension,
    );
  }

  late final _id3BiosealField_GetFieldExtensionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ID3_BIOSEAL_EXTENSION)>>('id3BiosealField_GetFieldExtension');
  late final _id3BiosealField_GetFieldExtension =
      _id3BiosealField_GetFieldExtensionPtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_EXTENSION)>();

  /// Gets the the visibility condition.
  /// @param hField [in] Handle to the Field object.
  /// @param eVisibilityCondition [out] The visibility condition.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetVisibilityCondition(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Int32> eVisibilityCondition,
  ) {
    return _id3BiosealField_GetVisibilityCondition(
      hField,
      eVisibilityCondition,
    );
  }

  late final _id3BiosealField_GetVisibilityConditionPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Int32>)>>(
      'id3BiosealField_GetVisibilityCondition');
  late final _id3BiosealField_GetVisibilityCondition =
      _id3BiosealField_GetVisibilityConditionPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Int32>)>();

  /// Gets the gets a string list containing the keys in the dict.
  /// @param hField [in] Handle to the Field object.
  /// @param hKeys [out] Gets a string list containing the keys in the dict.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetKeys(
    ID3_BIOSEAL_FIELD hField,
    ID3_BIOSEAL_STRING_ARRAY hKeys,
  ) {
    return _id3BiosealField_GetKeys(
      hField,
      hKeys,
    );
  }

  late final _id3BiosealField_GetKeysPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ID3_BIOSEAL_STRING_ARRAY)>>('id3BiosealField_GetKeys');
  late final _id3BiosealField_GetKeys = _id3BiosealField_GetKeysPtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets an item of the Field object.
  /// @param hField [in] Handle to the Field object.
  /// @param key [in] Unique key of the Field item to get.
  /// @param hFieldItem [out] Field item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_Get(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> key,
    ID3_BIOSEAL_FIELD hFieldItem,
  ) {
    return _id3BiosealField_Get(
      hField,
      key,
      hFieldItem,
    );
  }

  late final _id3BiosealField_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_FIELD)>>('id3BiosealField_Get');
  late final _id3BiosealField_Get = _id3BiosealField_GetPtr.asFunction<
      int Function(
          ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>, ID3_BIOSEAL_FIELD)>();

  /// Gets the number of elements in the Field object.
  /// @param hField [in] Handle to the Field object.
  /// @param count [out] Number of elements in the Field object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetCount(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealField_GetCount(
      hField,
      count,
    );
  }

  late final _id3BiosealField_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetCount');
  late final _id3BiosealField_GetCount = _id3BiosealField_GetCountPtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Int>)>();

  /// Determines whether the Fieldobject contains the specified key.
  /// @param hField [in] Handle to the Field object.
  /// @param key [in] The key to locate in the Field object.
  /// @param result [out] true if the Field object contains an element with the specified key, otherwise false.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_ContainsKey(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealField_ContainsKey(
      hField,
      key,
      result,
    );
  }

  late final _id3BiosealField_ContainsKeyPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_ContainsKey');
  late final _id3BiosealField_ContainsKey =
      _id3BiosealField_ContainsKeyPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// Gets the object at the specified index.
  /// @param hField [in] Handle to the Field object.
  /// @param index [in] The index of the object to retrieve.
  /// @param hItem [out] The field that contains the object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetObjectAtIndex(
    ID3_BIOSEAL_FIELD hField,
    int index,
    ID3_BIOSEAL_FIELD hItem,
  ) {
    return _id3BiosealField_GetObjectAtIndex(
      hField,
      index,
      hItem,
    );
  }

  late final _id3BiosealField_GetObjectAtIndexPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Int,
              ID3_BIOSEAL_FIELD)>>('id3BiosealField_GetObjectAtIndex');
  late final _id3BiosealField_GetObjectAtIndex =
      _id3BiosealField_GetObjectAtIndexPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, int, ID3_BIOSEAL_FIELD)>();

  /// Gets the binary data at the specified index.
  /// @param hField [in] Handle to the Field object.
  /// @param index [in] The index of the binary field to retrieve.
  /// @param item [out] The binary data.
  /// @param itemSize [in,out] Size of the 'item' buffer. Receives the number of elements in the 'item' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetBinaryAtIndex(
    ID3_BIOSEAL_FIELD hField,
    int index,
    ffi.Pointer<ffi.UnsignedChar> item,
    ffi.Pointer<ffi.Int> itemSize,
  ) {
    return _id3BiosealField_GetBinaryAtIndex(
      hField,
      index,
      item,
      itemSize,
    );
  }

  late final _id3BiosealField_GetBinaryAtIndexPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_FIELD,
              ffi.Int,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetBinaryAtIndex');
  late final _id3BiosealField_GetBinaryAtIndex =
      _id3BiosealField_GetBinaryAtIndexPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, int, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Set the time zone offset in seconds.
  /// @param hField [in] Handle to the Field object.
  /// @param offsetInSeconds [in] The time zone offset in seconds.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_SetTimeZoneOffset(
    ID3_BIOSEAL_FIELD hField,
    int offsetInSeconds,
  ) {
    return _id3BiosealField_SetTimeZoneOffset(
      hField,
      offsetInSeconds,
    );
  }

  late final _id3BiosealField_SetTimeZoneOffsetPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Int)>>(
          'id3BiosealField_SetTimeZoneOffset');
  late final _id3BiosealField_SetTimeZoneOffset =
      _id3BiosealField_SetTimeZoneOffsetPtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD, int)>();

  /// Returns a value indicating whether the field (or one of its child fields) contains an extension of the specified type.
  /// @param hField [in] Handle to the Field object.
  /// @param eExtensionType [in] The field extension type.
  /// @param result [out] A value indicating whether the field (or one of its child fields) contains the specified extension.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_ContainsExtension(
    ID3_BIOSEAL_FIELD hField,
    int eExtensionType,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealField_ContainsExtension(
      hField,
      eExtensionType,
      result,
    );
  }

  late final _id3BiosealField_ContainsExtensionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Int32,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_ContainsExtension');
  late final _id3BiosealField_ContainsExtension =
      _id3BiosealField_ContainsExtensionPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, int, ffi.Pointer<ffi.Bool>)>();

  /// Returns a value indicating whether the field (or one of its child fields) contains an extension with specified name.
  /// @param hField [in] Handle to the Field object.
  /// @param extensionName [in] A string that identifies the extension.
  /// @param result [out] A value indicating whether the field (or one of its child fields) contains the specified extension.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_ContainsExtensionByName(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> extensionName,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealField_ContainsExtensionByName(
      hField,
      extensionName,
      result,
    );
  }

  late final _id3BiosealField_ContainsExtensionByNamePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Bool>)>>(
      'id3BiosealField_ContainsExtensionByName');
  late final _id3BiosealField_ContainsExtensionByName =
      _id3BiosealField_ContainsExtensionByNamePtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// Returns a value indicating whether the field (or one of its child fields) contains biometric data of the specified type and/or format.
  /// @param hField [in] Handle to the Field object.
  /// @param eBiometricDataType [in] The biometric data type.
  /// @param biometricFormat [in] The biometric data format.
  /// @param result [out] A value indicating whether the field (or one of its child fields) contains biometric data of the specified type and/or format.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_ContainsBiometricData(
    ID3_BIOSEAL_FIELD hField,
    int eBiometricDataType,
    ffi.Pointer<ffi.Char> biometricFormat,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealField_ContainsBiometricData(
      hField,
      eBiometricDataType,
      biometricFormat,
      result,
    );
  }

  late final _id3BiosealField_ContainsBiometricDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD, ffi.Int32, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealField_ContainsBiometricData');
  late final _id3BiosealField_ContainsBiometricData =
      _id3BiosealField_ContainsBiometricDataPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, int, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// Retrieves the localized label based on the provided language code.
  /// @param hField [in] Handle to the Field object.
  /// @param language [in] The language code for which the label should be localized (e.g., 'en' for English, 'fr' for French).
  /// @param label [out] The localized label corresponding to the provided language code.
  /// @param labelSize [in,out] Size of the 'label' buffer. Receives the minimum required buffer size to hold the 'label' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'label' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetLocalizedLabel(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> label,
    ffi.Pointer<ffi.Int> labelSize,
  ) {
    return _id3BiosealField_GetLocalizedLabel(
      hField,
      language,
      label,
      labelSize,
    );
  }

  late final _id3BiosealField_GetLocalizedLabelPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetLocalizedLabel');
  late final _id3BiosealField_GetLocalizedLabel =
      _id3BiosealField_GetLocalizedLabelPtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the localized value based on the provided language code.
  /// @param hField [in] Handle to the Field object.
  /// @param language [in] The language code for which the value should be localized (e.g., 'en' for English, 'fr' for French).
  /// @param value [out] The localized value corresponding to the provided language code.
  /// @param valueSize [in,out] Size of the 'value' buffer. Receives the minimum required buffer size to hold the 'value' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'value' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealField_GetLocalizedValue(
    ID3_BIOSEAL_FIELD hField,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> value,
    ffi.Pointer<ffi.Int> valueSize,
  ) {
    return _id3BiosealField_GetLocalizedValue(
      hField,
      language,
      value,
      valueSize,
    );
  }

  late final _id3BiosealField_GetLocalizedValuePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_FIELD,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealField_GetLocalizedValue');
  late final _id3BiosealField_GetLocalizedValue =
      _id3BiosealField_GetLocalizedValuePtr.asFunction<
          int Function(ID3_BIOSEAL_FIELD, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a ExtensionList object.
  /// @param phExtensionList [in] Handle to the ExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_Initialize(
    ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST> phExtensionList,
  ) {
    return _id3BiosealExtensionList_Initialize(
      phExtensionList,
    );
  }

  late final _id3BiosealExtensionList_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST>)>>(
      'id3BiosealExtensionList_Initialize');
  late final _id3BiosealExtensionList_Initialize =
      _id3BiosealExtensionList_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST>)>();

  /// @brief Releases the memory allocated for a ExtensionList.
  /// @param phExtensionList [in] Handle to the ExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_Dispose(
    ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST> phExtensionList,
  ) {
    return _id3BiosealExtensionList_Dispose(
      phExtensionList,
    );
  }

  late final _id3BiosealExtensionList_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST>)>>(
      'id3BiosealExtensionList_Dispose');
  late final _id3BiosealExtensionList_Dispose =
      _id3BiosealExtensionList_DisposePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_CheckHandle(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
  ) {
    return _id3BiosealExtensionList_CheckHandle(
      hExtensionList,
    );
  }

  late final _id3BiosealExtensionList_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST)>>(
          'id3BiosealExtensionList_CheckHandle');
  late final _id3BiosealExtensionList_CheckHandle =
      _id3BiosealExtensionList_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_EXTENSION_LIST)>();

  /// Gets the gets a string list containing the keys in the dict.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @param hKeys [out] Gets a string list containing the keys in the dict.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_GetKeys(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
    ID3_BIOSEAL_STRING_ARRAY hKeys,
  ) {
    return _id3BiosealExtensionList_GetKeys(
      hExtensionList,
      hKeys,
    );
  }

  late final _id3BiosealExtensionList_GetKeysPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST,
              ID3_BIOSEAL_STRING_ARRAY)>>('id3BiosealExtensionList_GetKeys');
  late final _id3BiosealExtensionList_GetKeys =
      _id3BiosealExtensionList_GetKeysPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION_LIST, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets an item of the ExtensionList object.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @param key [in] Unique key of the Extension item to get.
  /// @param hExtensionItem [out] Extension item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_Get(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
    ffi.Pointer<ffi.Char> key,
    ID3_BIOSEAL_EXTENSION hExtensionItem,
  ) {
    return _id3BiosealExtensionList_Get(
      hExtensionList,
      key,
      hExtensionItem,
    );
  }

  late final _id3BiosealExtensionList_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_EXTENSION)>>('id3BiosealExtensionList_Get');
  late final _id3BiosealExtensionList_Get =
      _id3BiosealExtensionList_GetPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION_LIST, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_EXTENSION)>();

  /// Gets the number of elements in the ExtensionList object.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @param count [out] Number of elements in the Extension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_GetCount(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealExtensionList_GetCount(
      hExtensionList,
      count,
    );
  }

  late final _id3BiosealExtensionList_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST,
              ffi.Pointer<ffi.Int>)>>('id3BiosealExtensionList_GetCount');
  late final _id3BiosealExtensionList_GetCount =
      _id3BiosealExtensionList_GetCountPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION_LIST, ffi.Pointer<ffi.Int>)>();

  /// Determines whether the ExtensionListobject contains the specified key.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @param key [in] The key to locate in the Extension object.
  /// @param result [out] true if the Extension object contains an element with the specified key, otherwise false.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_ContainsKey(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealExtensionList_ContainsKey(
      hExtensionList,
      key,
      result,
    );
  }

  late final _id3BiosealExtensionList_ContainsKeyPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealExtensionList_ContainsKey');
  late final _id3BiosealExtensionList_ContainsKey =
      _id3BiosealExtensionList_ContainsKeyPtr.asFunction<
          int Function(ID3_BIOSEAL_EXTENSION_LIST, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// Clear the list.
  /// @param hExtensionList [in] Handle to the ExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealExtensionList_Clear(
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
  ) {
    return _id3BiosealExtensionList_Clear(
      hExtensionList,
    );
  }

  late final _id3BiosealExtensionList_ClearPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_EXTENSION_LIST)>>(
          'id3BiosealExtensionList_Clear');
  late final _id3BiosealExtensionList_Clear = _id3BiosealExtensionList_ClearPtr
      .asFunction<int Function(ID3_BIOSEAL_EXTENSION_LIST)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetLogItemTypeString(
    int value,
  ) {
    return _id3Bioseal_GetLogItemTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetLogItemTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetLogItemTypeString');
  late final _id3Bioseal_GetLogItemTypeString =
      _id3Bioseal_GetLogItemTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetBiosealErrorString(
    int value,
  ) {
    return _id3Bioseal_GetBiosealErrorString(
      value,
    );
  }

  late final _id3Bioseal_GetBiosealErrorStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetBiosealErrorString');
  late final _id3Bioseal_GetBiosealErrorString =
      _id3Bioseal_GetBiosealErrorStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetBiosealErrorMessage(
    int value,
  ) {
    return _id3Bioseal_GetBiosealErrorMessage(
      value,
    );
  }

  late final _id3Bioseal_GetBiosealErrorMessagePtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetBiosealErrorMessage');
  late final _id3Bioseal_GetBiosealErrorMessage =
      _id3Bioseal_GetBiosealErrorMessagePtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a LogItem object.
  /// @param phLogItem [in] Handle to the LogItem object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_Initialize(
    ffi.Pointer<ID3_BIOSEAL_LOG_ITEM> phLogItem,
  ) {
    return _id3BiosealLogItem_Initialize(
      phLogItem,
    );
  }

  late final _id3BiosealLogItem_InitializePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG_ITEM>)>>(
      'id3BiosealLogItem_Initialize');
  late final _id3BiosealLogItem_Initialize = _id3BiosealLogItem_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOG_ITEM>)>();

  /// @brief Releases the memory allocated for a LogItem.
  /// @param phLogItem [in] Handle to the LogItem object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_Dispose(
    ffi.Pointer<ID3_BIOSEAL_LOG_ITEM> phLogItem,
  ) {
    return _id3BiosealLogItem_Dispose(
      phLogItem,
    );
  }

  late final _id3BiosealLogItem_DisposePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG_ITEM>)>>(
      'id3BiosealLogItem_Dispose');
  late final _id3BiosealLogItem_Dispose = _id3BiosealLogItem_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOG_ITEM>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hLogItem [in] Handle to the LogItem object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_CheckHandle(
    ID3_BIOSEAL_LOG_ITEM hLogItem,
  ) {
    return _id3BiosealLogItem_CheckHandle(
      hLogItem,
    );
  }

  late final _id3BiosealLogItem_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_LOG_ITEM)>>(
          'id3BiosealLogItem_CheckHandle');
  late final _id3BiosealLogItem_CheckHandle = _id3BiosealLogItem_CheckHandlePtr
      .asFunction<int Function(ID3_BIOSEAL_LOG_ITEM)>();

  /// Gets the the timestamp of the message.
  /// @param hLogItem [in] Handle to the LogItem object.
  /// @param timestamp [out] The timestamp of the message.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_GetTimestamp(
    ID3_BIOSEAL_LOG_ITEM hLogItem,
    ffi.Pointer<ffi.LongLong> timestamp,
  ) {
    return _id3BiosealLogItem_GetTimestamp(
      hLogItem,
      timestamp,
    );
  }

  late final _id3BiosealLogItem_GetTimestampPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG_ITEM,
              ffi.Pointer<ffi.LongLong>)>>('id3BiosealLogItem_GetTimestamp');
  late final _id3BiosealLogItem_GetTimestamp =
      _id3BiosealLogItem_GetTimestampPtr.asFunction<
          int Function(ID3_BIOSEAL_LOG_ITEM, ffi.Pointer<ffi.LongLong>)>();

  /// Gets the the log message.
  /// @param hLogItem [in] Handle to the LogItem object.
  /// @param message [out] The log message.
  /// @param messageSize [in,out] Size of the 'message' buffer. Receives the minimum required buffer size to hold the 'message' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'message' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_GetMessage(
    ID3_BIOSEAL_LOG_ITEM hLogItem,
    ffi.Pointer<ffi.Char> message,
    ffi.Pointer<ffi.Int> messageSize,
  ) {
    return _id3BiosealLogItem_GetMessage(
      hLogItem,
      message,
      messageSize,
    );
  }

  late final _id3BiosealLogItem_GetMessagePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG_ITEM, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLogItem_GetMessage');
  late final _id3BiosealLogItem_GetMessage =
      _id3BiosealLogItem_GetMessagePtr.asFunction<
          int Function(ID3_BIOSEAL_LOG_ITEM, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the log type.
  /// @param hLogItem [in] Handle to the LogItem object.
  /// @param eItemType [out] The log type.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_GetItemType(
    ID3_BIOSEAL_LOG_ITEM hLogItem,
    ffi.Pointer<ffi.Int32> eItemType,
  ) {
    return _id3BiosealLogItem_GetItemType(
      hLogItem,
      eItemType,
    );
  }

  late final _id3BiosealLogItem_GetItemTypePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG_ITEM,
              ffi.Pointer<ffi.Int32>)>>('id3BiosealLogItem_GetItemType');
  late final _id3BiosealLogItem_GetItemType = _id3BiosealLogItem_GetItemTypePtr
      .asFunction<int Function(ID3_BIOSEAL_LOG_ITEM, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the log item error code if any.
  /// @param hLogItem [in] Handle to the LogItem object.
  /// @param eErrorCode [out] The log item error code if any.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLogItem_GetErrorCode(
    ID3_BIOSEAL_LOG_ITEM hLogItem,
    ffi.Pointer<ffi.Int32> eErrorCode,
  ) {
    return _id3BiosealLogItem_GetErrorCode(
      hLogItem,
      eErrorCode,
    );
  }

  late final _id3BiosealLogItem_GetErrorCodePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG_ITEM,
              ffi.Pointer<ffi.Int32>)>>('id3BiosealLogItem_GetErrorCode');
  late final _id3BiosealLogItem_GetErrorCode =
      _id3BiosealLogItem_GetErrorCodePtr.asFunction<
          int Function(ID3_BIOSEAL_LOG_ITEM, ffi.Pointer<ffi.Int32>)>();

  /// @brief Initializes a Log object.
  /// @param phLog [in] Handle to the Log object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_Initialize(
    ffi.Pointer<ID3_BIOSEAL_LOG> phLog,
  ) {
    return _id3BiosealLog_Initialize(
      phLog,
    );
  }

  late final _id3BiosealLog_InitializePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG>)>>(
      'id3BiosealLog_Initialize');
  late final _id3BiosealLog_Initialize = _id3BiosealLog_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOG>)>();

  /// @brief Releases the memory allocated for a Log.
  /// @param phLog [in] Handle to the Log object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_Dispose(
    ffi.Pointer<ID3_BIOSEAL_LOG> phLog,
  ) {
    return _id3BiosealLog_Dispose(
      phLog,
    );
  }

  late final _id3BiosealLog_DisposePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG>)>>(
      'id3BiosealLog_Dispose');
  late final _id3BiosealLog_Dispose = _id3BiosealLog_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOG>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hLog [in] Handle to the Log object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_CheckHandle(
    ID3_BIOSEAL_LOG hLog,
  ) {
    return _id3BiosealLog_CheckHandle(
      hLog,
    );
  }

  late final _id3BiosealLog_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_LOG)>>(
          'id3BiosealLog_CheckHandle');
  late final _id3BiosealLog_CheckHandle =
      _id3BiosealLog_CheckHandlePtr.asFunction<int Function(ID3_BIOSEAL_LOG)>();

  /// Gets an item of the Log object.
  /// @param hLog [in] Handle to the Log object.
  /// @param index [in] Index of the LogItem item to get.
  /// @param hLogItemItem [out] LogItem item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_Get(
    ID3_BIOSEAL_LOG hLog,
    int index,
    ID3_BIOSEAL_LOG_ITEM hLogItemItem,
  ) {
    return _id3BiosealLog_Get(
      hLog,
      index,
      hLogItemItem,
    );
  }

  late final _id3BiosealLog_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG, ffi.Int,
              ID3_BIOSEAL_LOG_ITEM)>>('id3BiosealLog_Get');
  late final _id3BiosealLog_Get = _id3BiosealLog_GetPtr
      .asFunction<int Function(ID3_BIOSEAL_LOG, int, ID3_BIOSEAL_LOG_ITEM)>();

  /// Gets the number of elements in the Log object.
  /// @param hLog [in] Handle to the Log object.
  /// @param count [out] Number of elements in the LogItem object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_GetCount(
    ID3_BIOSEAL_LOG hLog,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealLog_GetCount(
      hLog,
      count,
    );
  }

  late final _id3BiosealLog_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLog_GetCount');
  late final _id3BiosealLog_GetCount = _id3BiosealLog_GetCountPtr
      .asFunction<int Function(ID3_BIOSEAL_LOG, ffi.Pointer<ffi.Int>)>();

  /// Exports a representation of the log, in JSON format.
  /// @param hLog [in] Handle to the Log object.
  /// @param indentation [in] The indentation of the json string.
  /// @param debug [in] Indicates whether debug information is added to the log.
  /// @param result [out] The result.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_ExportToJson(
    ID3_BIOSEAL_LOG hLog,
    ffi.Pointer<ffi.Char> indentation,
    bool debug,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3BiosealLog_ExportToJson(
      hLog,
      indentation,
      debug,
      result,
      resultSize,
    );
  }

  late final _id3BiosealLog_ExportToJsonPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_LOG,
              ffi.Pointer<ffi.Char>,
              ffi.Bool,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLog_ExportToJson');
  late final _id3BiosealLog_ExportToJson =
      _id3BiosealLog_ExportToJsonPtr.asFunction<
          int Function(ID3_BIOSEAL_LOG, ffi.Pointer<ffi.Char>, bool,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Exports a representation of the log, in HTML format.
  /// @param hLog [in] Handle to the Log object.
  /// @param debug [in] Indicates whether debug information is added to the log.
  /// @param result [out] The result.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLog_ExportToHtml(
    ID3_BIOSEAL_LOG hLog,
    bool debug,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3BiosealLog_ExportToHtml(
      hLog,
      debug,
      result,
      resultSize,
    );
  }

  late final _id3BiosealLog_ExportToHtmlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOG, ffi.Bool, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLog_ExportToHtml');
  late final _id3BiosealLog_ExportToHtml =
      _id3BiosealLog_ExportToHtmlPtr.asFunction<
          int Function(ID3_BIOSEAL_LOG, bool, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a Manifest object.
  /// @param phManifest [in] Handle to the Manifest object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_Initialize(
    ffi.Pointer<ID3_BIOSEAL_MANIFEST> phManifest,
  ) {
    return _id3BiosealManifest_Initialize(
      phManifest,
    );
  }

  late final _id3BiosealManifest_InitializePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_MANIFEST>)>>(
      'id3BiosealManifest_Initialize');
  late final _id3BiosealManifest_Initialize = _id3BiosealManifest_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_MANIFEST>)>();

  /// @brief Releases the memory allocated for a Manifest.
  /// @param phManifest [in] Handle to the Manifest object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_Dispose(
    ffi.Pointer<ID3_BIOSEAL_MANIFEST> phManifest,
  ) {
    return _id3BiosealManifest_Dispose(
      phManifest,
    );
  }

  late final _id3BiosealManifest_DisposePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_MANIFEST>)>>(
      'id3BiosealManifest_Dispose');
  late final _id3BiosealManifest_Dispose = _id3BiosealManifest_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_MANIFEST>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_CheckHandle(
    ID3_BIOSEAL_MANIFEST hManifest,
  ) {
    return _id3BiosealManifest_CheckHandle(
      hManifest,
    );
  }

  late final _id3BiosealManifest_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_MANIFEST)>>(
          'id3BiosealManifest_CheckHandle');
  late final _id3BiosealManifest_CheckHandle =
      _id3BiosealManifest_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_MANIFEST)>();

  /// Gets the the manifest ID in ISO 22385 format.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param manifestId [out] The manifest ID in ISO 22385 format.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetManifestId(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Int> manifestId,
  ) {
    return _id3BiosealManifest_GetManifestId(
      hManifest,
      manifestId,
    );
  }

  late final _id3BiosealManifest_GetManifestIdPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ffi.Pointer<ffi.Int>)>>('id3BiosealManifest_GetManifestId');
  late final _id3BiosealManifest_GetManifestId =
      _id3BiosealManifest_GetManifestIdPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Int>)>();

  /// Gets the the manifest version.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param manifestVersion [out] The manifest version.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetManifestVersion(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Int> manifestVersion,
  ) {
    return _id3BiosealManifest_GetManifestVersion(
      hManifest,
      manifestVersion,
    );
  }

  late final _id3BiosealManifest_GetManifestVersionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ffi.Pointer<ffi.Int>)>>('id3BiosealManifest_GetManifestVersion');
  late final _id3BiosealManifest_GetManifestVersion =
      _id3BiosealManifest_GetManifestVersionPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Int>)>();

  /// Gets the the list of supported languages declared in the manifest.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param hSupportedLanguages [out] The list of supported languages declared in the manifest.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetSupportedLanguages(
    ID3_BIOSEAL_MANIFEST hManifest,
    ID3_BIOSEAL_STRING_ARRAY hSupportedLanguages,
  ) {
    return _id3BiosealManifest_GetSupportedLanguages(
      hManifest,
      hSupportedLanguages,
    );
  }

  late final _id3BiosealManifest_GetSupportedLanguagesPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_STRING_ARRAY)>>(
      'id3BiosealManifest_GetSupportedLanguages');
  late final _id3BiosealManifest_GetSupportedLanguages =
      _id3BiosealManifest_GetSupportedLanguagesPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets the the extension list.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param hExtensionList [out] The extension list.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetExtensionList(
    ID3_BIOSEAL_MANIFEST hManifest,
    ID3_BIOSEAL_EXTENSION_LIST hExtensionList,
  ) {
    return _id3BiosealManifest_GetExtensionList(
      hManifest,
      hExtensionList,
    );
  }

  late final _id3BiosealManifest_GetExtensionListPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_EXTENSION_LIST)>>(
      'id3BiosealManifest_GetExtensionList');
  late final _id3BiosealManifest_GetExtensionList =
      _id3BiosealManifest_GetExtensionListPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_EXTENSION_LIST)>();

  /// Gets the the log.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param hLog [out] The log.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetLog(
    ID3_BIOSEAL_MANIFEST hManifest,
    ID3_BIOSEAL_LOG hLog,
  ) {
    return _id3BiosealManifest_GetLog(
      hManifest,
      hLog,
    );
  }

  late final _id3BiosealManifest_GetLogPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ID3_BIOSEAL_LOG)>>('id3BiosealManifest_GetLog');
  late final _id3BiosealManifest_GetLog = _id3BiosealManifest_GetLogPtr
      .asFunction<int Function(ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_LOG)>();

  /// Sets the the log.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param hLog [in] The log.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_SetLog(
    ID3_BIOSEAL_MANIFEST hManifest,
    ID3_BIOSEAL_LOG hLog,
  ) {
    return _id3BiosealManifest_SetLog(
      hManifest,
      hLog,
    );
  }

  late final _id3BiosealManifest_SetLogPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ID3_BIOSEAL_LOG)>>('id3BiosealManifest_SetLog');
  late final _id3BiosealManifest_SetLog = _id3BiosealManifest_SetLogPtr
      .asFunction<int Function(ID3_BIOSEAL_MANIFEST, ID3_BIOSEAL_LOG)>();

  /// Loads the manifest.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param manifestData [in] The manifest data.
  /// @param manifestDataSize [in] Size of the 'manifestData' buffer.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_Load(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.UnsignedChar> manifestData,
    int manifestDataSize,
  ) {
    return _id3BiosealManifest_Load(
      hManifest,
      manifestData,
      manifestDataSize,
    );
  }

  late final _id3BiosealManifest_LoadPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int)>>('id3BiosealManifest_Load');
  late final _id3BiosealManifest_Load = _id3BiosealManifest_LoadPtr.asFunction<
      int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.UnsignedChar>, int)>();

  /// Loads the manifest.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param manifestData [in] The manifest data.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_LoadFromString(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Char> manifestData,
  ) {
    return _id3BiosealManifest_LoadFromString(
      hManifest,
      manifestData,
    );
  }

  late final _id3BiosealManifest_LoadFromStringPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ffi.Pointer<ffi.Char>)>>('id3BiosealManifest_LoadFromString');
  late final _id3BiosealManifest_LoadFromString =
      _id3BiosealManifest_LoadFromStringPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Char>)>();

  /// Loads the manifest from file.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param path [in] The manifest path.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_LoadFromFile(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Char> path,
  ) {
    return _id3BiosealManifest_LoadFromFile(
      hManifest,
      path,
    );
  }

  late final _id3BiosealManifest_LoadFromFilePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_MANIFEST,
              ffi.Pointer<ffi.Char>)>>('id3BiosealManifest_LoadFromFile');
  late final _id3BiosealManifest_LoadFromFile =
      _id3BiosealManifest_LoadFromFilePtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Char>)>();

  /// Gets the name of the document.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param language [in] The expected language.
  /// @param documentName [out] The name of the document.
  /// @param documentNameSize [in,out] Size of the 'documentName' buffer. Receives the minimum required buffer size to hold the 'documentName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetDocumentName(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> documentName,
    ffi.Pointer<ffi.Int> documentNameSize,
  ) {
    return _id3BiosealManifest_GetDocumentName(
      hManifest,
      language,
      documentName,
      documentNameSize,
    );
  }

  late final _id3BiosealManifest_GetDocumentNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_MANIFEST,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealManifest_GetDocumentName');
  late final _id3BiosealManifest_GetDocumentName =
      _id3BiosealManifest_GetDocumentNamePtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the description of the document.
  /// @param hManifest [in] Handle to the Manifest object.
  /// @param language [in] The expected language.
  /// @param documentDescription [out] The description of the document.
  /// @param documentDescriptionSize [in,out] Size of the 'documentDescription' buffer. Receives the minimum required buffer size to hold the 'documentDescription' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentDescription' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealManifest_GetDocumentDescription(
    ID3_BIOSEAL_MANIFEST hManifest,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> documentDescription,
    ffi.Pointer<ffi.Int> documentDescriptionSize,
  ) {
    return _id3BiosealManifest_GetDocumentDescription(
      hManifest,
      language,
      documentDescription,
      documentDescriptionSize,
    );
  }

  late final _id3BiosealManifest_GetDocumentDescriptionPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealManifest_GetDocumentDescription');
  late final _id3BiosealManifest_GetDocumentDescription =
      _id3BiosealManifest_GetDocumentDescriptionPtr.asFunction<
          int Function(ID3_BIOSEAL_MANIFEST, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetResourceTypeString(
    int value,
  ) {
    return _id3Bioseal_GetResourceTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetResourceTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetResourceTypeString');
  late final _id3Bioseal_GetResourceTypeString =
      _id3Bioseal_GetResourceTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a ResourceCallbackArgs object.
  /// @param phResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_Initialize(
    ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS> phResourceCallbackArgs,
  ) {
    return _id3BiosealResourceCallbackArgs_Initialize(
      phResourceCallbackArgs,
    );
  }

  late final _id3BiosealResourceCallbackArgs_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS>)>>(
      'id3BiosealResourceCallbackArgs_Initialize');
  late final _id3BiosealResourceCallbackArgs_Initialize =
      _id3BiosealResourceCallbackArgs_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS>)>();

  /// @brief Releases the memory allocated for a ResourceCallbackArgs.
  /// @param phResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_Dispose(
    ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS> phResourceCallbackArgs,
  ) {
    return _id3BiosealResourceCallbackArgs_Dispose(
      phResourceCallbackArgs,
    );
  }

  late final _id3BiosealResourceCallbackArgs_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS>)>>(
      'id3BiosealResourceCallbackArgs_Dispose');
  late final _id3BiosealResourceCallbackArgs_Dispose =
      _id3BiosealResourceCallbackArgs_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_CheckHandle(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
  ) {
    return _id3BiosealResourceCallbackArgs_CheckHandle(
      hResourceCallbackArgs,
    );
  }

  late final _id3BiosealResourceCallbackArgs_CheckHandlePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS)>>(
      'id3BiosealResourceCallbackArgs_CheckHandle');
  late final _id3BiosealResourceCallbackArgs_CheckHandle =
      _id3BiosealResourceCallbackArgs_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS)>();

  /// Gets the the URI used to retrieve the external resource.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param uri [out] The URI used to retrieve the external resource.
  /// @param uriSize [in,out] Size of the 'uri' buffer. Receives the minimum required buffer size to hold the 'uri' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'uri' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_GetUri(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Char> uri,
    ffi.Pointer<ffi.Int> uriSize,
  ) {
    return _id3BiosealResourceCallbackArgs_GetUri(
      hResourceCallbackArgs,
      uri,
      uriSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_GetUriPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealResourceCallbackArgs_GetUri');
  late final _id3BiosealResourceCallbackArgs_GetUri =
      _id3BiosealResourceCallbackArgs_GetUriPtr.asFunction<
          int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the resource name corresponing to the uri.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param resourceName [out] The resource name corresponing to the uri.
  /// @param resourceNameSize [in,out] Size of the 'resourceName' buffer. Receives the minimum required buffer size to hold the 'resourceName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'resourceName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_GetResourceName(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Char> resourceName,
    ffi.Pointer<ffi.Int> resourceNameSize,
  ) {
    return _id3BiosealResourceCallbackArgs_GetResourceName(
      hResourceCallbackArgs,
      resourceName,
      resourceNameSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_GetResourceNamePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealResourceCallbackArgs_GetResourceName');
  late final _id3BiosealResourceCallbackArgs_GetResourceName =
      _id3BiosealResourceCallbackArgs_GetResourceNamePtr.asFunction<
          int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the resource type corresponding to the uri.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param eResourceType [out] The resource type corresponding to the uri.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_GetResourceType(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Int32> eResourceType,
  ) {
    return _id3BiosealResourceCallbackArgs_GetResourceType(
      hResourceCallbackArgs,
      eResourceType,
    );
  }

  late final _id3BiosealResourceCallbackArgs_GetResourceTypePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS, ffi.Pointer<ffi.Int32>)>>(
      'id3BiosealResourceCallbackArgs_GetResourceType');
  late final _id3BiosealResourceCallbackArgs_GetResourceType =
      _id3BiosealResourceCallbackArgs_GetResourceTypePtr.asFunction<
          int Function(
              ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the external resource data must be updated.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param requiresUpdate [out] The external resource data must be updated.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_GetRequiresUpdate(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Bool> requiresUpdate,
  ) {
    return _id3BiosealResourceCallbackArgs_GetRequiresUpdate(
      hResourceCallbackArgs,
      requiresUpdate,
    );
  }

  late final _id3BiosealResourceCallbackArgs_GetRequiresUpdatePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS, ffi.Pointer<ffi.Bool>)>>(
      'id3BiosealResourceCallbackArgs_GetRequiresUpdate');
  late final _id3BiosealResourceCallbackArgs_GetRequiresUpdate =
      _id3BiosealResourceCallbackArgs_GetRequiresUpdatePtr.asFunction<
          int Function(
              ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the external resource data as a byte array.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param outputData [out] The external resource data as a byte array.
  /// @param outputDataSize [in,out] Size of the 'outputData' buffer. Receives the number of elements in the 'outputData' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_GetOutputData(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.UnsignedChar> outputData,
    ffi.Pointer<ffi.Int> outputDataSize,
  ) {
    return _id3BiosealResourceCallbackArgs_GetOutputData(
      hResourceCallbackArgs,
      outputData,
      outputDataSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_GetOutputDataPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealResourceCallbackArgs_GetOutputData');
  late final _id3BiosealResourceCallbackArgs_GetOutputData =
      _id3BiosealResourceCallbackArgs_GetOutputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the external resource data as a byte array.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param outputData [in] The external resource data as a byte array.
  /// @param outputDataSize [in] Size of the 'outputData' buffer.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_SetOutputData(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.UnsignedChar> outputData,
    int outputDataSize,
  ) {
    return _id3BiosealResourceCallbackArgs_SetOutputData(
      hResourceCallbackArgs,
      outputData,
      outputDataSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_SetOutputDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int)>>('id3BiosealResourceCallbackArgs_SetOutputData');
  late final _id3BiosealResourceCallbackArgs_SetOutputData =
      _id3BiosealResourceCallbackArgs_SetOutputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.UnsignedChar>, int)>();

  /// Downloads a resource.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_Download(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
  ) {
    return _id3BiosealResourceCallbackArgs_Download(
      hResourceCallbackArgs,
    );
  }

  late final _id3BiosealResourceCallbackArgs_DownloadPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS)>>(
      'id3BiosealResourceCallbackArgs_Download');
  late final _id3BiosealResourceCallbackArgs_Download =
      _id3BiosealResourceCallbackArgs_DownloadPtr
          .asFunction<int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS)>();

  /// Downloads a file from the specified URL and returns a string.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param url [in] The URL to the file.
  /// @param data [out] The file as a string.
  /// @param dataSize [in,out] Size of the 'data' buffer. Receives the minimum required buffer size to hold the 'data' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'data' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_DownloadStringFile(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Char> url,
    ffi.Pointer<ffi.Char> data,
    ffi.Pointer<ffi.Int> dataSize,
  ) {
    return _id3BiosealResourceCallbackArgs_DownloadStringFile(
      hResourceCallbackArgs,
      url,
      data,
      dataSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_DownloadStringFilePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealResourceCallbackArgs_DownloadStringFile');
  late final _id3BiosealResourceCallbackArgs_DownloadStringFile =
      _id3BiosealResourceCallbackArgs_DownloadStringFilePtr.asFunction<
          int Function(
              ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Computes the SHA-256 of the external resource's data.
  /// @param hResourceCallbackArgs [in] Handle to the ResourceCallbackArgs object.
  /// @param result [out] A string that contains the SHA-256.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealResourceCallbackArgs_ComputeSha256(
    ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hResourceCallbackArgs,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3BiosealResourceCallbackArgs_ComputeSha256(
      hResourceCallbackArgs,
      result,
      resultSize,
    );
  }

  late final _id3BiosealResourceCallbackArgs_ComputeSha256Ptr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealResourceCallbackArgs_ComputeSha256');
  late final _id3BiosealResourceCallbackArgs_ComputeSha256 =
      _id3BiosealResourceCallbackArgs_ComputeSha256Ptr.asFunction<
          int Function(ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a CertificateExtension object.
  /// @param phCertificateExtension [in] Handle to the CertificateExtension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_Initialize(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION> phCertificateExtension,
  ) {
    return _id3BiosealCertificateExtension_Initialize(
      phCertificateExtension,
    );
  }

  late final _id3BiosealCertificateExtension_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION>)>>(
      'id3BiosealCertificateExtension_Initialize');
  late final _id3BiosealCertificateExtension_Initialize =
      _id3BiosealCertificateExtension_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION>)>();

  /// @brief Releases the memory allocated for a CertificateExtension.
  /// @param phCertificateExtension [in] Handle to the CertificateExtension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_Dispose(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION> phCertificateExtension,
  ) {
    return _id3BiosealCertificateExtension_Dispose(
      phCertificateExtension,
    );
  }

  late final _id3BiosealCertificateExtension_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION>)>>(
      'id3BiosealCertificateExtension_Dispose');
  late final _id3BiosealCertificateExtension_Dispose =
      _id3BiosealCertificateExtension_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hCertificateExtension [in] Handle to the CertificateExtension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_CheckHandle(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION hCertificateExtension,
  ) {
    return _id3BiosealCertificateExtension_CheckHandle(
      hCertificateExtension,
    );
  }

  late final _id3BiosealCertificateExtension_CheckHandlePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION)>>(
      'id3BiosealCertificateExtension_CheckHandle');
  late final _id3BiosealCertificateExtension_CheckHandle =
      _id3BiosealCertificateExtension_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION)>();

  /// Gets the the OID of the certificate extension.
  /// @param hCertificateExtension [in] Handle to the CertificateExtension object.
  /// @param oid [out] The OID of the certificate extension.
  /// @param oidSize [in,out] Size of the 'oid' buffer. Receives the minimum required buffer size to hold the 'oid' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'oid' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_GetOid(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION hCertificateExtension,
    ffi.Pointer<ffi.Char> oid,
    ffi.Pointer<ffi.Int> oidSize,
  ) {
    return _id3BiosealCertificateExtension_GetOid(
      hCertificateExtension,
      oid,
      oidSize,
    );
  }

  late final _id3BiosealCertificateExtension_GetOidPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_CERTIFICATE_EXTENSION,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealCertificateExtension_GetOid');
  late final _id3BiosealCertificateExtension_GetOid =
      _id3BiosealCertificateExtension_GetOidPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the A byte array that contains the value of the certificate extension.
  /// @param hCertificateExtension [in] Handle to the CertificateExtension object.
  /// @param value [out] A byte array that contains the value of the certificate extension.
  /// @param valueSize [in,out] Size of the 'value' buffer. Receives the number of elements in the 'value' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_GetValue(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION hCertificateExtension,
    ffi.Pointer<ffi.UnsignedChar> value,
    ffi.Pointer<ffi.Int> valueSize,
  ) {
    return _id3BiosealCertificateExtension_GetValue(
      hCertificateExtension,
      value,
      valueSize,
    );
  }

  late final _id3BiosealCertificateExtension_GetValuePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateExtension_GetValue');
  late final _id3BiosealCertificateExtension_GetValue =
      _id3BiosealCertificateExtension_GetValuePtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Gets the A value indicating whether the certificate extension is critical.
  /// @param hCertificateExtension [in] Handle to the CertificateExtension object.
  /// @param critical [out] A value indicating whether the certificate extension is critical.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtension_GetCritical(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION hCertificateExtension,
    ffi.Pointer<ffi.Bool> critical,
  ) {
    return _id3BiosealCertificateExtension_GetCritical(
      hCertificateExtension,
      critical,
    );
  }

  late final _id3BiosealCertificateExtension_GetCriticalPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_CERTIFICATE_EXTENSION, ffi.Pointer<ffi.Bool>)>>(
      'id3BiosealCertificateExtension_GetCritical');
  late final _id3BiosealCertificateExtension_GetCritical =
      _id3BiosealCertificateExtension_GetCriticalPtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_EXTENSION, ffi.Pointer<ffi.Bool>)>();

  /// @brief Initializes a CertificateExtensionList object.
  /// @param phCertificateExtensionList [in] Handle to the CertificateExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtensionList_Initialize(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>
        phCertificateExtensionList,
  ) {
    return _id3BiosealCertificateExtensionList_Initialize(
      phCertificateExtensionList,
    );
  }

  late final _id3BiosealCertificateExtensionList_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>)>>(
      'id3BiosealCertificateExtensionList_Initialize');
  late final _id3BiosealCertificateExtensionList_Initialize =
      _id3BiosealCertificateExtensionList_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>)>();

  /// @brief Releases the memory allocated for a CertificateExtensionList.
  /// @param phCertificateExtensionList [in] Handle to the CertificateExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtensionList_Dispose(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>
        phCertificateExtensionList,
  ) {
    return _id3BiosealCertificateExtensionList_Dispose(
      phCertificateExtensionList,
    );
  }

  late final _id3BiosealCertificateExtensionList_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>)>>(
      'id3BiosealCertificateExtensionList_Dispose');
  late final _id3BiosealCertificateExtensionList_Dispose =
      _id3BiosealCertificateExtensionList_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hCertificateExtensionList [in] Handle to the CertificateExtensionList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtensionList_CheckHandle(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST hCertificateExtensionList,
  ) {
    return _id3BiosealCertificateExtensionList_CheckHandle(
      hCertificateExtensionList,
    );
  }

  late final _id3BiosealCertificateExtensionList_CheckHandlePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST)>>(
      'id3BiosealCertificateExtensionList_CheckHandle');
  late final _id3BiosealCertificateExtensionList_CheckHandle =
      _id3BiosealCertificateExtensionList_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST)>();

  /// Gets an item of the CertificateExtensionList object.
  /// @param hCertificateExtensionList [in] Handle to the CertificateExtensionList object.
  /// @param index [in] Index of the CertificateExtension item to get.
  /// @param hCertificateExtensionItem [out] CertificateExtension item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtensionList_Get(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST hCertificateExtensionList,
    int index,
    ID3_BIOSEAL_CERTIFICATE_EXTENSION hCertificateExtensionItem,
  ) {
    return _id3BiosealCertificateExtensionList_Get(
      hCertificateExtensionList,
      index,
      hCertificateExtensionItem,
    );
  }

  late final _id3BiosealCertificateExtensionList_GetPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST, ffi.Int,
                  ID3_BIOSEAL_CERTIFICATE_EXTENSION)>>(
      'id3BiosealCertificateExtensionList_Get');
  late final _id3BiosealCertificateExtensionList_Get =
      _id3BiosealCertificateExtensionList_GetPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST, int,
              ID3_BIOSEAL_CERTIFICATE_EXTENSION)>();

  /// Gets the number of elements in the CertificateExtensionList object.
  /// @param hCertificateExtensionList [in] Handle to the CertificateExtensionList object.
  /// @param count [out] Number of elements in the CertificateExtension object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateExtensionList_GetCount(
    ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST hCertificateExtensionList,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealCertificateExtensionList_GetCount(
      hCertificateExtensionList,
      count,
    );
  }

  late final _id3BiosealCertificateExtensionList_GetCountPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateExtensionList_GetCount');
  late final _id3BiosealCertificateExtensionList_GetCount =
      _id3BiosealCertificateExtensionList_GetCountPtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST, ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a CertificateInformation object.
  /// @param phCertificateInformation [in] Handle to the CertificateInformation object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_Initialize(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION> phCertificateInformation,
  ) {
    return _id3BiosealCertificateInformation_Initialize(
      phCertificateInformation,
    );
  }

  late final _id3BiosealCertificateInformation_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION>)>>(
      'id3BiosealCertificateInformation_Initialize');
  late final _id3BiosealCertificateInformation_Initialize =
      _id3BiosealCertificateInformation_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION>)>();

  /// @brief Releases the memory allocated for a CertificateInformation.
  /// @param phCertificateInformation [in] Handle to the CertificateInformation object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_Dispose(
    ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION> phCertificateInformation,
  ) {
    return _id3BiosealCertificateInformation_Dispose(
      phCertificateInformation,
    );
  }

  late final _id3BiosealCertificateInformation_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION>)>>(
      'id3BiosealCertificateInformation_Dispose');
  late final _id3BiosealCertificateInformation_Dispose =
      _id3BiosealCertificateInformation_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_CheckHandle(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
  ) {
    return _id3BiosealCertificateInformation_CheckHandle(
      hCertificateInformation,
    );
  }

  late final _id3BiosealCertificateInformation_CheckHandlePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION)>>(
      'id3BiosealCertificateInformation_CheckHandle');
  late final _id3BiosealCertificateInformation_CheckHandle =
      _id3BiosealCertificateInformation_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION)>();

  /// Gets the the common name (CN) of the certificate issuer.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param issuerCommonName [out] The common name (CN) of the certificate issuer.
  /// @param issuerCommonNameSize [in,out] Size of the 'issuerCommonName' buffer. Receives the minimum required buffer size to hold the 'issuerCommonName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuerCommonName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetIssuerCommonName(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> issuerCommonName,
    ffi.Pointer<ffi.Int> issuerCommonNameSize,
  ) {
    return _id3BiosealCertificateInformation_GetIssuerCommonName(
      hCertificateInformation,
      issuerCommonName,
      issuerCommonNameSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetIssuerCommonNamePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetIssuerCommonName');
  late final _id3BiosealCertificateInformation_GetIssuerCommonName =
      _id3BiosealCertificateInformation_GetIssuerCommonNamePtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the organization (O) of the certificate issuer.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param issuerOrganization [out] The organization (O) of the certificate issuer.
  /// @param issuerOrganizationSize [in,out] Size of the 'issuerOrganization' buffer. Receives the minimum required buffer size to hold the 'issuerOrganization' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuerOrganization' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetIssuerOrganization(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> issuerOrganization,
    ffi.Pointer<ffi.Int> issuerOrganizationSize,
  ) {
    return _id3BiosealCertificateInformation_GetIssuerOrganization(
      hCertificateInformation,
      issuerOrganization,
      issuerOrganizationSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetIssuerOrganizationPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetIssuerOrganization');
  late final _id3BiosealCertificateInformation_GetIssuerOrganization =
      _id3BiosealCertificateInformation_GetIssuerOrganizationPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the country (C) of the certificate issuer.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param issuerCountry [out] The country (C) of the certificate issuer.
  /// @param issuerCountrySize [in,out] Size of the 'issuerCountry' buffer. Receives the minimum required buffer size to hold the 'issuerCountry' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuerCountry' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetIssuerCountry(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> issuerCountry,
    ffi.Pointer<ffi.Int> issuerCountrySize,
  ) {
    return _id3BiosealCertificateInformation_GetIssuerCountry(
      hCertificateInformation,
      issuerCountry,
      issuerCountrySize,
    );
  }

  late final _id3BiosealCertificateInformation_GetIssuerCountryPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetIssuerCountry');
  late final _id3BiosealCertificateInformation_GetIssuerCountry =
      _id3BiosealCertificateInformation_GetIssuerCountryPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the organizational unit (OU) of the certificate issuer.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param issuerOrganizationalUnit [out] The organizational unit (OU) of the certificate issuer.
  /// @param issuerOrganizationalUnitSize [in,out] Size of the 'issuerOrganizationalUnit' buffer. Receives the minimum required buffer size to hold the 'issuerOrganizationalUnit' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuerOrganizationalUnit' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetIssuerOrganizationalUnit(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> issuerOrganizationalUnit,
    ffi.Pointer<ffi.Int> issuerOrganizationalUnitSize,
  ) {
    return _id3BiosealCertificateInformation_GetIssuerOrganizationalUnit(
      hCertificateInformation,
      issuerOrganizationalUnit,
      issuerOrganizationalUnitSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetIssuerOrganizationalUnitPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetIssuerOrganizationalUnit');
  late final _id3BiosealCertificateInformation_GetIssuerOrganizationalUnit =
      _id3BiosealCertificateInformation_GetIssuerOrganizationalUnitPtr
          .asFunction<
              int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the distinguished name (DN) of the certificate issuer.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param issuerDistinguishedName [out] The distinguished name (DN) of the certificate issuer.
  /// @param issuerDistinguishedNameSize [in,out] Size of the 'issuerDistinguishedName' buffer. Receives the minimum required buffer size to hold the 'issuerDistinguishedName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuerDistinguishedName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetIssuerDistinguishedName(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> issuerDistinguishedName,
    ffi.Pointer<ffi.Int> issuerDistinguishedNameSize,
  ) {
    return _id3BiosealCertificateInformation_GetIssuerDistinguishedName(
      hCertificateInformation,
      issuerDistinguishedName,
      issuerDistinguishedNameSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetIssuerDistinguishedNamePtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetIssuerDistinguishedName');
  late final _id3BiosealCertificateInformation_GetIssuerDistinguishedName =
      _id3BiosealCertificateInformation_GetIssuerDistinguishedNamePtr
          .asFunction<
              int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the subject common name (CN) from the certificate.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param subjectCommonName [out] The subject common name (CN) from the certificate.
  /// @param subjectCommonNameSize [in,out] Size of the 'subjectCommonName' buffer. Receives the minimum required buffer size to hold the 'subjectCommonName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'subjectCommonName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSubjectCommonName(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> subjectCommonName,
    ffi.Pointer<ffi.Int> subjectCommonNameSize,
  ) {
    return _id3BiosealCertificateInformation_GetSubjectCommonName(
      hCertificateInformation,
      subjectCommonName,
      subjectCommonNameSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSubjectCommonNamePtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSubjectCommonName');
  late final _id3BiosealCertificateInformation_GetSubjectCommonName =
      _id3BiosealCertificateInformation_GetSubjectCommonNamePtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the organization (O) of the certificate subject.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param subjectOrganization [out] The organization (O) of the certificate subject.
  /// @param subjectOrganizationSize [in,out] Size of the 'subjectOrganization' buffer. Receives the minimum required buffer size to hold the 'subjectOrganization' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'subjectOrganization' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSubjectOrganization(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> subjectOrganization,
    ffi.Pointer<ffi.Int> subjectOrganizationSize,
  ) {
    return _id3BiosealCertificateInformation_GetSubjectOrganization(
      hCertificateInformation,
      subjectOrganization,
      subjectOrganizationSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSubjectOrganizationPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSubjectOrganization');
  late final _id3BiosealCertificateInformation_GetSubjectOrganization =
      _id3BiosealCertificateInformation_GetSubjectOrganizationPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the country (C) of the certificate subject.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param subjectCountry [out] The country (C) of the certificate subject.
  /// @param subjectCountrySize [in,out] Size of the 'subjectCountry' buffer. Receives the minimum required buffer size to hold the 'subjectCountry' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'subjectCountry' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSubjectCountry(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> subjectCountry,
    ffi.Pointer<ffi.Int> subjectCountrySize,
  ) {
    return _id3BiosealCertificateInformation_GetSubjectCountry(
      hCertificateInformation,
      subjectCountry,
      subjectCountrySize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSubjectCountryPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetSubjectCountry');
  late final _id3BiosealCertificateInformation_GetSubjectCountry =
      _id3BiosealCertificateInformation_GetSubjectCountryPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the organizational unit (OU) of the certificate subject.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param subjectOrganizationalUnit [out] The organizational unit (OU) of the certificate subject.
  /// @param subjectOrganizationalUnitSize [in,out] Size of the 'subjectOrganizationalUnit' buffer. Receives the minimum required buffer size to hold the 'subjectOrganizationalUnit' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'subjectOrganizationalUnit' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSubjectOrganizationalUnit(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> subjectOrganizationalUnit,
    ffi.Pointer<ffi.Int> subjectOrganizationalUnitSize,
  ) {
    return _id3BiosealCertificateInformation_GetSubjectOrganizationalUnit(
      hCertificateInformation,
      subjectOrganizationalUnit,
      subjectOrganizationalUnitSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSubjectOrganizationalUnitPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSubjectOrganizationalUnit');
  late final _id3BiosealCertificateInformation_GetSubjectOrganizationalUnit =
      _id3BiosealCertificateInformation_GetSubjectOrganizationalUnitPtr
          .asFunction<
              int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the subject distinguished (DN) name of the certificate.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param subjectDistinguishedName [out] The subject distinguished (DN) name of the certificate.
  /// @param subjectDistinguishedNameSize [in,out] Size of the 'subjectDistinguishedName' buffer. Receives the minimum required buffer size to hold the 'subjectDistinguishedName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'subjectDistinguishedName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSubjectDistinguishedName(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> subjectDistinguishedName,
    ffi.Pointer<ffi.Int> subjectDistinguishedNameSize,
  ) {
    return _id3BiosealCertificateInformation_GetSubjectDistinguishedName(
      hCertificateInformation,
      subjectDistinguishedName,
      subjectDistinguishedNameSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSubjectDistinguishedNamePtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSubjectDistinguishedName');
  late final _id3BiosealCertificateInformation_GetSubjectDistinguishedName =
      _id3BiosealCertificateInformation_GetSubjectDistinguishedNamePtr
          .asFunction<
              int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the date in local time when a certificate becomes valid.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param hNotBefore [out] The date in local time when a certificate becomes valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetNotBefore(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ID3_BIOSEAL_DATE_TIME hNotBefore,
  ) {
    return _id3BiosealCertificateInformation_GetNotBefore(
      hCertificateInformation,
      hNotBefore,
    );
  }

  late final _id3BiosealCertificateInformation_GetNotBeforePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_DATE_TIME)>>(
      'id3BiosealCertificateInformation_GetNotBefore');
  late final _id3BiosealCertificateInformation_GetNotBefore =
      _id3BiosealCertificateInformation_GetNotBeforePtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the date in local time after which a certificate is no longer valid.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param hNotAfter [out] The date in local time after which a certificate is no longer valid.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetNotAfter(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ID3_BIOSEAL_DATE_TIME hNotAfter,
  ) {
    return _id3BiosealCertificateInformation_GetNotAfter(
      hCertificateInformation,
      hNotAfter,
    );
  }

  late final _id3BiosealCertificateInformation_GetNotAfterPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_DATE_TIME)>>(
      'id3BiosealCertificateInformation_GetNotAfter');
  late final _id3BiosealCertificateInformation_GetNotAfter =
      _id3BiosealCertificateInformation_GetNotAfterPtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the serial number of the certificate.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param serialNumber [out] The serial number of the certificate.
  /// @param serialNumberSize [in,out] Size of the 'serialNumber' buffer. Receives the number of elements in the 'serialNumber' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSerialNumber(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.UnsignedChar> serialNumber,
    ffi.Pointer<ffi.Int> serialNumberSize,
  ) {
    return _id3BiosealCertificateInformation_GetSerialNumber(
      hCertificateInformation,
      serialNumber,
      serialNumberSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSerialNumberPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetSerialNumber');
  late final _id3BiosealCertificateInformation_GetSerialNumber =
      _id3BiosealCertificateInformation_GetSerialNumberPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the serial number from the certificate as a string.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param serialNumberString [out] The serial number from the certificate as a string.
  /// @param serialNumberStringSize [in,out] Size of the 'serialNumberString' buffer. Receives the minimum required buffer size to hold the 'serialNumberString' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'serialNumberString' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSerialNumberString(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> serialNumberString,
    ffi.Pointer<ffi.Int> serialNumberStringSize,
  ) {
    return _id3BiosealCertificateInformation_GetSerialNumberString(
      hCertificateInformation,
      serialNumberString,
      serialNumberStringSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSerialNumberStringPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSerialNumberString');
  late final _id3BiosealCertificateInformation_GetSerialNumberString =
      _id3BiosealCertificateInformation_GetSerialNumberStringPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the certificate data.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param data [out] The certificate data.
  /// @param dataSize [in,out] Size of the 'data' buffer. Receives the number of elements in the 'data' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetData(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.UnsignedChar> data,
    ffi.Pointer<ffi.Int> dataSize,
  ) {
    return _id3BiosealCertificateInformation_GetData(
      hCertificateInformation,
      data,
      dataSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetDataPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetData');
  late final _id3BiosealCertificateInformation_GetData =
      _id3BiosealCertificateInformation_GetDataPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the OID of the certificate's signing algorithm.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param signatureAlgorithm [out] The OID of the certificate's signing algorithm.
  /// @param signatureAlgorithmSize [in,out] Size of the 'signatureAlgorithm' buffer. Receives the minimum required buffer size to hold the 'signatureAlgorithm' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'signatureAlgorithm' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetSignatureAlgorithm(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Char> signatureAlgorithm,
    ffi.Pointer<ffi.Int> signatureAlgorithmSize,
  ) {
    return _id3BiosealCertificateInformation_GetSignatureAlgorithm(
      hCertificateInformation,
      signatureAlgorithm,
      signatureAlgorithmSize,
    );
  }

  late final _id3BiosealCertificateInformation_GetSignatureAlgorithmPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealCertificateInformation_GetSignatureAlgorithm');
  late final _id3BiosealCertificateInformation_GetSignatureAlgorithm =
      _id3BiosealCertificateInformation_GetSignatureAlgorithmPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the certificate version.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param version [out] The certificate version.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetVersion(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.Int> version,
  ) {
    return _id3BiosealCertificateInformation_GetVersion(
      hCertificateInformation,
      version,
    );
  }

  late final _id3BiosealCertificateInformation_GetVersionPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_CERTIFICATE_INFORMATION, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetVersion');
  late final _id3BiosealCertificateInformation_GetVersion =
      _id3BiosealCertificateInformation_GetVersionPtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_INFORMATION, ffi.Pointer<ffi.Int>)>();

  /// Gets the the certificate public key.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param publicKey [out] The certificate public key.
  /// @param publicKeySize [in,out] Size of the 'publicKey' buffer. Receives the number of elements in the 'publicKey' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetPublicKey(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ffi.Pointer<ffi.UnsignedChar> publicKey,
    ffi.Pointer<ffi.Int> publicKeySize,
  ) {
    return _id3BiosealCertificateInformation_GetPublicKey(
      hCertificateInformation,
      publicKey,
      publicKeySize,
    );
  }

  late final _id3BiosealCertificateInformation_GetPublicKeyPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealCertificateInformation_GetPublicKey');
  late final _id3BiosealCertificateInformation_GetPublicKey =
      _id3BiosealCertificateInformation_GetPublicKeyPtr.asFunction<
          int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the certificate key usage list.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param hKeyUsage [out] The certificate key usage list.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetKeyUsage(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ID3_BIOSEAL_STRING_ARRAY hKeyUsage,
  ) {
    return _id3BiosealCertificateInformation_GetKeyUsage(
      hCertificateInformation,
      hKeyUsage,
    );
  }

  late final _id3BiosealCertificateInformation_GetKeyUsagePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ID3_BIOSEAL_STRING_ARRAY)>>(
      'id3BiosealCertificateInformation_GetKeyUsage');
  late final _id3BiosealCertificateInformation_GetKeyUsage =
      _id3BiosealCertificateInformation_GetKeyUsagePtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets the the certificate policies.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param hPolicies [out] The certificate policies.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetPolicies(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ID3_BIOSEAL_STRING_ARRAY hPolicies,
  ) {
    return _id3BiosealCertificateInformation_GetPolicies(
      hCertificateInformation,
      hPolicies,
    );
  }

  late final _id3BiosealCertificateInformation_GetPoliciesPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ID3_BIOSEAL_STRING_ARRAY)>>(
      'id3BiosealCertificateInformation_GetPolicies');
  late final _id3BiosealCertificateInformation_GetPolicies =
      _id3BiosealCertificateInformation_GetPoliciesPtr.asFunction<
          int Function(
              ID3_BIOSEAL_CERTIFICATE_INFORMATION, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets the the certificate extension list.
  /// @param hCertificateInformation [in] Handle to the CertificateInformation object.
  /// @param hCertificateExtensionList [out] The certificate extension list.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealCertificateInformation_GetCertificateExtensionList(
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
    ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST hCertificateExtensionList,
  ) {
    return _id3BiosealCertificateInformation_GetCertificateExtensionList(
      hCertificateInformation,
      hCertificateExtensionList,
    );
  }

  late final _id3BiosealCertificateInformation_GetCertificateExtensionListPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                      ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST)>>(
          'id3BiosealCertificateInformation_GetCertificateExtensionList');
  late final _id3BiosealCertificateInformation_GetCertificateExtensionList =
      _id3BiosealCertificateInformation_GetCertificateExtensionListPtr
          .asFunction<
              int Function(ID3_BIOSEAL_CERTIFICATE_INFORMATION,
                  ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST)>();

  /// @brief Initializes a BiometricVerificationRule object.
  /// @param phBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_Initialize(
    ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>
        phBiometricVerificationRule,
  ) {
    return _id3BiosealBiometricVerificationRule_Initialize(
      phBiometricVerificationRule,
    );
  }

  late final _id3BiosealBiometricVerificationRule_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>)>>(
      'id3BiosealBiometricVerificationRule_Initialize');
  late final _id3BiosealBiometricVerificationRule_Initialize =
      _id3BiosealBiometricVerificationRule_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>)>();

  /// @brief Releases the memory allocated for a BiometricVerificationRule.
  /// @param phBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_Dispose(
    ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>
        phBiometricVerificationRule,
  ) {
    return _id3BiosealBiometricVerificationRule_Dispose(
      phBiometricVerificationRule,
    );
  }

  late final _id3BiosealBiometricVerificationRule_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>)>>(
      'id3BiosealBiometricVerificationRule_Dispose');
  late final _id3BiosealBiometricVerificationRule_Dispose =
      _id3BiosealBiometricVerificationRule_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_CheckHandle(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE hBiometricVerificationRule,
  ) {
    return _id3BiosealBiometricVerificationRule_CheckHandle(
      hBiometricVerificationRule,
    );
  }

  late final _id3BiosealBiometricVerificationRule_CheckHandlePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE)>>(
      'id3BiosealBiometricVerificationRule_CheckHandle');
  late final _id3BiosealBiometricVerificationRule_CheckHandle =
      _id3BiosealBiometricVerificationRule_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE)>();

  /// Gets the the type of biometric data to be used for verification.
  /// @param hBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @param eDataType [out] The type of biometric data to be used for verification.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_GetDataType(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE hBiometricVerificationRule,
    ffi.Pointer<ffi.Int32> eDataType,
  ) {
    return _id3BiosealBiometricVerificationRule_GetDataType(
      hBiometricVerificationRule,
      eDataType,
    );
  }

  late final _id3BiosealBiometricVerificationRule_GetDataTypePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE,
                  ffi.Pointer<ffi.Int32>)>>(
      'id3BiosealBiometricVerificationRule_GetDataType');
  late final _id3BiosealBiometricVerificationRule_GetDataType =
      _id3BiosealBiometricVerificationRule_GetDataTypePtr.asFunction<
          int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE,
              ffi.Pointer<ffi.Int32>)>();

  /// Gets the the number of biometric samples of the specified type to be verified.
  /// @param hBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @param count [out] The number of biometric samples of the specified type to be verified.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_GetCount(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE hBiometricVerificationRule,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealBiometricVerificationRule_GetCount(
      hBiometricVerificationRule,
      count,
    );
  }

  late final _id3BiosealBiometricVerificationRule_GetCountPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealBiometricVerificationRule_GetCount');
  late final _id3BiosealBiometricVerificationRule_GetCount =
      _id3BiosealBiometricVerificationRule_GetCountPtr.asFunction<
          int Function(
              ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE, ffi.Pointer<ffi.Int>)>();

  /// Gets the the biometric decision threshold.
  /// @param hBiometricVerificationRule [in] Handle to the BiometricVerificationRule object.
  /// @param threshold [out] The biometric decision threshold.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRule_GetThreshold(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE hBiometricVerificationRule,
    ffi.Pointer<ffi.Int> threshold,
  ) {
    return _id3BiosealBiometricVerificationRule_GetThreshold(
      hBiometricVerificationRule,
      threshold,
    );
  }

  late final _id3BiosealBiometricVerificationRule_GetThresholdPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealBiometricVerificationRule_GetThreshold');
  late final _id3BiosealBiometricVerificationRule_GetThreshold =
      _id3BiosealBiometricVerificationRule_GetThresholdPtr.asFunction<
          int Function(
              ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE, ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a BiometricVerificationRules object.
  /// @param phBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_Initialize(
    ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>
        phBiometricVerificationRules,
  ) {
    return _id3BiosealBiometricVerificationRules_Initialize(
      phBiometricVerificationRules,
    );
  }

  late final _id3BiosealBiometricVerificationRules_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>)>>(
      'id3BiosealBiometricVerificationRules_Initialize');
  late final _id3BiosealBiometricVerificationRules_Initialize =
      _id3BiosealBiometricVerificationRules_InitializePtr.asFunction<
          int Function(
              ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>)>();

  /// @brief Releases the memory allocated for a BiometricVerificationRules.
  /// @param phBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_Dispose(
    ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>
        phBiometricVerificationRules,
  ) {
    return _id3BiosealBiometricVerificationRules_Dispose(
      phBiometricVerificationRules,
    );
  }

  late final _id3BiosealBiometricVerificationRules_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>)>>(
      'id3BiosealBiometricVerificationRules_Dispose');
  late final _id3BiosealBiometricVerificationRules_Dispose =
      _id3BiosealBiometricVerificationRules_DisposePtr.asFunction<
          int Function(
              ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_CheckHandle(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES hBiometricVerificationRules,
  ) {
    return _id3BiosealBiometricVerificationRules_CheckHandle(
      hBiometricVerificationRules,
    );
  }

  late final _id3BiosealBiometricVerificationRules_CheckHandlePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES)>>(
      'id3BiosealBiometricVerificationRules_CheckHandle');
  late final _id3BiosealBiometricVerificationRules_CheckHandle =
      _id3BiosealBiometricVerificationRules_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES)>();

  /// Gets the indicates whether all verification rules must be respected.
  /// @param hBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @param verifyAll [out] Indicates whether all verification rules must be respected.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_GetVerifyAll(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES hBiometricVerificationRules,
    ffi.Pointer<ffi.Bool> verifyAll,
  ) {
    return _id3BiosealBiometricVerificationRules_GetVerifyAll(
      hBiometricVerificationRules,
      verifyAll,
    );
  }

  late final _id3BiosealBiometricVerificationRules_GetVerifyAllPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES,
                  ffi.Pointer<ffi.Bool>)>>(
      'id3BiosealBiometricVerificationRules_GetVerifyAll');
  late final _id3BiosealBiometricVerificationRules_GetVerifyAll =
      _id3BiosealBiometricVerificationRules_GetVerifyAllPtr.asFunction<
          int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES,
              ffi.Pointer<ffi.Bool>)>();

  /// Gets an item of the BiometricVerificationRules object.
  /// @param hBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @param index [in] Index of the BiometricVerificationRule item to get.
  /// @param hBiometricVerificationRuleItem [out] BiometricVerificationRule item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_Get(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES hBiometricVerificationRules,
    int index,
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE hBiometricVerificationRuleItem,
  ) {
    return _id3BiosealBiometricVerificationRules_Get(
      hBiometricVerificationRules,
      index,
      hBiometricVerificationRuleItem,
    );
  }

  late final _id3BiosealBiometricVerificationRules_GetPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES,
                  ffi.Int, ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE)>>(
      'id3BiosealBiometricVerificationRules_Get');
  late final _id3BiosealBiometricVerificationRules_Get =
      _id3BiosealBiometricVerificationRules_GetPtr.asFunction<
          int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES, int,
              ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE)>();

  /// Gets the number of elements in the BiometricVerificationRules object.
  /// @param hBiometricVerificationRules [in] Handle to the BiometricVerificationRules object.
  /// @param count [out] Number of elements in the BiometricVerificationRule object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBiometricVerificationRules_GetCount(
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES hBiometricVerificationRules,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealBiometricVerificationRules_GetCount(
      hBiometricVerificationRules,
      count,
    );
  }

  late final _id3BiosealBiometricVerificationRules_GetCountPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealBiometricVerificationRules_GetCount');
  late final _id3BiosealBiometricVerificationRules_GetCount =
      _id3BiosealBiometricVerificationRules_GetCountPtr.asFunction<
          int Function(ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES,
              ffi.Pointer<ffi.Int>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetUserAuthenticationMethodString(
    int value,
  ) {
    return _id3Bioseal_GetUserAuthenticationMethodString(
      value,
    );
  }

  late final _id3Bioseal_GetUserAuthenticationMethodStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetUserAuthenticationMethodString');
  late final _id3Bioseal_GetUserAuthenticationMethodString =
      _id3Bioseal_GetUserAuthenticationMethodStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a UserAuthentication object.
  /// @param phUserAuthentication [in] Handle to the UserAuthentication object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_Initialize(
    ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION> phUserAuthentication,
  ) {
    return _id3BiosealUserAuthentication_Initialize(
      phUserAuthentication,
    );
  }

  late final _id3BiosealUserAuthentication_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION>)>>(
      'id3BiosealUserAuthentication_Initialize');
  late final _id3BiosealUserAuthentication_Initialize =
      _id3BiosealUserAuthentication_InitializePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION>)>();

  /// @brief Releases the memory allocated for a UserAuthentication.
  /// @param phUserAuthentication [in] Handle to the UserAuthentication object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_Dispose(
    ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION> phUserAuthentication,
  ) {
    return _id3BiosealUserAuthentication_Dispose(
      phUserAuthentication,
    );
  }

  late final _id3BiosealUserAuthentication_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION>)>>(
      'id3BiosealUserAuthentication_Dispose');
  late final _id3BiosealUserAuthentication_Dispose =
      _id3BiosealUserAuthentication_DisposePtr.asFunction<
          int Function(ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hUserAuthentication [in] Handle to the UserAuthentication object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_CheckHandle(
    ID3_BIOSEAL_USER_AUTHENTICATION hUserAuthentication,
  ) {
    return _id3BiosealUserAuthentication_CheckHandle(
      hUserAuthentication,
    );
  }

  late final _id3BiosealUserAuthentication_CheckHandlePtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL_USER_AUTHENTICATION)>>(
      'id3BiosealUserAuthentication_CheckHandle');
  late final _id3BiosealUserAuthentication_CheckHandle =
      _id3BiosealUserAuthentication_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_USER_AUTHENTICATION)>();

  /// Gets the the user authentication method.
  /// @param hUserAuthentication [in] Handle to the UserAuthentication object.
  /// @param eMethod [out] The user authentication method.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_GetMethod(
    ID3_BIOSEAL_USER_AUTHENTICATION hUserAuthentication,
    ffi.Pointer<ffi.Int32> eMethod,
  ) {
    return _id3BiosealUserAuthentication_GetMethod(
      hUserAuthentication,
      eMethod,
    );
  }

  late final _id3BiosealUserAuthentication_GetMethodPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL_USER_AUTHENTICATION, ffi.Pointer<ffi.Int32>)>>(
      'id3BiosealUserAuthentication_GetMethod');
  late final _id3BiosealUserAuthentication_GetMethod =
      _id3BiosealUserAuthentication_GetMethodPtr.asFunction<
          int Function(
              ID3_BIOSEAL_USER_AUTHENTICATION, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the name of the payload field containing the password value.
  /// @param hUserAuthentication [in] Handle to the UserAuthentication object.
  /// @param passwordFieldName [out] The name of the payload field containing the password value.
  /// @param passwordFieldNameSize [in,out] Size of the 'passwordFieldName' buffer. Receives the minimum required buffer size to hold the 'passwordFieldName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'passwordFieldName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_GetPasswordFieldName(
    ID3_BIOSEAL_USER_AUTHENTICATION hUserAuthentication,
    ffi.Pointer<ffi.Char> passwordFieldName,
    ffi.Pointer<ffi.Int> passwordFieldNameSize,
  ) {
    return _id3BiosealUserAuthentication_GetPasswordFieldName(
      hUserAuthentication,
      passwordFieldName,
      passwordFieldNameSize,
    );
  }

  late final _id3BiosealUserAuthentication_GetPasswordFieldNamePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL_USER_AUTHENTICATION,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealUserAuthentication_GetPasswordFieldName');
  late final _id3BiosealUserAuthentication_GetPasswordFieldName =
      _id3BiosealUserAuthentication_GetPasswordFieldNamePtr.asFunction<
          int Function(ID3_BIOSEAL_USER_AUTHENTICATION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the hash algorithm used to protect the password value. Possible values are: Sha256, Sha384, Sha512.
  /// @param hUserAuthentication [in] Handle to the UserAuthentication object.
  /// @param passwordHashAlgorithm [out] The hash algorithm used to protect the password value. Possible values are: Sha256, Sha384, Sha512.
  /// @param passwordHashAlgorithmSize [in,out] Size of the 'passwordHashAlgorithm' buffer. Receives the minimum required buffer size to hold the 'passwordHashAlgorithm' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'passwordHashAlgorithm' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealUserAuthentication_GetPasswordHashAlgorithm(
    ID3_BIOSEAL_USER_AUTHENTICATION hUserAuthentication,
    ffi.Pointer<ffi.Char> passwordHashAlgorithm,
    ffi.Pointer<ffi.Int> passwordHashAlgorithmSize,
  ) {
    return _id3BiosealUserAuthentication_GetPasswordHashAlgorithm(
      hUserAuthentication,
      passwordHashAlgorithm,
      passwordHashAlgorithmSize,
    );
  }

  late final _id3BiosealUserAuthentication_GetPasswordHashAlgorithmPtr =
      _lookup<
              ffi.NativeFunction<
                  ffi.Int Function(ID3_BIOSEAL_USER_AUTHENTICATION,
                      ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
          'id3BiosealUserAuthentication_GetPasswordHashAlgorithm');
  late final _id3BiosealUserAuthentication_GetPasswordHashAlgorithm =
      _id3BiosealUserAuthentication_GetPasswordHashAlgorithmPtr.asFunction<
          int Function(ID3_BIOSEAL_USER_AUTHENTICATION, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a DecryptionArgs object.
  /// @param phDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_Initialize(
    ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS> phDecryptionArgs,
  ) {
    return _id3BiosealDecryptionArgs_Initialize(
      phDecryptionArgs,
    );
  }

  late final _id3BiosealDecryptionArgs_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS>)>>(
      'id3BiosealDecryptionArgs_Initialize');
  late final _id3BiosealDecryptionArgs_Initialize =
      _id3BiosealDecryptionArgs_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS>)>();

  /// @brief Releases the memory allocated for a DecryptionArgs.
  /// @param phDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_Dispose(
    ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS> phDecryptionArgs,
  ) {
    return _id3BiosealDecryptionArgs_Dispose(
      phDecryptionArgs,
    );
  }

  late final _id3BiosealDecryptionArgs_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS>)>>(
      'id3BiosealDecryptionArgs_Dispose');
  late final _id3BiosealDecryptionArgs_Dispose =
      _id3BiosealDecryptionArgs_DisposePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_CheckHandle(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
  ) {
    return _id3BiosealDecryptionArgs_CheckHandle(
      hDecryptionArgs,
    );
  }

  late final _id3BiosealDecryptionArgs_CheckHandlePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_DECRYPTION_ARGS)>>(
      'id3BiosealDecryptionArgs_CheckHandle');
  late final _id3BiosealDecryptionArgs_CheckHandle =
      _id3BiosealDecryptionArgs_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_DECRYPTION_ARGS)>();

  /// Gets the the name of the field to decrypt.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param fieldName [out] The name of the field to decrypt.
  /// @param fieldNameSize [in,out] Size of the 'fieldName' buffer. Receives the minimum required buffer size to hold the 'fieldName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'fieldName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_GetFieldName(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.Char> fieldName,
    ffi.Pointer<ffi.Int> fieldNameSize,
  ) {
    return _id3BiosealDecryptionArgs_GetFieldName(
      hDecryptionArgs,
      fieldName,
      fieldNameSize,
    );
  }

  late final _id3BiosealDecryptionArgs_GetFieldNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDecryptionArgs_GetFieldName');
  late final _id3BiosealDecryptionArgs_GetFieldName =
      _id3BiosealDecryptionArgs_GetFieldNamePtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>();

  /// Gets the the data to decrypt as a binary array.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param inputData [out] The data to decrypt as a binary array.
  /// @param inputDataSize [in,out] Size of the 'inputData' buffer. Receives the number of elements in the 'inputData' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_GetInputData(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.UnsignedChar> inputData,
    ffi.Pointer<ffi.Int> inputDataSize,
  ) {
    return _id3BiosealDecryptionArgs_GetInputData(
      hDecryptionArgs,
      inputData,
      inputDataSize,
    );
  }

  late final _id3BiosealDecryptionArgs_GetInputDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDecryptionArgs_GetInputData');
  late final _id3BiosealDecryptionArgs_GetInputData =
      _id3BiosealDecryptionArgs_GetInputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the decrypted data as a binary array.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param outputData [out] The decrypted data as a binary array.
  /// @param outputDataSize [in,out] Size of the 'outputData' buffer. Receives the number of elements in the 'outputData' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_GetOutputData(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.UnsignedChar> outputData,
    ffi.Pointer<ffi.Int> outputDataSize,
  ) {
    return _id3BiosealDecryptionArgs_GetOutputData(
      hDecryptionArgs,
      outputData,
      outputDataSize,
    );
  }

  late final _id3BiosealDecryptionArgs_GetOutputDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDecryptionArgs_GetOutputData');
  late final _id3BiosealDecryptionArgs_GetOutputData =
      _id3BiosealDecryptionArgs_GetOutputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the decrypted data as a binary array.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param outputData [in] The decrypted data as a binary array.
  /// @param outputDataSize [in] Size of the 'outputData' buffer.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_SetOutputData(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.UnsignedChar> outputData,
    int outputDataSize,
  ) {
    return _id3BiosealDecryptionArgs_SetOutputData(
      hDecryptionArgs,
      outputData,
      outputDataSize,
    );
  }

  late final _id3BiosealDecryptionArgs_SetOutputDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int)>>('id3BiosealDecryptionArgs_SetOutputData');
  late final _id3BiosealDecryptionArgs_SetOutputData =
      _id3BiosealDecryptionArgs_SetOutputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.UnsignedChar>, int)>();

  /// Gets the gets a string list containing the keys in the dict.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param hKeys [out] Gets a string list containing the keys in the dict.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_GetKeys(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ID3_BIOSEAL_STRING_ARRAY hKeys,
  ) {
    return _id3BiosealDecryptionArgs_GetKeys(
      hDecryptionArgs,
      hKeys,
    );
  }

  late final _id3BiosealDecryptionArgs_GetKeysPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DECRYPTION_ARGS,
              ID3_BIOSEAL_STRING_ARRAY)>>('id3BiosealDecryptionArgs_GetKeys');
  late final _id3BiosealDecryptionArgs_GetKeys =
      _id3BiosealDecryptionArgs_GetKeysPtr.asFunction<
          int Function(
              ID3_BIOSEAL_DECRYPTION_ARGS, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets an item of the DecryptionArgs object.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param key [in] Unique key of the  item to get.
  /// @param item [out]  item to get.
  /// @param itemSize [in,out] Size of the 'item' buffer. Receives the minimum required buffer size to hold the 'item' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'item' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_Get(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Char> item,
    ffi.Pointer<ffi.Int> itemSize,
  ) {
    return _id3BiosealDecryptionArgs_Get(
      hDecryptionArgs,
      key,
      item,
      itemSize,
    );
  }

  late final _id3BiosealDecryptionArgs_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDecryptionArgs_Get');
  late final _id3BiosealDecryptionArgs_Get =
      _id3BiosealDecryptionArgs_GetPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the number of elements in the DecryptionArgs object.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param count [out] Number of elements in the  object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_GetCount(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealDecryptionArgs_GetCount(
      hDecryptionArgs,
      count,
    );
  }

  late final _id3BiosealDecryptionArgs_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DECRYPTION_ARGS,
              ffi.Pointer<ffi.Int>)>>('id3BiosealDecryptionArgs_GetCount');
  late final _id3BiosealDecryptionArgs_GetCount =
      _id3BiosealDecryptionArgs_GetCountPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Int>)>();

  /// Determines whether the DecryptionArgsobject contains the specified key.
  /// @param hDecryptionArgs [in] Handle to the DecryptionArgs object.
  /// @param key [in] The key to locate in the  object.
  /// @param result [out] true if the  object contains an element with the specified key, otherwise false.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealDecryptionArgs_ContainsKey(
    ID3_BIOSEAL_DECRYPTION_ARGS hDecryptionArgs,
    ffi.Pointer<ffi.Char> key,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealDecryptionArgs_ContainsKey(
      hDecryptionArgs,
      key,
      result,
    );
  }

  late final _id3BiosealDecryptionArgs_ContainsKeyPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealDecryptionArgs_ContainsKey');
  late final _id3BiosealDecryptionArgs_ContainsKey =
      _id3BiosealDecryptionArgs_ContainsKeyPtr.asFunction<
          int Function(ID3_BIOSEAL_DECRYPTION_ARGS, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Bool>)>();

  /// @brief Initializes a FieldList object.
  /// @param phFieldList [in] Handle to the FieldList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_Initialize(
    ffi.Pointer<ID3_BIOSEAL_FIELD_LIST> phFieldList,
  ) {
    return _id3BiosealFieldList_Initialize(
      phFieldList,
    );
  }

  late final _id3BiosealFieldList_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD_LIST>)>>(
      'id3BiosealFieldList_Initialize');
  late final _id3BiosealFieldList_Initialize =
      _id3BiosealFieldList_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_FIELD_LIST>)>();

  /// @brief Releases the memory allocated for a FieldList.
  /// @param phFieldList [in] Handle to the FieldList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_Dispose(
    ffi.Pointer<ID3_BIOSEAL_FIELD_LIST> phFieldList,
  ) {
    return _id3BiosealFieldList_Dispose(
      phFieldList,
    );
  }

  late final _id3BiosealFieldList_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD_LIST>)>>(
      'id3BiosealFieldList_Dispose');
  late final _id3BiosealFieldList_Dispose = _id3BiosealFieldList_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_FIELD_LIST>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hFieldList [in] Handle to the FieldList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_CheckHandle(
    ID3_BIOSEAL_FIELD_LIST hFieldList,
  ) {
    return _id3BiosealFieldList_CheckHandle(
      hFieldList,
    );
  }

  late final _id3BiosealFieldList_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_FIELD_LIST)>>(
          'id3BiosealFieldList_CheckHandle');
  late final _id3BiosealFieldList_CheckHandle =
      _id3BiosealFieldList_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_FIELD_LIST)>();

  /// Gets an item of the FieldList object.
  /// @param hFieldList [in] Handle to the FieldList object.
  /// @param index [in] Index of the Field item to get.
  /// @param hFieldItem [out] Field item to get.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_Get(
    ID3_BIOSEAL_FIELD_LIST hFieldList,
    int index,
    ID3_BIOSEAL_FIELD hFieldItem,
  ) {
    return _id3BiosealFieldList_Get(
      hFieldList,
      index,
      hFieldItem,
    );
  }

  late final _id3BiosealFieldList_GetPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD_LIST, ffi.Int,
              ID3_BIOSEAL_FIELD)>>('id3BiosealFieldList_Get');
  late final _id3BiosealFieldList_Get = _id3BiosealFieldList_GetPtr.asFunction<
      int Function(ID3_BIOSEAL_FIELD_LIST, int, ID3_BIOSEAL_FIELD)>();

  /// Gets the number of elements in the FieldList object.
  /// @param hFieldList [in] Handle to the FieldList object.
  /// @param count [out] Number of elements in the Field object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_GetCount(
    ID3_BIOSEAL_FIELD_LIST hFieldList,
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealFieldList_GetCount(
      hFieldList,
      count,
    );
  }

  late final _id3BiosealFieldList_GetCountPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_FIELD_LIST,
              ffi.Pointer<ffi.Int>)>>('id3BiosealFieldList_GetCount');
  late final _id3BiosealFieldList_GetCount = _id3BiosealFieldList_GetCountPtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD_LIST, ffi.Pointer<ffi.Int>)>();

  /// Clear the list.
  /// @param hFieldList [in] Handle to the FieldList object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealFieldList_Clear(
    ID3_BIOSEAL_FIELD_LIST hFieldList,
  ) {
    return _id3BiosealFieldList_Clear(
      hFieldList,
    );
  }

  late final _id3BiosealFieldList_ClearPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_FIELD_LIST)>>(
          'id3BiosealFieldList_Clear');
  late final _id3BiosealFieldList_Clear = _id3BiosealFieldList_ClearPtr
      .asFunction<int Function(ID3_BIOSEAL_FIELD_LIST)>();

  /// @brief Initializes a Bioseal object.
  /// @param phBioseal [in] Handle to the Bioseal object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_Initialize(
    ffi.Pointer<ID3_BIOSEAL> phBioseal,
  ) {
    return _id3Bioseal_Initialize(
      phBioseal,
    );
  }

  late final _id3Bioseal_InitializePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL>)>>(
          'id3Bioseal_Initialize');
  late final _id3Bioseal_Initialize = _id3Bioseal_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL>)>();

  /// @brief Releases the memory allocated for a Bioseal.
  /// @param phBioseal [in] Handle to the Bioseal object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_Dispose(
    ffi.Pointer<ID3_BIOSEAL> phBioseal,
  ) {
    return _id3Bioseal_Dispose(
      phBioseal,
    );
  }

  late final _id3Bioseal_DisposePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL>)>>(
          'id3Bioseal_Dispose');
  late final _id3Bioseal_Dispose = _id3Bioseal_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_CheckHandle(
    ID3_BIOSEAL hBioseal,
  ) {
    return _id3Bioseal_CheckHandle(
      hBioseal,
    );
  }

  late final _id3Bioseal_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL)>>(
          'id3Bioseal_CheckHandle');
  late final _id3Bioseal_CheckHandle =
      _id3Bioseal_CheckHandlePtr.asFunction<int Function(ID3_BIOSEAL)>();

  /// Gets the the BioSeal format without prefix information.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param eFormat [out] The BioSeal format without prefix information.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetFormat(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Int32> eFormat,
  ) {
    return _id3Bioseal_GetFormat(
      hBioseal,
      eFormat,
    );
  }

  late final _id3Bioseal_GetFormatPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Int32>)>>('id3Bioseal_GetFormat');
  late final _id3Bioseal_GetFormat = _id3Bioseal_GetFormatPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the BioSeal format with prefix information.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param eExtendedFormat [out] The BioSeal format with prefix information.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetExtendedFormat(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Int32> eExtendedFormat,
  ) {
    return _id3Bioseal_GetExtendedFormat(
      hBioseal,
      eExtendedFormat,
    );
  }

  late final _id3Bioseal_GetExtendedFormatPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Int32>)>>('id3Bioseal_GetExtendedFormat');
  late final _id3Bioseal_GetExtendedFormat = _id3Bioseal_GetExtendedFormatPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int32>)>();

  /// Gets the the document issuing date.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hDocumentIssuingDate [out] The document issuing date.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentIssuingDate(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_DATE_TIME hDocumentIssuingDate,
  ) {
    return _id3Bioseal_GetDocumentIssuingDate(
      hBioseal,
      hDocumentIssuingDate,
    );
  }

  late final _id3Bioseal_GetDocumentIssuingDatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ID3_BIOSEAL_DATE_TIME)>>('id3Bioseal_GetDocumentIssuingDate');
  late final _id3Bioseal_GetDocumentIssuingDate =
      _id3Bioseal_GetDocumentIssuingDatePtr
          .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the BioSeal signature date.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hSignatureDate [out] The BioSeal signature date.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetSignatureDate(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_DATE_TIME hSignatureDate,
  ) {
    return _id3Bioseal_GetSignatureDate(
      hBioseal,
      hSignatureDate,
    );
  }

  late final _id3Bioseal_GetSignatureDatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ID3_BIOSEAL_DATE_TIME)>>('id3Bioseal_GetSignatureDate');
  late final _id3Bioseal_GetSignatureDate = _id3Bioseal_GetSignatureDatePtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the the document type identification code. For AFNOR XP Z42-101 only.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param documentType [out] The document type identification code. For AFNOR XP Z42-101 only.
  /// @param documentTypeSize [in,out] Size of the 'documentType' buffer. Receives the minimum required buffer size to hold the 'documentType' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentType' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentType(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> documentType,
    ffi.Pointer<ffi.Int> documentTypeSize,
  ) {
    return _id3Bioseal_GetDocumentType(
      hBioseal,
      documentType,
      documentTypeSize,
    );
  }

  late final _id3Bioseal_GetDocumentTypePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetDocumentType');
  late final _id3Bioseal_GetDocumentType =
      _id3Bioseal_GetDocumentTypePtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the identification code of the scope on which the document type is defined. For AFNOR XP Z42-101 only.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param documentScope [out] The identification code of the scope on which the document type is defined. For AFNOR XP Z42-101 only.
  /// @param documentScopeSize [in,out] Size of the 'documentScope' buffer. Receives the minimum required buffer size to hold the 'documentScope' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentScope' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentScope(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> documentScope,
    ffi.Pointer<ffi.Int> documentScopeSize,
  ) {
    return _id3Bioseal_GetDocumentScope(
      hBioseal,
      documentScope,
      documentScopeSize,
    );
  }

  late final _id3Bioseal_GetDocumentScopePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetDocumentScope');
  late final _id3Bioseal_GetDocumentScope =
      _id3Bioseal_GetDocumentScopePtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the identifier of the country issuing the document. For AFNOR XP Z42-101 only.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param documentIssuingCountry [out] The identifier of the country issuing the document. For AFNOR XP Z42-101 only.
  /// @param documentIssuingCountrySize [in,out] Size of the 'documentIssuingCountry' buffer. Receives the minimum required buffer size to hold the 'documentIssuingCountry' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentIssuingCountry' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentIssuingCountry(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> documentIssuingCountry,
    ffi.Pointer<ffi.Int> documentIssuingCountrySize,
  ) {
    return _id3Bioseal_GetDocumentIssuingCountry(
      hBioseal,
      documentIssuingCountry,
      documentIssuingCountrySize,
    );
  }

  late final _id3Bioseal_GetDocumentIssuingCountryPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetDocumentIssuingCountry');
  late final _id3Bioseal_GetDocumentIssuingCountry =
      _id3Bioseal_GetDocumentIssuingCountryPtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the manifest ID in ISO 22385 format.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param manifestId [out] The manifest ID in ISO 22385 format.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetManifestId(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Int> manifestId,
  ) {
    return _id3Bioseal_GetManifestId(
      hBioseal,
      manifestId,
    );
  }

  late final _id3Bioseal_GetManifestIdPtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int>)>>(
      'id3Bioseal_GetManifestId');
  late final _id3Bioseal_GetManifestId = _id3Bioseal_GetManifestIdPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int>)>();

  /// Gets the the payload containing the data specific to the BioSeal.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hPayload [out] The payload containing the data specific to the BioSeal.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetPayload(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_FIELD hPayload,
  ) {
    return _id3Bioseal_GetPayload(
      hBioseal,
      hPayload,
    );
  }

  late final _id3Bioseal_GetPayloadPtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ID3_BIOSEAL_FIELD)>>(
      'id3Bioseal_GetPayload');
  late final _id3Bioseal_GetPayload = _id3Bioseal_GetPayloadPtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_FIELD)>();

  /// Gets the the manifest information.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hManifest [out] The manifest information.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetManifest(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_MANIFEST hManifest,
  ) {
    return _id3Bioseal_GetManifest(
      hBioseal,
      hManifest,
    );
  }

  late final _id3Bioseal_GetManifestPtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL, ID3_BIOSEAL_MANIFEST)>>(
      'id3Bioseal_GetManifest');
  late final _id3Bioseal_GetManifest = _id3Bioseal_GetManifestPtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_MANIFEST)>();

  /// Gets the indicates whether the BioSeal contains images.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsImages [out] Indicates whether the BioSeal contains images.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsImages(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsImages,
  ) {
    return _id3Bioseal_GetContainsImages(
      hBioseal,
      containsImages,
    );
  }

  late final _id3Bioseal_GetContainsImagesPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsImages');
  late final _id3Bioseal_GetContainsImages = _id3Bioseal_GetContainsImagesPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the indicates whether the BioSeal contains portraits.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsPortraits [out] Indicates whether the BioSeal contains portraits.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsPortraits(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsPortraits,
  ) {
    return _id3Bioseal_GetContainsPortraits(
      hBioseal,
      containsPortraits,
    );
  }

  late final _id3Bioseal_GetContainsPortraitsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsPortraits');
  late final _id3Bioseal_GetContainsPortraits =
      _id3Bioseal_GetContainsPortraitsPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the indicates whether the BioSeal contains biometric data.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsBiometrics [out] Indicates whether the BioSeal contains biometric data.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsBiometrics(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsBiometrics,
  ) {
    return _id3Bioseal_GetContainsBiometrics(
      hBioseal,
      containsBiometrics,
    );
  }

  late final _id3Bioseal_GetContainsBiometricsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsBiometrics');
  late final _id3Bioseal_GetContainsBiometrics =
      _id3Bioseal_GetContainsBiometricsPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the indicates whether the BioSeal contains face templates.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsFaceTemplates [out] Indicates whether the BioSeal contains face templates.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsFaceTemplates(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsFaceTemplates,
  ) {
    return _id3Bioseal_GetContainsFaceTemplates(
      hBioseal,
      containsFaceTemplates,
    );
  }

  late final _id3Bioseal_GetContainsFaceTemplatesPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsFaceTemplates');
  late final _id3Bioseal_GetContainsFaceTemplates =
      _id3Bioseal_GetContainsFaceTemplatesPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the indicates whether the BioSeal contains finger templates.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsFingerTemplates [out] Indicates whether the BioSeal contains finger templates.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsFingerTemplates(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsFingerTemplates,
  ) {
    return _id3Bioseal_GetContainsFingerTemplates(
      hBioseal,
      containsFingerTemplates,
    );
  }

  late final _id3Bioseal_GetContainsFingerTemplatesPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsFingerTemplates');
  late final _id3Bioseal_GetContainsFingerTemplates =
      _id3Bioseal_GetContainsFingerTemplatesPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the indicates whether the BioSeal contains extensions.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsExtensions [out] Indicates whether the BioSeal contains extensions.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsExtensions(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsExtensions,
  ) {
    return _id3Bioseal_GetContainsExtensions(
      hBioseal,
      containsExtensions,
    );
  }

  late final _id3Bioseal_GetContainsExtensionsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsExtensions');
  late final _id3Bioseal_GetContainsExtensions =
      _id3Bioseal_GetContainsExtensionsPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the list of supported languages declared in the manifest.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hSupportedLanguages [out] The list of supported languages declared in the manifest.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetSupportedLanguages(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_STRING_ARRAY hSupportedLanguages,
  ) {
    return _id3Bioseal_GetSupportedLanguages(
      hBioseal,
      hSupportedLanguages,
    );
  }

  late final _id3Bioseal_GetSupportedLanguagesPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ID3_BIOSEAL_STRING_ARRAY)>>('id3Bioseal_GetSupportedLanguages');
  late final _id3Bioseal_GetSupportedLanguages =
      _id3Bioseal_GetSupportedLanguagesPtr
          .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_STRING_ARRAY)>();

  /// Gets the the presentation view, in HTML format, created from the manifest and the data contained in the BioSeal.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param htmlView [out] The presentation view, in HTML format, created from the manifest and the data contained in the BioSeal.
  /// @param htmlViewSize [in,out] Size of the 'htmlView' buffer. Receives the minimum required buffer size to hold the 'htmlView' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'htmlView' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetHtmlView(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> htmlView,
    ffi.Pointer<ffi.Int> htmlViewSize,
  ) {
    return _id3Bioseal_GetHtmlView(
      hBioseal,
      htmlView,
      htmlViewSize,
    );
  }

  late final _id3Bioseal_GetHtmlViewPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetHtmlView');
  late final _id3Bioseal_GetHtmlView = _id3Bioseal_GetHtmlViewPtr.asFunction<
      int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the callback used to retrieve an external resource (LoTL, TSL, certificate, manifest, CRL) with specified URI.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param externalResourceCallback [in] The callback used to retrieve an external resource (LoTL, TSL, certificate, manifest, CRL) with specified URI.
  /// @param context [in] The callback context.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetExternalResourceCallback(
    ID3_BIOSEAL hBioseal,
    id3BiosealResourceCallbackHandler externalResourceCallback,
    ffi.Pointer<ffi.Void> context,
  ) {
    return _id3Bioseal_SetExternalResourceCallback(
      hBioseal,
      externalResourceCallback,
      context,
    );
  }

  late final _id3Bioseal_SetExternalResourceCallbackPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL, id3BiosealResourceCallbackHandler,
                  ffi.Pointer<ffi.Void>)>>(
      'id3Bioseal_SetExternalResourceCallback');
  late final _id3Bioseal_SetExternalResourceCallback =
      _id3Bioseal_SetExternalResourceCallbackPtr.asFunction<
          int Function(ID3_BIOSEAL, id3BiosealResourceCallbackHandler,
              ffi.Pointer<ffi.Void>)>();

  /// Gets the the issuing reference of the certificate authority.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param certificateAuthorityReference [out] The issuing reference of the certificate authority.
  /// @param certificateAuthorityReferenceSize [in,out] Size of the 'certificateAuthorityReference' buffer. Receives the minimum required buffer size to hold the 'certificateAuthorityReference' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'certificateAuthorityReference' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetCertificateAuthorityReference(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> certificateAuthorityReference,
    ffi.Pointer<ffi.Int> certificateAuthorityReferenceSize,
  ) {
    return _id3Bioseal_GetCertificateAuthorityReference(
      hBioseal,
      certificateAuthorityReference,
      certificateAuthorityReferenceSize,
    );
  }

  late final _id3Bioseal_GetCertificateAuthorityReferencePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3Bioseal_GetCertificateAuthorityReference');
  late final _id3Bioseal_GetCertificateAuthorityReference =
      _id3Bioseal_GetCertificateAuthorityReferencePtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the identifier of the certificate.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param certificateIdentifier [out] The identifier of the certificate.
  /// @param certificateIdentifierSize [in,out] Size of the 'certificateIdentifier' buffer. Receives the minimum required buffer size to hold the 'certificateIdentifier' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'certificateIdentifier' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetCertificateIdentifier(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> certificateIdentifier,
    ffi.Pointer<ffi.Int> certificateIdentifierSize,
  ) {
    return _id3Bioseal_GetCertificateIdentifier(
      hBioseal,
      certificateIdentifier,
      certificateIdentifierSize,
    );
  }

  late final _id3Bioseal_GetCertificateIdentifierPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetCertificateIdentifier');
  late final _id3Bioseal_GetCertificateIdentifier =
      _id3Bioseal_GetCertificateIdentifierPtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the detailed certificate information.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hCertificateInformation [out] The detailed certificate information.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetCertificateInformation(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_CERTIFICATE_INFORMATION hCertificateInformation,
  ) {
    return _id3Bioseal_GetCertificateInformation(
      hBioseal,
      hCertificateInformation,
    );
  }

  late final _id3Bioseal_GetCertificateInformationPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL, ID3_BIOSEAL_CERTIFICATE_INFORMATION)>>(
      'id3Bioseal_GetCertificateInformation');
  late final _id3Bioseal_GetCertificateInformation =
      _id3Bioseal_GetCertificateInformationPtr.asFunction<
          int Function(ID3_BIOSEAL, ID3_BIOSEAL_CERTIFICATE_INFORMATION)>();

  /// Gets the the BioSeal expiration date.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hExpirationDate [out] The BioSeal expiration date.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetExpirationDate(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_DATE_TIME hExpirationDate,
  ) {
    return _id3Bioseal_GetExpirationDate(
      hBioseal,
      hExpirationDate,
    );
  }

  late final _id3Bioseal_GetExpirationDatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ID3_BIOSEAL_DATE_TIME)>>('id3Bioseal_GetExpirationDate');
  late final _id3Bioseal_GetExpirationDate = _id3Bioseal_GetExpirationDatePtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_DATE_TIME)>();

  /// Gets the indicates whether the BioSeal contains auxiliary data.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param containsAuxData [out] Indicates whether the BioSeal contains auxiliary data.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetContainsAuxData(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> containsAuxData,
  ) {
    return _id3Bioseal_GetContainsAuxData(
      hBioseal,
      containsAuxData,
    );
  }

  late final _id3Bioseal_GetContainsAuxDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetContainsAuxData');
  late final _id3Bioseal_GetContainsAuxData = _id3Bioseal_GetContainsAuxDataPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the auxiliary data containing additional information specific to the BioSeal.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hAuxData [out] The auxiliary data containing additional information specific to the BioSeal.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetAuxData(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_FIELD hAuxData,
  ) {
    return _id3Bioseal_GetAuxData(
      hBioseal,
      hAuxData,
    );
  }

  late final _id3Bioseal_GetAuxDataPtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ID3_BIOSEAL_FIELD)>>(
      'id3Bioseal_GetAuxData');
  late final _id3Bioseal_GetAuxData = _id3Bioseal_GetAuxDataPtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_FIELD)>();

  /// Gets the the list of biometric verification rules.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hBiometricVerificationRules [out] The list of biometric verification rules.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetBiometricVerificationRules(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES hBiometricVerificationRules,
  ) {
    return _id3Bioseal_GetBiometricVerificationRules(
      hBioseal,
      hBiometricVerificationRules,
    );
  }

  late final _id3Bioseal_GetBiometricVerificationRulesPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL, ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES)>>(
      'id3Bioseal_GetBiometricVerificationRules');
  late final _id3Bioseal_GetBiometricVerificationRules =
      _id3Bioseal_GetBiometricVerificationRulesPtr.asFunction<
          int Function(
              ID3_BIOSEAL, ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES)>();

  /// Gets the the log.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hLog [out] The log.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetLog(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_LOG hLog,
  ) {
    return _id3Bioseal_GetLog(
      hBioseal,
      hLog,
    );
  }

  late final _id3Bioseal_GetLogPtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ID3_BIOSEAL_LOG)>>(
      'id3Bioseal_GetLog');
  late final _id3Bioseal_GetLog = _id3Bioseal_GetLogPtr
      .asFunction<int Function(ID3_BIOSEAL, ID3_BIOSEAL_LOG)>();

  /// Gets the the user authentication parameters.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hUserAuthentication [out] The user authentication parameters.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetUserAuthentication(
    ID3_BIOSEAL hBioseal,
    ID3_BIOSEAL_USER_AUTHENTICATION hUserAuthentication,
  ) {
    return _id3Bioseal_GetUserAuthentication(
      hBioseal,
      hUserAuthentication,
    );
  }

  late final _id3Bioseal_GetUserAuthenticationPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL, ID3_BIOSEAL_USER_AUTHENTICATION)>>(
      'id3Bioseal_GetUserAuthentication');
  late final _id3Bioseal_GetUserAuthentication =
      _id3Bioseal_GetUserAuthenticationPtr.asFunction<
          int Function(ID3_BIOSEAL, ID3_BIOSEAL_USER_AUTHENTICATION)>();

  /// Gets the the header version.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param headerVersion [out] The header version.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetHeaderVersion(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Int> headerVersion,
  ) {
    return _id3Bioseal_GetHeaderVersion(
      hBioseal,
      headerVersion,
    );
  }

  late final _id3Bioseal_GetHeaderVersionPtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int>)>>(
      'id3Bioseal_GetHeaderVersion');
  late final _id3Bioseal_GetHeaderVersion = _id3Bioseal_GetHeaderVersionPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Int>)>();

  /// Sets the the callback used to decrypt a field.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param decryptionCallback [in] The callback used to decrypt a field.
  /// @param context [in] The callback context.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetDecryptionCallback(
    ID3_BIOSEAL hBioseal,
    id3BiosealDecryptionCallbackHandler decryptionCallback,
    ffi.Pointer<ffi.Void> context,
  ) {
    return _id3Bioseal_SetDecryptionCallback(
      hBioseal,
      decryptionCallback,
      context,
    );
  }

  late final _id3Bioseal_SetDecryptionCallbackPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, id3BiosealDecryptionCallbackHandler,
              ffi.Pointer<ffi.Void>)>>('id3Bioseal_SetDecryptionCallback');
  late final _id3Bioseal_SetDecryptionCallback =
      _id3Bioseal_SetDecryptionCallbackPtr.asFunction<
          int Function(ID3_BIOSEAL, id3BiosealDecryptionCallbackHandler,
              ffi.Pointer<ffi.Void>)>();

  /// Gets the indicates whether the governance certification chain is verified.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesGovernance [out] Indicates whether the governance certification chain is verified.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetVerifiesGovernance(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> verifiesGovernance,
  ) {
    return _id3Bioseal_GetVerifiesGovernance(
      hBioseal,
      verifiesGovernance,
    );
  }

  late final _id3Bioseal_GetVerifiesGovernancePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetVerifiesGovernance');
  late final _id3Bioseal_GetVerifiesGovernance =
      _id3Bioseal_GetVerifiesGovernancePtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Sets the indicates whether the governance certification chain is verified.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesGovernance [in] Indicates whether the governance certification chain is verified.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetVerifiesGovernance(
    ID3_BIOSEAL hBioseal,
    bool verifiesGovernance,
  ) {
    return _id3Bioseal_SetVerifiesGovernance(
      hBioseal,
      verifiesGovernance,
    );
  }

  late final _id3Bioseal_SetVerifiesGovernancePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Bool)>>(
          'id3Bioseal_SetVerifiesGovernance');
  late final _id3Bioseal_SetVerifiesGovernance =
      _id3Bioseal_SetVerifiesGovernancePtr
          .asFunction<int Function(ID3_BIOSEAL, bool)>();

  /// Gets the indicates whether the VDS signature is verified.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesSignature [out] Indicates whether the VDS signature is verified.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetVerifiesSignature(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> verifiesSignature,
  ) {
    return _id3Bioseal_GetVerifiesSignature(
      hBioseal,
      verifiesSignature,
    );
  }

  late final _id3Bioseal_GetVerifiesSignaturePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetVerifiesSignature');
  late final _id3Bioseal_GetVerifiesSignature =
      _id3Bioseal_GetVerifiesSignaturePtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Sets the indicates whether the VDS signature is verified.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesSignature [in] Indicates whether the VDS signature is verified.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetVerifiesSignature(
    ID3_BIOSEAL hBioseal,
    bool verifiesSignature,
  ) {
    return _id3Bioseal_SetVerifiesSignature(
      hBioseal,
      verifiesSignature,
    );
  }

  late final _id3Bioseal_SetVerifiesSignaturePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Bool)>>(
          'id3Bioseal_SetVerifiesSignature');
  late final _id3Bioseal_SetVerifiesSignature =
      _id3Bioseal_SetVerifiesSignaturePtr
          .asFunction<int Function(ID3_BIOSEAL, bool)>();

  /// Gets the indicates whether the verification process should verify the next CRL update.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesCrlUpdates [out] Indicates whether the verification process should verify the next CRL update.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetVerifiesCrlUpdates(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> verifiesCrlUpdates,
  ) {
    return _id3Bioseal_GetVerifiesCrlUpdates(
      hBioseal,
      verifiesCrlUpdates,
    );
  }

  late final _id3Bioseal_GetVerifiesCrlUpdatesPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetVerifiesCrlUpdates');
  late final _id3Bioseal_GetVerifiesCrlUpdates =
      _id3Bioseal_GetVerifiesCrlUpdatesPtr
          .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Sets the indicates whether the verification process should verify the next CRL update.
  /// Hint: Default value is true.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param verifiesCrlUpdates [in] Indicates whether the verification process should verify the next CRL update.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetVerifiesCrlUpdates(
    ID3_BIOSEAL hBioseal,
    bool verifiesCrlUpdates,
  ) {
    return _id3Bioseal_SetVerifiesCrlUpdates(
      hBioseal,
      verifiesCrlUpdates,
    );
  }

  late final _id3Bioseal_SetVerifiesCrlUpdatesPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Bool)>>(
          'id3Bioseal_SetVerifiesCrlUpdates');
  late final _id3Bioseal_SetVerifiesCrlUpdates =
      _id3Bioseal_SetVerifiesCrlUpdatesPtr
          .asFunction<int Function(ID3_BIOSEAL, bool)>();

  /// Gets the the last verification result.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param sVerificationResult [out] The last verification result.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetVerificationResult(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<id3BiosealVerificationResult> sVerificationResult,
  ) {
    return _id3Bioseal_GetVerificationResult(
      hBioseal,
      sVerificationResult,
    );
  }

  late final _id3Bioseal_GetVerificationResultPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ID3_BIOSEAL, ffi.Pointer<id3BiosealVerificationResult>)>>(
      'id3Bioseal_GetVerificationResult');
  late final _id3Bioseal_GetVerificationResult =
      _id3Bioseal_GetVerificationResultPtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<id3BiosealVerificationResult>)>();

  /// Gets the the URL to the LoTL (List of Trust List).
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param lotlUrl [out] The URL to the LoTL (List of Trust List).
  /// @param lotlUrlSize [in,out] Size of the 'lotlUrl' buffer. Receives the minimum required buffer size to hold the 'lotlUrl' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'lotlUrl' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetLotlUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> lotlUrl,
    ffi.Pointer<ffi.Int> lotlUrlSize,
  ) {
    return _id3Bioseal_GetLotlUrl(
      hBioseal,
      lotlUrl,
      lotlUrlSize,
    );
  }

  late final _id3Bioseal_GetLotlUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetLotlUrl');
  late final _id3Bioseal_GetLotlUrl = _id3Bioseal_GetLotlUrlPtr.asFunction<
      int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the URL to the LoTL (List of Trust List).
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param lotlUrl [in] The URL to the LoTL (List of Trust List).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetLotlUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> lotlUrl,
  ) {
    return _id3Bioseal_SetLotlUrl(
      hBioseal,
      lotlUrl,
    );
  }

  late final _id3Bioseal_SetLotlUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>)>>('id3Bioseal_SetLotlUrl');
  late final _id3Bioseal_SetLotlUrl = _id3Bioseal_SetLotlUrlPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>)>();

  /// Gets the the URL to the TSL (Trust Service List).
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param tslUrl [out] The URL to the TSL (Trust Service List).
  /// @param tslUrlSize [in,out] Size of the 'tslUrl' buffer. Receives the minimum required buffer size to hold the 'tslUrl' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'tslUrl' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetTslUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> tslUrl,
    ffi.Pointer<ffi.Int> tslUrlSize,
  ) {
    return _id3Bioseal_GetTslUrl(
      hBioseal,
      tslUrl,
      tslUrlSize,
    );
  }

  late final _id3Bioseal_GetTslUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetTslUrl');
  late final _id3Bioseal_GetTslUrl = _id3Bioseal_GetTslUrlPtr.asFunction<
      int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the URL to the TSL (Trust Service List).
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param tslUrl [in] The URL to the TSL (Trust Service List).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetTslUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> tslUrl,
  ) {
    return _id3Bioseal_SetTslUrl(
      hBioseal,
      tslUrl,
    );
  }

  late final _id3Bioseal_SetTslUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>)>>('id3Bioseal_SetTslUrl');
  late final _id3Bioseal_SetTslUrl = _id3Bioseal_SetTslUrlPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>)>();

  /// Gets the the URL to the manifest.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param manifestUrl [out] The URL to the manifest.
  /// @param manifestUrlSize [in,out] Size of the 'manifestUrl' buffer. Receives the minimum required buffer size to hold the 'manifestUrl' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'manifestUrl' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetManifestUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> manifestUrl,
    ffi.Pointer<ffi.Int> manifestUrlSize,
  ) {
    return _id3Bioseal_GetManifestUrl(
      hBioseal,
      manifestUrl,
      manifestUrlSize,
    );
  }

  late final _id3Bioseal_GetManifestUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetManifestUrl');
  late final _id3Bioseal_GetManifestUrl =
      _id3Bioseal_GetManifestUrlPtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Sets the the URL to the manifest.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param manifestUrl [in] The URL to the manifest.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetManifestUrl(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> manifestUrl,
  ) {
    return _id3Bioseal_SetManifestUrl(
      hBioseal,
      manifestUrl,
    );
  }

  late final _id3Bioseal_SetManifestUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL,
              ffi.Pointer<ffi.Char>)>>('id3Bioseal_SetManifestUrl');
  late final _id3Bioseal_SetManifestUrl = _id3Bioseal_SetManifestUrlPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>)>();

  /// Gets the the Issuing Agency Code (IAC). For ISO 22376:2023 format only.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param issuingAgencyCode [out] The Issuing Agency Code (IAC). For ISO 22376:2023 format only.
  /// @param issuingAgencyCodeSize [in,out] Size of the 'issuingAgencyCode' buffer. Receives the minimum required buffer size to hold the 'issuingAgencyCode' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'issuingAgencyCode' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetIssuingAgencyCode(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> issuingAgencyCode,
    ffi.Pointer<ffi.Int> issuingAgencyCodeSize,
  ) {
    return _id3Bioseal_GetIssuingAgencyCode(
      hBioseal,
      issuingAgencyCode,
      issuingAgencyCodeSize,
    );
  }

  late final _id3Bioseal_GetIssuingAgencyCodePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetIssuingAgencyCode');
  late final _id3Bioseal_GetIssuingAgencyCode =
      _id3Bioseal_GetIssuingAgencyCodePtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the prefix is present.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param hasPrefix [out] Prefix is present.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetHasPrefix(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Bool> hasPrefix,
  ) {
    return _id3Bioseal_GetHasPrefix(
      hBioseal,
      hasPrefix,
    );
  }

  late final _id3Bioseal_GetHasPrefixPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>>('id3Bioseal_GetHasPrefix');
  late final _id3Bioseal_GetHasPrefix = _id3Bioseal_GetHasPrefixPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Bool>)>();

  /// Gets the the prefix.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param prefix [out] The prefix.
  /// @param prefixSize [in,out] Size of the 'prefix' buffer. Receives the minimum required buffer size to hold the 'prefix' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'prefix' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetPrefix(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> prefix,
    ffi.Pointer<ffi.Int> prefixSize,
  ) {
    return _id3Bioseal_GetPrefix(
      hBioseal,
      prefix,
      prefixSize,
    );
  }

  late final _id3Bioseal_GetPrefixPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetPrefix');
  late final _id3Bioseal_GetPrefix = _id3Bioseal_GetPrefixPtr.asFunction<
      int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the the data of the VDS as a binary array.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param data [out] The data of the VDS as a binary array.
  /// @param dataSize [in,out] Size of the 'data' buffer. Receives the number of elements in the 'data' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetData(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.UnsignedChar> data,
    ffi.Pointer<ffi.Int> dataSize,
  ) {
    return _id3Bioseal_GetData(
      hBioseal,
      data,
      dataSize,
    );
  }

  late final _id3Bioseal_GetDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetData');
  late final _id3Bioseal_GetData = _id3Bioseal_GetDataPtr.asFunction<
      int Function(
          ID3_BIOSEAL, ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Clears all internal data.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_Clear(
    ID3_BIOSEAL hBioseal,
  ) {
    return _id3Bioseal_Clear(
      hBioseal,
    );
  }

  late final _id3Bioseal_ClearPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL)>>(
          'id3Bioseal_Clear');
  late final _id3Bioseal_Clear =
      _id3Bioseal_ClearPtr.asFunction<int Function(ID3_BIOSEAL)>();

  /// Decodes and verifies the specified data buffer.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param data [in] The data buffer containing the BioSeal code.
  /// @param dataSize [in] Size of the 'data' buffer.
  /// @param sResult [out] Receives the verification results.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_VerifyFromBuffer(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.UnsignedChar> data,
    int dataSize,
    ffi.Pointer<id3BiosealVerificationResult> sResult,
  ) {
    return _id3Bioseal_VerifyFromBuffer(
      hBioseal,
      data,
      dataSize,
      sResult,
    );
  }

  late final _id3Bioseal_VerifyFromBufferPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.UnsignedChar>,
                  ffi.Int, ffi.Pointer<id3BiosealVerificationResult>)>>(
      'id3Bioseal_VerifyFromBuffer');
  late final _id3Bioseal_VerifyFromBuffer =
      _id3Bioseal_VerifyFromBufferPtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.UnsignedChar>, int,
              ffi.Pointer<id3BiosealVerificationResult>)>();

  /// Decodes and verifies the specified string buffer.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param data [in] The string buffer containing the BioSeal code.
  /// @param sResult [out] Receives the verification results.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_VerifyFromString(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> data,
    ffi.Pointer<id3BiosealVerificationResult> sResult,
  ) {
    return _id3Bioseal_VerifyFromString(
      hBioseal,
      data,
      sResult,
    );
  }

  late final _id3Bioseal_VerifyFromStringPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<id3BiosealVerificationResult>)>>(
      'id3Bioseal_VerifyFromString');
  late final _id3Bioseal_VerifyFromString =
      _id3Bioseal_VerifyFromStringPtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<id3BiosealVerificationResult>)>();

  /// Builds the presentation view, in HTML format.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param language [in] The expected language.
  /// @param userAuthenticated [in] A value indicating whether the user is authenticated.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_BuildHtmlView(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> language,
    bool userAuthenticated,
  ) {
    return _id3Bioseal_BuildHtmlView(
      hBioseal,
      language,
      userAuthenticated,
    );
  }

  late final _id3Bioseal_BuildHtmlViewPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Bool)>>('id3Bioseal_BuildHtmlView');
  late final _id3Bioseal_BuildHtmlView = _id3Bioseal_BuildHtmlViewPtr
      .asFunction<int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>, bool)>();

  /// Gets the name of the document.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param language [in] The expected language.
  /// @param documentName [out] The name of the document.
  /// @param documentNameSize [in,out] Size of the 'documentName' buffer. Receives the minimum required buffer size to hold the 'documentName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentName(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> documentName,
    ffi.Pointer<ffi.Int> documentNameSize,
  ) {
    return _id3Bioseal_GetDocumentName(
      hBioseal,
      language,
      documentName,
      documentNameSize,
    );
  }

  late final _id3Bioseal_GetDocumentNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetDocumentName');
  late final _id3Bioseal_GetDocumentName =
      _id3Bioseal_GetDocumentNamePtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Gets the description of the document.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param language [in] The expected language.
  /// @param documentDescription [out] The description of the document.
  /// @param documentDescriptionSize [in,out] Size of the 'documentDescription' buffer. Receives the minimum required buffer size to hold the 'documentDescription' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'documentDescription' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_GetDocumentDescription(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> documentDescription,
    ffi.Pointer<ffi.Int> documentDescriptionSize,
  ) {
    return _id3Bioseal_GetDocumentDescription(
      hBioseal,
      language,
      documentDescription,
      documentDescriptionSize,
    );
  }

  late final _id3Bioseal_GetDocumentDescriptionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_GetDocumentDescription');
  late final _id3Bioseal_GetDocumentDescription =
      _id3Bioseal_GetDocumentDescriptionPtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Finds fields by extension type.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param eFieldExtensionType [in] The field extension type.
  /// @param hResultFieldList [out] The list of fields with the extension.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_FindFieldsByExtension(
    ID3_BIOSEAL hBioseal,
    int eFieldExtensionType,
    ID3_BIOSEAL_FIELD_LIST hResultFieldList,
  ) {
    return _id3Bioseal_FindFieldsByExtension(
      hBioseal,
      eFieldExtensionType,
      hResultFieldList,
    );
  }

  late final _id3Bioseal_FindFieldsByExtensionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Int32,
              ID3_BIOSEAL_FIELD_LIST)>>('id3Bioseal_FindFieldsByExtension');
  late final _id3Bioseal_FindFieldsByExtension =
      _id3Bioseal_FindFieldsByExtensionPtr
          .asFunction<int Function(ID3_BIOSEAL, int, ID3_BIOSEAL_FIELD_LIST)>();

  /// Finds fields by extension name.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param extensionName [in] A string that identifies the extension name.
  /// @param hResultFieldList [out] The list of fields with the extension.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_FindFieldsByExtensionName(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> extensionName,
    ID3_BIOSEAL_FIELD_LIST hResultFieldList,
  ) {
    return _id3Bioseal_FindFieldsByExtensionName(
      hBioseal,
      extensionName,
      hResultFieldList,
    );
  }

  late final _id3Bioseal_FindFieldsByExtensionNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_FIELD_LIST)>>('id3Bioseal_FindFieldsByExtensionName');
  late final _id3Bioseal_FindFieldsByExtensionName =
      _id3Bioseal_FindFieldsByExtensionNamePtr.asFunction<
          int Function(
              ID3_BIOSEAL, ffi.Pointer<ffi.Char>, ID3_BIOSEAL_FIELD_LIST)>();

  /// Finds the biometric field in payload.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param eBiometricDataType [in] The type of biometric data.
  /// @param biometricFormat [in] The format of the biometric data.
  /// @param hResultFieldList [out] The list of fields containing biometric data.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_FindBiometrics(
    ID3_BIOSEAL hBioseal,
    int eBiometricDataType,
    ffi.Pointer<ffi.Char> biometricFormat,
    ID3_BIOSEAL_FIELD_LIST hResultFieldList,
  ) {
    return _id3Bioseal_FindBiometrics(
      hBioseal,
      eBiometricDataType,
      biometricFormat,
      hResultFieldList,
    );
  }

  late final _id3Bioseal_FindBiometricsPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL, ffi.Int32, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_FIELD_LIST)>>('id3Bioseal_FindBiometrics');
  late final _id3Bioseal_FindBiometrics =
      _id3Bioseal_FindBiometricsPtr.asFunction<
          int Function(ID3_BIOSEAL, int, ffi.Pointer<ffi.Char>,
              ID3_BIOSEAL_FIELD_LIST)>();

  /// Builds a representation of the VDS, in JSON format.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param indentation [in] The indentation of the json string.
  /// @param result [out] The result.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_BuildVdsAsJson(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> indentation,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3Bioseal_BuildVdsAsJson(
      hBioseal,
      indentation,
      result,
      resultSize,
    );
  }

  late final _id3Bioseal_BuildVdsAsJsonPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_BuildVdsAsJson');
  late final _id3Bioseal_BuildVdsAsJson =
      _id3Bioseal_BuildVdsAsJsonPtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Builds a representation of the VDS, in a XML format.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param language [in] The expected language.
  /// @param result [out] The result.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_BuildVdsAsXml(
    ID3_BIOSEAL hBioseal,
    ffi.Pointer<ffi.Char> language,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3Bioseal_BuildVdsAsXml(
      hBioseal,
      language,
      result,
      resultSize,
    );
  }

  late final _id3Bioseal_BuildVdsAsXmlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_BuildVdsAsXml');
  late final _id3Bioseal_BuildVdsAsXml =
      _id3Bioseal_BuildVdsAsXmlPtr.asFunction<
          int Function(ID3_BIOSEAL, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Clears the internal download cache.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_ClearDownloadCache(
    ID3_BIOSEAL hBioseal,
  ) {
    return _id3Bioseal_ClearDownloadCache(
      hBioseal,
    );
  }

  late final _id3Bioseal_ClearDownloadCachePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL)>>(
          'id3Bioseal_ClearDownloadCache');
  late final _id3Bioseal_ClearDownloadCache =
      _id3Bioseal_ClearDownloadCachePtr.asFunction<int Function(ID3_BIOSEAL)>();

  /// Sets the time zone offset in seconds.
  /// @param hBioseal [in] Handle to the Bioseal object.
  /// @param offsetInSeconds [in] The time zone offset in seconds.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_SetTimeZoneOffset(
    ID3_BIOSEAL hBioseal,
    int offsetInSeconds,
  ) {
    return _id3Bioseal_SetTimeZoneOffset(
      hBioseal,
      offsetInSeconds,
    );
  }

  late final _id3Bioseal_SetTimeZoneOffsetPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL, ffi.Int)>>(
          'id3Bioseal_SetTimeZoneOffset');
  late final _id3Bioseal_SetTimeZoneOffset = _id3Bioseal_SetTimeZoneOffsetPtr
      .asFunction<int Function(ID3_BIOSEAL, int)>();

  /// Computes SHA256.
  /// @param data [in] Input data.
  /// @param dataSize [in] Size of the 'data' buffer.
  /// @param result [out] The result.
  /// @param resultSize [in,out] Size of the 'result' buffer. Receives the minimum required buffer size to hold the 'result' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'result' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3Bioseal_ComputeSha256(
    ffi.Pointer<ffi.UnsignedChar> data,
    int dataSize,
    ffi.Pointer<ffi.Char> result,
    ffi.Pointer<ffi.Int> resultSize,
  ) {
    return _id3Bioseal_ComputeSha256(
      data,
      dataSize,
      result,
      resultSize,
    );
  }

  late final _id3Bioseal_ComputeSha256Ptr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3Bioseal_ComputeSha256');
  late final _id3Bioseal_ComputeSha256 =
      _id3Bioseal_ComputeSha256Ptr.asFunction<
          int Function(ffi.Pointer<ffi.UnsignedChar>, int,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// @brief Initializes a BarcodeReader object.
  /// @param phBarcodeReader [in] Handle to the BarcodeReader object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBarcodeReader_Initialize(
    ffi.Pointer<ID3_BIOSEAL_BARCODE_READER> phBarcodeReader,
  ) {
    return _id3BiosealBarcodeReader_Initialize(
      phBarcodeReader,
    );
  }

  late final _id3BiosealBarcodeReader_InitializePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_BARCODE_READER>)>>(
      'id3BiosealBarcodeReader_Initialize');
  late final _id3BiosealBarcodeReader_Initialize =
      _id3BiosealBarcodeReader_InitializePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_BARCODE_READER>)>();

  /// @brief Releases the memory allocated for a BarcodeReader.
  /// @param phBarcodeReader [in] Handle to the BarcodeReader object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBarcodeReader_Dispose(
    ffi.Pointer<ID3_BIOSEAL_BARCODE_READER> phBarcodeReader,
  ) {
    return _id3BiosealBarcodeReader_Dispose(
      phBarcodeReader,
    );
  }

  late final _id3BiosealBarcodeReader_DisposePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_BARCODE_READER>)>>(
      'id3BiosealBarcodeReader_Dispose');
  late final _id3BiosealBarcodeReader_Dispose =
      _id3BiosealBarcodeReader_DisposePtr
          .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_BARCODE_READER>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hBarcodeReader [in] Handle to the BarcodeReader object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBarcodeReader_CheckHandle(
    ID3_BIOSEAL_BARCODE_READER hBarcodeReader,
  ) {
    return _id3BiosealBarcodeReader_CheckHandle(
      hBarcodeReader,
    );
  }

  late final _id3BiosealBarcodeReader_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_BARCODE_READER)>>(
          'id3BiosealBarcodeReader_CheckHandle');
  late final _id3BiosealBarcodeReader_CheckHandle =
      _id3BiosealBarcodeReader_CheckHandlePtr
          .asFunction<int Function(ID3_BIOSEAL_BARCODE_READER)>();

  /// Gets the holds the decoded data extracted from the barcode.
  /// @param hBarcodeReader [in] Handle to the BarcodeReader object.
  /// @param outputData [out] Holds the decoded data extracted from the barcode.
  /// @param outputDataSize [in,out] Size of the 'outputData' buffer. Receives the number of elements in the 'outputData' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBarcodeReader_GetOutputData(
    ID3_BIOSEAL_BARCODE_READER hBarcodeReader,
    ffi.Pointer<ffi.UnsignedChar> outputData,
    ffi.Pointer<ffi.Int> outputDataSize,
  ) {
    return _id3BiosealBarcodeReader_GetOutputData(
      hBarcodeReader,
      outputData,
      outputDataSize,
    );
  }

  late final _id3BiosealBarcodeReader_GetOutputDataPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_BARCODE_READER,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealBarcodeReader_GetOutputData');
  late final _id3BiosealBarcodeReader_GetOutputData =
      _id3BiosealBarcodeReader_GetOutputDataPtr.asFunction<
          int Function(ID3_BIOSEAL_BARCODE_READER,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Attempts to decode a barcode from the provided raw image data.
  /// @param hBarcodeReader [in] Handle to the BarcodeReader object.
  /// @param data [in] An array of bytes representing the raw image data that contains the barcode to be decoded.
  /// @param dataSize [in] Size of the 'data' buffer.
  /// @param result [out] A boolean output that indicates the success of the decoding process. It is set to 'true' if the barcode is successfully decoded, otherwise 'false'.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealBarcodeReader_Decode(
    ID3_BIOSEAL_BARCODE_READER hBarcodeReader,
    ffi.Pointer<ffi.UnsignedChar> data,
    int dataSize,
    ffi.Pointer<ffi.Bool> result,
  ) {
    return _id3BiosealBarcodeReader_Decode(
      hBarcodeReader,
      data,
      dataSize,
      result,
    );
  }

  late final _id3BiosealBarcodeReader_DecodePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_BARCODE_READER,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealBarcodeReader_Decode');
  late final _id3BiosealBarcodeReader_Decode =
      _id3BiosealBarcodeReader_DecodePtr.asFunction<
          int Function(ID3_BIOSEAL_BARCODE_READER,
              ffi.Pointer<ffi.UnsignedChar>, int, ffi.Pointer<ffi.Bool>)>();

  /// Retrieves the library version as a 'X.Y.Z' formatted string.
  /// @param libraryVersion [out] A string that identifies the library version.
  /// @param libraryVersionSize [in,out] Size of the 'libraryVersion' buffer. Receives the minimum required buffer size to hold the 'libraryVersion' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'libraryVersion' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLibrary_GetVersion(
    ffi.Pointer<ffi.Char> libraryVersion,
    ffi.Pointer<ffi.Int> libraryVersionSize,
  ) {
    return _id3BiosealLibrary_GetVersion(
      libraryVersion,
      libraryVersionSize,
    );
  }

  late final _id3BiosealLibrary_GetVersionPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLibrary_GetVersion');
  late final _id3BiosealLibrary_GetVersion = _id3BiosealLibrary_GetVersionPtr
      .asFunction<int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the library version as a structure.
  /// @param sVersion [out] The version.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLibrary_GetVersionEx(
    ffi.Pointer<id3BiosealLibVersion> sVersion,
  ) {
    return _id3BiosealLibrary_GetVersionEx(
      sVersion,
    );
  }

  late final _id3BiosealLibrary_GetVersionExPtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<id3BiosealLibVersion>)>>(
      'id3BiosealLibrary_GetVersionEx');
  late final _id3BiosealLibrary_GetVersionEx =
      _id3BiosealLibrary_GetVersionExPtr
          .asFunction<int Function(ffi.Pointer<id3BiosealLibVersion>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetLicenseTypeString(
    int value,
  ) {
    return _id3Bioseal_GetLicenseTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetLicenseTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetLicenseTypeString');
  late final _id3Bioseal_GetLicenseTypeString =
      _id3Bioseal_GetLicenseTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetLicenseHardwareCodeTypeString(
    int value,
  ) {
    return _id3Bioseal_GetLicenseHardwareCodeTypeString(
      value,
    );
  }

  late final _id3Bioseal_GetLicenseHardwareCodeTypeStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetLicenseHardwareCodeTypeString');
  late final _id3Bioseal_GetLicenseHardwareCodeTypeString =
      _id3Bioseal_GetLicenseHardwareCodeTypeStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// Checks a license from a file.
  /// This function does two things:
  /// - First it loads the license from a file using the given path
  /// - Then it checks the validity of the license regarding the host it is called on (Windows, Linux, Android ...)
  /// Important: Calling this function is required to get access to the license member getters.
  /// Note: The optional parameter is required on Android and must be the JNIEnv* pointer casted as a void*. It can be set as NULL for other devices.
  /// @param licensePath [in] Absolute or relative path to the license file.
  /// @param optionalParameter [in] Only used on Android: JNIEnv* pointer casted as a void*. Ignored for other devices.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_CheckLicense(
    ffi.Pointer<ffi.Char> licensePath,
    ffi.Pointer<ffi.Void> optionalParameter,
  ) {
    return _id3BiosealLicense_CheckLicense(
      licensePath,
      optionalParameter,
    );
  }

  late final _id3BiosealLicense_CheckLicensePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Void>)>>('id3BiosealLicense_CheckLicense');
  late final _id3BiosealLicense_CheckLicense =
      _id3BiosealLicense_CheckLicensePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Void>)>();

  /// Checks a license from a buffer.
  /// This function does two things:
  /// - First it loads the license from a buffer
  /// - Then it checks the validity of the license regarding the host it is called on (Windows, Linux, Android ...)
  /// Important: Calling one of the license checking function is required to get access to all the license member getters.
  /// Note: The optional parameter is required on Android and must be the JNIEnv* pointer casted as a void*. It can be set as NULL for other devices.
  /// @param licenseData [in] A buffer containing the license file data.
  /// @param licenseDataSize [in] Size of the 'licenseData' buffer.
  /// @param optionalParameter [in] Only used on Android: JNIEnv* pointer casted as a void*. Ignored for other devices.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_CheckLicenseBuffer(
    ffi.Pointer<ffi.UnsignedChar> licenseData,
    int licenseDataSize,
    ffi.Pointer<ffi.Void> optionalParameter,
  ) {
    return _id3BiosealLicense_CheckLicenseBuffer(
      licenseData,
      licenseDataSize,
      optionalParameter,
    );
  }

  late final _id3BiosealLicense_CheckLicenseBufferPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.UnsignedChar>, ffi.Int,
              ffi.Pointer<ffi.Void>)>>('id3BiosealLicense_CheckLicenseBuffer');
  late final _id3BiosealLicense_CheckLicenseBuffer =
      _id3BiosealLicense_CheckLicenseBufferPtr.asFunction<
          int Function(
              ffi.Pointer<ffi.UnsignedChar>, int, ffi.Pointer<ffi.Void>)>();

  /// Checks if a module is present in the previously loaded license.
  /// @param moduleName [in] The module name.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_CheckModule(
    ffi.Pointer<ffi.Char> moduleName,
  ) {
    return _id3BiosealLicense_CheckModule(
      moduleName,
    );
  }

  late final _id3BiosealLicense_CheckModulePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ffi.Char>)>>(
          'id3BiosealLicense_CheckModule');
  late final _id3BiosealLicense_CheckModule = _id3BiosealLicense_CheckModulePtr
      .asFunction<int Function(ffi.Pointer<ffi.Char>)>();

  /// Retrieves the number of modules in the license.
  /// @param count [out] The number of modules in the license.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetModuleCount(
    ffi.Pointer<ffi.Int> count,
  ) {
    return _id3BiosealLicense_GetModuleCount(
      count,
    );
  }

  late final _id3BiosealLicense_GetModuleCountPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ffi.Int>)>>(
          'id3BiosealLicense_GetModuleCount');
  late final _id3BiosealLicense_GetModuleCount =
      _id3BiosealLicense_GetModuleCountPtr
          .asFunction<int Function(ffi.Pointer<ffi.Int>)>();

  /// Retrieves the name of the specified license module.
  /// @param index [in] Index of the module, starting from 0.
  /// @param name [out] The license module name.
  /// @param nameSize [in,out] Size of the 'name' buffer. Receives the minimum required buffer size to hold the 'name' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'name' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetModuleName(
    int index,
    ffi.Pointer<ffi.Char> name,
    ffi.Pointer<ffi.Int> nameSize,
  ) {
    return _id3BiosealLicense_GetModuleName(
      index,
      name,
      nameSize,
    );
  }

  late final _id3BiosealLicense_GetModuleNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Int, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetModuleName');
  late final _id3BiosealLicense_GetModuleName =
      _id3BiosealLicense_GetModuleNamePtr.asFunction<
          int Function(int, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the value associated to the specified license module.
  /// @param name [in] Name of the requested module.
  /// @param value [out] The value associated to the licence module.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetModuleValue(
    ffi.Pointer<ffi.Char> name,
    ffi.Pointer<ffi.Int> value,
  ) {
    return _id3BiosealLicense_GetModuleValue(
      name,
      value,
    );
  }

  late final _id3BiosealLicense_GetModuleValuePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetModuleValue');
  late final _id3BiosealLicense_GetModuleValue =
      _id3BiosealLicense_GetModuleValuePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the license name.
  /// @param licenseName [out] The license name.
  /// @param licenseNameSize [in,out] Size of the 'licenseName' buffer. Receives the minimum required buffer size to hold the 'licenseName' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licenseName' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseName(
    ffi.Pointer<ffi.Char> licenseName,
    ffi.Pointer<ffi.Int> licenseNameSize,
  ) {
    return _id3BiosealLicense_GetLicenseName(
      licenseName,
      licenseNameSize,
    );
  }

  late final _id3BiosealLicense_GetLicenseNamePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetLicenseName');
  late final _id3BiosealLicense_GetLicenseName =
      _id3BiosealLicense_GetLicenseNamePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the license type.
  /// @param eBiosealLicenseType [out] The license type.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseType(
    ffi.Pointer<ffi.Int32> eBiosealLicenseType,
  ) {
    return _id3BiosealLicense_GetLicenseType(
      eBiosealLicenseType,
    );
  }

  late final _id3BiosealLicense_GetLicenseTypePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ffi.Int32>)>>(
          'id3BiosealLicense_GetLicenseType');
  late final _id3BiosealLicense_GetLicenseType =
      _id3BiosealLicense_GetLicenseTypePtr
          .asFunction<int Function(ffi.Pointer<ffi.Int32>)>();

  /// Retrieves the license owner.
  /// @param licenseOwner [out] The license owner.
  /// @param licenseOwnerSize [in,out] Size of the 'licenseOwner' buffer. Receives the minimum required buffer size to hold the 'licenseOwner' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licenseOwner' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseOwner(
    ffi.Pointer<ffi.Char> licenseOwner,
    ffi.Pointer<ffi.Int> licenseOwnerSize,
  ) {
    return _id3BiosealLicense_GetLicenseOwner(
      licenseOwner,
      licenseOwnerSize,
    );
  }

  late final _id3BiosealLicense_GetLicenseOwnerPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetLicenseOwner');
  late final _id3BiosealLicense_GetLicenseOwner =
      _id3BiosealLicense_GetLicenseOwnerPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the license product reference.
  /// @param productReference [out] The product reference.
  /// @param productReferenceSize [in,out] Size of the 'productReference' buffer. Receives the minimum required buffer size to hold the 'productReference' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'productReference' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetProductReference(
    ffi.Pointer<ffi.Char> productReference,
    ffi.Pointer<ffi.Int> productReferenceSize,
  ) {
    return _id3BiosealLicense_GetProductReference(
      productReference,
      productReferenceSize,
    );
  }

  late final _id3BiosealLicense_GetProductReferencePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetProductReference');
  late final _id3BiosealLicense_GetProductReference =
      _id3BiosealLicense_GetProductReferencePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the license path.
  /// @param licensePath [out] The license path.
  /// @param licensePathSize [in,out] Size of the 'licensePath' buffer. Receives the minimum required buffer size to hold the 'licensePath' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licensePath' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicensePath(
    ffi.Pointer<ffi.Char> licensePath,
    ffi.Pointer<ffi.Int> licensePathSize,
  ) {
    return _id3BiosealLicense_GetLicensePath(
      licensePath,
      licensePathSize,
    );
  }

  late final _id3BiosealLicense_GetLicensePathPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetLicensePath');
  late final _id3BiosealLicense_GetLicensePath =
      _id3BiosealLicense_GetLicensePathPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the number of remaining days.
  /// @param remainingDays [out] The number of remaining days.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetRemainingDays(
    ffi.Pointer<ffi.Int> remainingDays,
  ) {
    return _id3BiosealLicense_GetRemainingDays(
      remainingDays,
    );
  }

  late final _id3BiosealLicense_GetRemainingDaysPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ffi.Int>)>>(
          'id3BiosealLicense_GetRemainingDays');
  late final _id3BiosealLicense_GetRemainingDays =
      _id3BiosealLicense_GetRemainingDaysPtr
          .asFunction<int Function(ffi.Pointer<ffi.Int>)>();

  /// Retrieves the license expiry date.
  /// @param expiryDate [out] The license expiry date.
  /// @param expiryDateSize [in,out] Size of the 'expiryDate' buffer. Receives the minimum required buffer size to hold the 'expiryDate' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'expiryDate' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetExpiryDate(
    ffi.Pointer<ffi.Char> expiryDate,
    ffi.Pointer<ffi.Int> expiryDateSize,
  ) {
    return _id3BiosealLicense_GetExpiryDate(
      expiryDate,
      expiryDateSize,
    );
  }

  late final _id3BiosealLicense_GetExpiryDatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetExpiryDate');
  late final _id3BiosealLicense_GetExpiryDate =
      _id3BiosealLicense_GetExpiryDatePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the hardware code of the previously loaded license.
  /// @param licenseFileHardwareCode [out] The license hardware code.
  /// @param licenseFileHardwareCodeSize [in,out] Size of the 'licenseFileHardwareCode' buffer. Receives the minimum required buffer size to hold the 'licenseFileHardwareCode' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licenseFileHardwareCode' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseFileHardwareCode(
    ffi.Pointer<ffi.Char> licenseFileHardwareCode,
    ffi.Pointer<ffi.Int> licenseFileHardwareCodeSize,
  ) {
    return _id3BiosealLicense_GetLicenseFileHardwareCode(
      licenseFileHardwareCode,
      licenseFileHardwareCodeSize,
    );
  }

  late final _id3BiosealLicense_GetLicenseFileHardwareCodePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealLicense_GetLicenseFileHardwareCode');
  late final _id3BiosealLicense_GetLicenseFileHardwareCode =
      _id3BiosealLicense_GetLicenseFileHardwareCodePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the serial number of the previously loaded license.
  /// @param licenseFileSerial [out] The license serial number.
  /// @param licenseFileSerialSize [in,out] Size of the 'licenseFileSerial' buffer. Receives the minimum required buffer size to hold the 'licenseFileSerial' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licenseFileSerial' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseFileSerial(
    ffi.Pointer<ffi.Char> licenseFileSerial,
    ffi.Pointer<ffi.Int> licenseFileSerialSize,
  ) {
    return _id3BiosealLicense_GetLicenseFileSerial(
      licenseFileSerial,
      licenseFileSerialSize,
    );
  }

  late final _id3BiosealLicense_GetLicenseFileSerialPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetLicenseFileSerial');
  late final _id3BiosealLicense_GetLicenseFileSerial =
      _id3BiosealLicense_GetLicenseFileSerialPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Retrieves the hardware code of the device using the requested hardware code type.
  /// This function retrieves the hardware code of the device you run the library on.
  /// The optional parameter is required:
  /// - On Android, it must be the JNIEnv* pointer cast as a void*.
  /// - In other cases, it must be set to NULL.
  /// @param eHardwareCodeType [in] The requested hardware code type.
  /// @param code [out] The device hardware code.
  /// @param codeSize [in,out] Size of the 'code' buffer. Receives the minimum required buffer size to hold the 'code' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'code' (excluding terminating NULL character).
  /// @param optionalParameter [in] Only used on Android for JNIEnv* pointer. Ignored for other devices (NULL).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetHostHardwareCode(
    int eHardwareCodeType,
    ffi.Pointer<ffi.Char> code,
    ffi.Pointer<ffi.Int> codeSize,
    ffi.Pointer<ffi.Void> optionalParameter,
  ) {
    return _id3BiosealLicense_GetHostHardwareCode(
      eHardwareCodeType,
      code,
      codeSize,
      optionalParameter,
    );
  }

  late final _id3BiosealLicense_GetHostHardwareCodePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Int32,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>,
              ffi.Pointer<ffi.Void>)>>('id3BiosealLicense_GetHostHardwareCode');
  late final _id3BiosealLicense_GetHostHardwareCode =
      _id3BiosealLicense_GetHostHardwareCodePtr.asFunction<
          int Function(int, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>,
              ffi.Pointer<ffi.Void>)>();

  /// Retrieves the hardware code of the external drive you run the library on. This function works on Windows only.
  /// @param eHardwareCodeType [in] The requested hardware code type. Must be windowsUsb.
  /// @param code [out] The device hardware code.
  /// @param codeSize [in,out] Size of the 'code' buffer. Receives the minimum required buffer size to hold the 'code' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'code' (excluding terminating NULL character).
  /// @param externalDrivePath [in] On Windows to activate a license on a USB device, it must contain the path to the requested USB drive (e.g 'G:\').
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetExternalDriveHardwareCode(
    int eHardwareCodeType,
    ffi.Pointer<ffi.Char> code,
    ffi.Pointer<ffi.Int> codeSize,
    ffi.Pointer<ffi.Char> externalDrivePath,
  ) {
    return _id3BiosealLicense_GetExternalDriveHardwareCode(
      eHardwareCodeType,
      code,
      codeSize,
      externalDrivePath,
    );
  }

  late final _id3BiosealLicense_GetExternalDriveHardwareCodePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Int32, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Int>, ffi.Pointer<ffi.Char>)>>(
      'id3BiosealLicense_GetExternalDriveHardwareCode');
  late final _id3BiosealLicense_GetExternalDriveHardwareCode =
      _id3BiosealLicense_GetExternalDriveHardwareCodePtr.asFunction<
          int Function(int, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>,
              ffi.Pointer<ffi.Char>)>();

  /// Retrieves the license comment.
  /// @param licenseComment [out] The license comment.
  /// @param licenseCommentSize [in,out] Size of the 'licenseComment' buffer. Receives the minimum required buffer size to hold the 'licenseComment' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'licenseComment' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetLicenseComment(
    ffi.Pointer<ffi.Char> licenseComment,
    ffi.Pointer<ffi.Int> licenseCommentSize,
  ) {
    return _id3BiosealLicense_GetLicenseComment(
      licenseComment,
      licenseCommentSize,
    );
  }

  late final _id3BiosealLicense_GetLicenseCommentPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_GetLicenseComment');
  late final _id3BiosealLicense_GetLicenseComment =
      _id3BiosealLicense_GetLicenseCommentPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  /// Activates a license using customer credentials and a product reference and saves the license to a file.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param login [in] The id3 account login.
  /// @param password [in] The id3 account password.
  /// @param productReference [in] The requested product reference.
  /// @param commentary [in] Commentary associated to this license activation.
  /// @param path [in] Path to the retrieved license file.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_Activate(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> login,
    ffi.Pointer<ffi.Char> password,
    ffi.Pointer<ffi.Char> productReference,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.Char> path,
  ) {
    return _id3BiosealLicense_Activate(
      hardwareCode,
      login,
      password,
      productReference,
      commentary,
      path,
    );
  }

  late final _id3BiosealLicense_ActivatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>)>>('id3BiosealLicense_Activate');
  late final _id3BiosealLicense_Activate =
      _id3BiosealLicense_ActivatePtr.asFunction<
          int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>)>();

  /// Retrieves a license file buffer using customer credentials and a product reference and returns the license in a data buffer.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param login [in] The customer login.
  /// @param password [in] The customer password.
  /// @param productReference [in] The requested product reference.
  /// @param commentary [in] Commentary associated to this license activation, generally the host name.
  /// @param licenseFileBuffer [out] The license data.
  /// @param licenseFileBufferSize [in,out] Size of the 'licenseFileBuffer' buffer. Receives the number of elements in the 'licenseFileBuffer' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ActivateBuffer(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> login,
    ffi.Pointer<ffi.Char> password,
    ffi.Pointer<ffi.Char> productReference,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.UnsignedChar> licenseFileBuffer,
    ffi.Pointer<ffi.Int> licenseFileBufferSize,
  ) {
    return _id3BiosealLicense_ActivateBuffer(
      hardwareCode,
      login,
      password,
      productReference,
      commentary,
      licenseFileBuffer,
      licenseFileBufferSize,
    );
  }

  late final _id3BiosealLicense_ActivateBufferPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_ActivateBuffer');
  late final _id3BiosealLicense_ActivateBuffer =
      _id3BiosealLicense_ActivateBufferPtr.asFunction<
          int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Activates a license using a serial key and saves the license to a file.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param serialKey [in] The serial key to activate.
  /// @param commentary [in] Commentary associated to this license activation, generally the host name.
  /// @param path [in] Path to the license file.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ActivateSerialKey(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> serialKey,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.Char> path,
  ) {
    return _id3BiosealLicense_ActivateSerialKey(
      hardwareCode,
      serialKey,
      commentary,
      path,
    );
  }

  late final _id3BiosealLicense_ActivateSerialKeyPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>)>>('id3BiosealLicense_ActivateSerialKey');
  late final _id3BiosealLicense_ActivateSerialKey =
      _id3BiosealLicense_ActivateSerialKeyPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>();

  /// Activates a license using a serial key and returns the license in a data buffer.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param serialKey [in] The id3 serial key.
  /// @param commentary [in] Commentary associated to this license activation.
  /// @param licenseFileBuffer [out] The license data buffer.
  /// @param licenseFileBufferSize [in,out] Size of the 'licenseFileBuffer' buffer. Receives the number of elements in the 'licenseFileBuffer' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ActivateSerialKeyBuffer(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> serialKey,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.UnsignedChar> licenseFileBuffer,
    ffi.Pointer<ffi.Int> licenseFileBufferSize,
  ) {
    return _id3BiosealLicense_ActivateSerialKeyBuffer(
      hardwareCode,
      serialKey,
      commentary,
      licenseFileBuffer,
      licenseFileBufferSize,
    );
  }

  late final _id3BiosealLicense_ActivateSerialKeyBufferPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.UnsignedChar>,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealLicense_ActivateSerialKeyBuffer');
  late final _id3BiosealLicense_ActivateSerialKeyBuffer =
      _id3BiosealLicense_ActivateSerialKeyBufferPtr.asFunction<
          int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Activates a license file using an activation key and saves the license to a file.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param activationKey [in] The activation key.
  /// @param commentary [in] Commentary associated to this license activation, generally the host name.
  /// @param path [in] Path to the retrieved license file.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ActivateActivationKey(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> activationKey,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.Char> path,
  ) {
    return _id3BiosealLicense_ActivateActivationKey(
      hardwareCode,
      activationKey,
      commentary,
      path,
    );
  }

  late final _id3BiosealLicense_ActivateActivationKeyPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>(
      'id3BiosealLicense_ActivateActivationKey');
  late final _id3BiosealLicense_ActivateActivationKey =
      _id3BiosealLicense_ActivateActivationKeyPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>();

  /// Activates a license using an activation key and returns the license in a data buffer.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param activationKey [in] The id3 activation key.
  /// @param commentary [in] Commentary associated to this license activation.
  /// @param licenseFileBuffer [out] The license data buffer.
  /// @param licenseFileBufferSize [in,out] Size of the 'licenseFileBuffer' buffer. Receives the number of elements in the 'licenseFileBuffer' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ActivateActivationKeyBuffer(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> activationKey,
    ffi.Pointer<ffi.Char> commentary,
    ffi.Pointer<ffi.UnsignedChar> licenseFileBuffer,
    ffi.Pointer<ffi.Int> licenseFileBufferSize,
  ) {
    return _id3BiosealLicense_ActivateActivationKeyBuffer(
      hardwareCode,
      activationKey,
      commentary,
      licenseFileBuffer,
      licenseFileBufferSize,
    );
  }

  late final _id3BiosealLicense_ActivateActivationKeyBufferPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.UnsignedChar>,
                  ffi.Pointer<ffi.Int>)>>(
      'id3BiosealLicense_ActivateActivationKeyBuffer');
  late final _id3BiosealLicense_ActivateActivationKeyBuffer =
      _id3BiosealLicense_ActivateActivationKeyBufferPtr.asFunction<
          int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Reactivates a license file using the host hardware code and the product reference.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param productReference [in] The product reference.
  /// @param path [in] Path to the license file.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_Reactivate(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> productReference,
    ffi.Pointer<ffi.Char> path,
  ) {
    return _id3BiosealLicense_Reactivate(
      hardwareCode,
      productReference,
      path,
    );
  }

  late final _id3BiosealLicense_ReactivatePtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>)>>('id3BiosealLicense_Reactivate');
  late final _id3BiosealLicense_Reactivate =
      _id3BiosealLicense_ReactivatePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>)>();

  /// Reactivates a license in a data buffer using the host hardware code and the product reference.
  /// @param hardwareCode [in] The hardware code on which the license file will be attached, to be retrieved using the GetHostHardwareCode function.
  /// @param productReference [in] The product reference.
  /// @param licenseFileBuffer [out] The new license data buffer.
  /// @param licenseFileBufferSize [in,out] Size of the 'licenseFileBuffer' buffer. Receives the number of elements in the 'licenseFileBuffer' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_ReactivateBuffer(
    ffi.Pointer<ffi.Char> hardwareCode,
    ffi.Pointer<ffi.Char> productReference,
    ffi.Pointer<ffi.UnsignedChar> licenseFileBuffer,
    ffi.Pointer<ffi.Int> licenseFileBufferSize,
  ) {
    return _id3BiosealLicense_ReactivateBuffer(
      hardwareCode,
      productReference,
      licenseFileBuffer,
      licenseFileBufferSize,
    );
  }

  late final _id3BiosealLicense_ReactivateBufferPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_ReactivateBuffer');
  late final _id3BiosealLicense_ReactivateBuffer =
      _id3BiosealLicense_ReactivateBufferPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Checks the license by using a card-based verification process.
  /// It takes the path to the license file and outputs a challenge response for further verification.
  /// @param licensePath [in] The file path to the license that needs to be checked.
  /// @param challengeR1 [out] An array to hold the challenge response generated by the host.
  /// @param challengeR1Size [in,out] Size of the 'challengeR1' buffer. Receives the number of elements in the 'challengeR1' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_CheckLicenseWithCard(
    ffi.Pointer<ffi.Char> licensePath,
    ffi.Pointer<ffi.UnsignedChar> challengeR1,
    ffi.Pointer<ffi.Int> challengeR1Size,
  ) {
    return _id3BiosealLicense_CheckLicenseWithCard(
      licensePath,
      challengeR1,
      challengeR1Size,
    );
  }

  late final _id3BiosealLicense_CheckLicenseWithCardPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_CheckLicenseWithCard');
  late final _id3BiosealLicense_CheckLicenseWithCard =
      _id3BiosealLicense_CheckLicenseWithCardPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>();

  /// Checks the license using a buffer containing the license data and a card-based verification process.
  /// It outputs a challenge response for further verification.
  /// @param licenseData [in] A buffer containing the license file data.
  /// @param licenseDataSize [in] Size of the 'licenseData' buffer.
  /// @param challengeR1 [out] An array to hold the challenge response generated by the host.
  /// @param challengeR1Size [in,out] Size of the 'challengeR1' buffer. Receives the number of elements in the 'challengeR1' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_CheckLicenseBufferWithCard(
    ffi.Pointer<ffi.UnsignedChar> licenseData,
    int licenseDataSize,
    ffi.Pointer<ffi.UnsignedChar> challengeR1,
    ffi.Pointer<ffi.Int> challengeR1Size,
  ) {
    return _id3BiosealLicense_CheckLicenseBufferWithCard(
      licenseData,
      licenseDataSize,
      challengeR1,
      challengeR1Size,
    );
  }

  late final _id3BiosealLicense_CheckLicenseBufferWithCardPtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ffi.UnsignedChar>, ffi.Int,
                  ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealLicense_CheckLicenseBufferWithCard');
  late final _id3BiosealLicense_CheckLicenseBufferWithCard =
      _id3BiosealLicense_CheckLicenseBufferWithCardPtr.asFunction<
          int Function(ffi.Pointer<ffi.UnsignedChar>, int,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Finalizes the license check process using the provided cryptogram.
  /// It ensures the integrity and authenticity of the license verification.
  /// @param cryptogram [in] A 32-byte array containing the cryptogram used for final verification.
  /// @param cryptogramSize [in] Size of the 'cryptogram' buffer.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_FinalizeCheckLicenseWithCard(
    ffi.Pointer<ffi.UnsignedChar> cryptogram,
    int cryptogramSize,
  ) {
    return _id3BiosealLicense_FinalizeCheckLicenseWithCard(
      cryptogram,
      cryptogramSize,
    );
  }

  late final _id3BiosealLicense_FinalizeCheckLicenseWithCardPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int)>>('id3BiosealLicense_FinalizeCheckLicenseWithCard');
  late final _id3BiosealLicense_FinalizeCheckLicenseWithCard =
      _id3BiosealLicense_FinalizeCheckLicenseWithCardPtr
          .asFunction<int Function(ffi.Pointer<ffi.UnsignedChar>, int)>();

  /// Encrypt a license from XML source.
  /// @param magicCode [in] Access key.
  /// @param src [in] XML source.
  /// @param licenseData [out] Encrypted license data.
  /// @param licenseDataSize [in,out] Size of the 'licenseData' buffer. Receives the number of elements in the 'licenseData' array.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_Encrypt(
    ffi.Pointer<ffi.Char> magicCode,
    ffi.Pointer<ffi.Char> src,
    ffi.Pointer<ffi.UnsignedChar> licenseData,
    ffi.Pointer<ffi.Int> licenseDataSize,
  ) {
    return _id3BiosealLicense_Encrypt(
      magicCode,
      src,
      licenseData,
      licenseDataSize,
    );
  }

  late final _id3BiosealLicense_EncryptPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLicense_Encrypt');
  late final _id3BiosealLicense_Encrypt =
      _id3BiosealLicense_EncryptPtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.UnsignedChar>, ffi.Pointer<ffi.Int>)>();

  /// Build an application hardware code.
  /// @param applicationName [in] The application name.
  /// @param certificate [in] The certificate.
  /// @param code [out] The application hardware code.
  /// @param codeSize [in,out] Size of the 'code' buffer. Receives the minimum required buffer size to hold the 'code' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'code' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLicense_GetApplicationHardwareCode(
    ffi.Pointer<ffi.Char> applicationName,
    ffi.Pointer<ffi.Char> certificate,
    ffi.Pointer<ffi.Char> code,
    ffi.Pointer<ffi.Int> codeSize,
  ) {
    return _id3BiosealLicense_GetApplicationHardwareCode(
      applicationName,
      certificate,
      code,
      codeSize,
    );
  }

  late final _id3BiosealLicense_GetApplicationHardwareCodePtr = _lookup<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
                  ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>>(
      'id3BiosealLicense_GetApplicationHardwareCode');
  late final _id3BiosealLicense_GetApplicationHardwareCode =
      _id3BiosealLicense_GetApplicationHardwareCodePtr.asFunction<
          int Function(ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetLicenseErrorString(
    int value,
  ) {
    return _id3Bioseal_GetLicenseErrorString(
      value,
    );
  }

  late final _id3Bioseal_GetLicenseErrorStringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetLicenseErrorString');
  late final _id3Bioseal_GetLicenseErrorString =
      _id3Bioseal_GetLicenseErrorStringPtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  ffi.Pointer<ffi.Char> id3Bioseal_GetLicenseErrorMessage(
    int value,
  ) {
    return _id3Bioseal_GetLicenseErrorMessage(
      value,
    );
  }

  late final _id3Bioseal_GetLicenseErrorMessagePtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function(ffi.Int)>>(
          'id3Bioseal_GetLicenseErrorMessage');
  late final _id3Bioseal_GetLicenseErrorMessage =
      _id3Bioseal_GetLicenseErrorMessagePtr
          .asFunction<ffi.Pointer<ffi.Char> Function(int)>();

  /// @brief Initializes a Lotl object.
  /// @param phLotl [in] Handle to the Lotl object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_Initialize(
    ffi.Pointer<ID3_BIOSEAL_LOTL> phLotl,
  ) {
    return _id3BiosealLotl_Initialize(
      phLotl,
    );
  }

  late final _id3BiosealLotl_InitializePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOTL>)>>(
      'id3BiosealLotl_Initialize');
  late final _id3BiosealLotl_Initialize = _id3BiosealLotl_InitializePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOTL>)>();

  /// @brief Releases the memory allocated for a Lotl.
  /// @param phLotl [in] Handle to the Lotl object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_Dispose(
    ffi.Pointer<ID3_BIOSEAL_LOTL> phLotl,
  ) {
    return _id3BiosealLotl_Dispose(
      phLotl,
    );
  }

  late final _id3BiosealLotl_DisposePtr = _lookup<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOTL>)>>(
      'id3BiosealLotl_Dispose');
  late final _id3BiosealLotl_Dispose = _id3BiosealLotl_DisposePtr
      .asFunction<int Function(ffi.Pointer<ID3_BIOSEAL_LOTL>)>();

  /// @brief Checks if the handle object is valid.
  /// @param hLotl [in] Handle to the Lotl object.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_CheckHandle(
    ID3_BIOSEAL_LOTL hLotl,
  ) {
    return _id3BiosealLotl_CheckHandle(
      hLotl,
    );
  }

  late final _id3BiosealLotl_CheckHandlePtr =
      _lookup<ffi.NativeFunction<ffi.Int Function(ID3_BIOSEAL_LOTL)>>(
          'id3BiosealLotl_CheckHandle');
  late final _id3BiosealLotl_CheckHandle = _id3BiosealLotl_CheckHandlePtr
      .asFunction<int Function(ID3_BIOSEAL_LOTL)>();

  /// Gets the get the log.
  /// @param hLotl [in] Handle to the Lotl object.
  /// @param hLog [out] Get the log.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_GetLog(
    ID3_BIOSEAL_LOTL hLotl,
    ID3_BIOSEAL_LOG hLog,
  ) {
    return _id3BiosealLotl_GetLog(
      hLotl,
      hLog,
    );
  }

  late final _id3BiosealLotl_GetLogPtr = _lookup<
          ffi
          .NativeFunction<ffi.Int Function(ID3_BIOSEAL_LOTL, ID3_BIOSEAL_LOG)>>(
      'id3BiosealLotl_GetLog');
  late final _id3BiosealLotl_GetLog = _id3BiosealLotl_GetLogPtr
      .asFunction<int Function(ID3_BIOSEAL_LOTL, ID3_BIOSEAL_LOG)>();

  /// Gets the true if the LoTL is a TLS.
  /// @param hLotl [in] Handle to the Lotl object.
  /// @param isTsl [out] True if the LoTL is a TLS.
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_GetIsTsl(
    ID3_BIOSEAL_LOTL hLotl,
    ffi.Pointer<ffi.Bool> isTsl,
  ) {
    return _id3BiosealLotl_GetIsTsl(
      hLotl,
      isTsl,
    );
  }

  late final _id3BiosealLotl_GetIsTslPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(ID3_BIOSEAL_LOTL,
              ffi.Pointer<ffi.Bool>)>>('id3BiosealLotl_GetIsTsl');
  late final _id3BiosealLotl_GetIsTsl = _id3BiosealLotl_GetIsTslPtr
      .asFunction<int Function(ID3_BIOSEAL_LOTL, ffi.Pointer<ffi.Bool>)>();

  /// Returns the URL to the TSL or the next LoTL.
  /// @param hLotl [in] Handle to the Lotl object.
  /// @param lotlData [in] The LotL data.
  /// @param lotlDataSize [in] Size of the 'lotlData' buffer.
  /// @param manifestId [in] The Manifest ID in ISO 22385 format (hexadecimal string).
  /// @param iac [in] The IAC (optional).
  /// @param url [out] The TSL url.
  /// @param urlSize [in,out] Size of the 'url' buffer. Receives the minimum required buffer size to hold the 'url' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'url' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_GetUrl(
    ID3_BIOSEAL_LOTL hLotl,
    ffi.Pointer<ffi.UnsignedChar> lotlData,
    int lotlDataSize,
    ffi.Pointer<ffi.Char> manifestId,
    ffi.Pointer<ffi.Char> iac,
    ffi.Pointer<ffi.Char> url,
    ffi.Pointer<ffi.Int> urlSize,
  ) {
    return _id3BiosealLotl_GetUrl(
      hLotl,
      lotlData,
      lotlDataSize,
      manifestId,
      iac,
      url,
      urlSize,
    );
  }

  late final _id3BiosealLotl_GetUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_LOTL,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLotl_GetUrl');
  late final _id3BiosealLotl_GetUrl = _id3BiosealLotl_GetUrlPtr.asFunction<
      int Function(
          ID3_BIOSEAL_LOTL,
          ffi.Pointer<ffi.UnsignedChar>,
          int,
          ffi.Pointer<ffi.Char>,
          ffi.Pointer<ffi.Char>,
          ffi.Pointer<ffi.Char>,
          ffi.Pointer<ffi.Int>)>();

  /// Returns the URL to the manifest.
  /// @param hLotl [in] Handle to the Lotl object.
  /// @param tslData [in] The TSL data.
  /// @param tslDataSize [in] Size of the 'tslData' buffer.
  /// @param url [out] The manifest url.
  /// @param urlSize [in,out] Size of the 'url' buffer. Receives the minimum required buffer size to hold the 'url' string if the given one is too small (including the terminating NULL character), otherwise receives the number of characters in 'url' (excluding terminating NULL character).
  /// @return An error code. See id3BiosealError file for the list of possible error codes.
  /// @retval id3BiosealError_Success The function succeeded.
  int id3BiosealLotl_GetManifestUrl(
    ID3_BIOSEAL_LOTL hLotl,
    ffi.Pointer<ffi.UnsignedChar> tslData,
    int tslDataSize,
    ffi.Pointer<ffi.Char> url,
    ffi.Pointer<ffi.Int> urlSize,
  ) {
    return _id3BiosealLotl_GetManifestUrl(
      hLotl,
      tslData,
      tslDataSize,
      url,
      urlSize,
    );
  }

  late final _id3BiosealLotl_GetManifestUrlPtr = _lookup<
      ffi.NativeFunction<
          ffi.Int Function(
              ID3_BIOSEAL_LOTL,
              ffi.Pointer<ffi.UnsignedChar>,
              ffi.Int,
              ffi.Pointer<ffi.Char>,
              ffi.Pointer<ffi.Int>)>>('id3BiosealLotl_GetManifestUrl');
  late final _id3BiosealLotl_GetManifestUrl =
      _id3BiosealLotl_GetManifestUrlPtr.asFunction<
          int Function(ID3_BIOSEAL_LOTL, ffi.Pointer<ffi.UnsignedChar>, int,
              ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Int>)>();

  late final addresses = _SymbolAddresses(this);
}

class _SymbolAddresses {
  final BiosealSDK _library;
  _SymbolAddresses(this._library);
  ffi.Pointer<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME>)>>
      get id3BiosealDateTime_Dispose => _library._id3BiosealDateTime_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_STRING_ARRAY>)>>
      get id3BiosealStringArray_Dispose =>
          _library._id3BiosealStringArray_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DATE_TIME_ARRAY>)>>
      get id3BiosealDateTimeArray_Dispose =>
          _library._id3BiosealDateTimeArray_DisposePtr;
  ffi.Pointer<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION>)>>
      get id3BiosealExtension_Dispose =>
          _library._id3BiosealExtension_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD>)>>
      get id3BiosealField_Dispose => _library._id3BiosealField_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_EXTENSION_LIST>)>>
      get id3BiosealExtensionList_Dispose =>
          _library._id3BiosealExtensionList_DisposePtr;
  ffi.Pointer<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG_ITEM>)>>
      get id3BiosealLogItem_Dispose => _library._id3BiosealLogItem_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOG>)>>
      get id3BiosealLog_Dispose => _library._id3BiosealLog_DisposePtr;
  ffi.Pointer<
          ffi
          .NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_MANIFEST>)>>
      get id3BiosealManifest_Dispose => _library._id3BiosealManifest_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS>)>>
      get id3BiosealResourceCallbackArgs_Dispose =>
          _library._id3BiosealResourceCallbackArgs_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION>)>>
      get id3BiosealCertificateExtension_Dispose =>
          _library._id3BiosealCertificateExtension_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST>)>>
      get id3BiosealCertificateExtensionList_Dispose =>
          _library._id3BiosealCertificateExtensionList_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_CERTIFICATE_INFORMATION>)>>
      get id3BiosealCertificateInformation_Dispose =>
          _library._id3BiosealCertificateInformation_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE>)>>
      get id3BiosealBiometricVerificationRule_Dispose =>
          _library._id3BiosealBiometricVerificationRule_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(
                  ffi.Pointer<ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES>)>>
      get id3BiosealBiometricVerificationRules_Dispose =>
          _library._id3BiosealBiometricVerificationRules_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_USER_AUTHENTICATION>)>>
      get id3BiosealUserAuthentication_Dispose =>
          _library._id3BiosealUserAuthentication_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_DECRYPTION_ARGS>)>>
      get id3BiosealDecryptionArgs_Dispose =>
          _library._id3BiosealDecryptionArgs_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_FIELD_LIST>)>>
      get id3BiosealFieldList_Dispose =>
          _library._id3BiosealFieldList_DisposePtr;
  ffi.Pointer<ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL>)>>
      get id3Bioseal_Dispose => _library._id3Bioseal_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<
              ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_BARCODE_READER>)>>
      get id3BiosealBarcodeReader_Dispose =>
          _library._id3BiosealBarcodeReader_DisposePtr;
  ffi.Pointer<
          ffi.NativeFunction<ffi.Int Function(ffi.Pointer<ID3_BIOSEAL_LOTL>)>>
      get id3BiosealLotl_Dispose => _library._id3BiosealLotl_DisposePtr;
}

/// Enumerates the BioSeal formats.
abstract class id3BiosealFormat {
  /// Undefined version.
  static const int id3BiosealFormat_Undefined = 0;

  /// VDS compliant with the AFNOR standard XP Z42-101.
  static const int id3BiosealFormat_VdsAfnorXpZ42_101 = 1;

  /// BioSeal compliant with the AFNOR XP Z42-105 standard and Otentik code specifications.
  static const int id3BiosealFormat_VdsAfnorXpZ42_105 = 2;

  /// BioSeal compliant with the ISO 22376:2023 specifications.
  static const int id3BiosealFormat_VdsIso22376_2023 = 3;

  /// BioSeal compliant with the ISO 22376:2023 specifications prefixed by the instance's ISO 15459 Issuing Agency Code.
  static const int id3BiosealFormat_VdsIso22376WithIso15459Prefix = 4;

  /// BioSeal compliant with the AFNOR XP Z42-105 standard prefixed by the instance's ISO 15459 Issuing Agency Code.
  static const int id3BiosealFormat_VdsAfnorXpZ42105WithIso15459Prefix = 5;
}

final class id3BiosealDateTime extends ffi.Opaque {}

/// Handle to a DateTime object of the Bioseal module.
typedef ID3_BIOSEAL_DATE_TIME = ffi.Pointer<id3BiosealDateTime>;

/// Enumerates the field types present in the payload.
abstract class id3BiosealFieldType {
  /// Unknown type.
  static const int id3BiosealFieldType_Unknown = 0;

  /// Integer.
  static const int id3BiosealFieldType_Integer = 1;

  /// Boolean.
  static const int id3BiosealFieldType_Boolean = 2;

  /// Float.
  static const int id3BiosealFieldType_Float = 3;

  /// String.
  static const int id3BiosealFieldType_String = 4;

  /// Binary.
  static const int id3BiosealFieldType_Binary = 5;

  /// Date.
  static const int id3BiosealFieldType_Date = 6;

  /// Value representing the number of seconds since 1970-01-01 00:00:00 UTC.
  static const int id3BiosealFieldType_Timestamp = 7;

  /// Time.
  static const int id3BiosealFieldType_Time = 8;

  /// Object.
  static const int id3BiosealFieldType_Object = 9;

  /// Integer array.
  static const int id3BiosealFieldType_IntegerArray = 10;

  /// Boolean array.
  static const int id3BiosealFieldType_BooleanArray = 11;

  /// Float array.
  static const int id3BiosealFieldType_FloatArray = 12;

  /// String array.
  static const int id3BiosealFieldType_StringArray = 13;

  /// Binary array.
  static const int id3BiosealFieldType_BinaryArray = 14;

  /// Date array.
  static const int id3BiosealFieldType_DateArray = 15;

  /// Date array.
  static const int id3BiosealFieldType_TimestampArray = 16;

  /// Object array.
  static const int id3BiosealFieldType_ObjectArray = 17;
}

final class id3BiosealStringArray extends ffi.Opaque {}

/// Handle to a StringArray object of the Bioseal module.
typedef ID3_BIOSEAL_STRING_ARRAY = ffi.Pointer<id3BiosealStringArray>;

final class id3BiosealDateTimeArray extends ffi.Opaque {}

/// Handle to a DateTimeArray object of the Bioseal module.
typedef ID3_BIOSEAL_DATE_TIME_ARRAY = ffi.Pointer<id3BiosealDateTimeArray>;

/// Enumerates the field extension types.
abstract class id3BiosealFieldExtensionType {
  /// No information given.
  static const int id3BiosealFieldExtensionType_None = 0;

  /// No information given.
  static const int id3BiosealFieldExtensionType_Unknown = 1;

  /// The Image extension specifies the expected type and format of the image data.
  static const int id3BiosealFieldExtensionType_Image = 2;

  /// The Portrait extension specifies the guidelines to create the portrait image.
  static const int id3BiosealFieldExtensionType_Portrait = 3;

  /// The Biometric extension specifies the expected type and format of the biometric data in the payload.
  static const int id3BiosealFieldExtensionType_Biometric = 4;

  /// The Compression extension specifies the compression parameters.
  static const int id3BiosealFieldExtensionType_Compression = 5;

  /// The Encryption extension is used to maintain the confidentiality of specific data in the payload.
  static const int id3BiosealFieldExtensionType_Encryption = 6;
}

final class id3BiosealExtension extends ffi.Opaque {}

/// Handle to a Extension object of the Bioseal module.
typedef ID3_BIOSEAL_EXTENSION = ffi.Pointer<id3BiosealExtension>;

/// Enumerates the visibility conditions.
/// Note: The optional visibility condition extension indicates under which condition the presentation view or certain field in the presentation view should be displayed.
abstract class id3BiosealVisibilityCondition {
  /// The presentation view or the specified field shall always be displayed. This is the default value.
  static const int id3BiosealVisibilityCondition_Always = 0;

  /// The BioSeal signature must be valid.
  static const int id3BiosealVisibilityCondition_SignatureValidated = 1;

  /// The signature must be valid and the bioseal must not be expired.
  static const int id3BiosealVisibilityCondition_NotExpired = 2;

  /// The above conditions must be met, and user authentication must be successful.
  static const int id3BiosealVisibilityCondition_UserAuthenticated = 3;

  /// The presentation view or the specified field must never be displayed. In this case, the application must not inject the data into the presentation view.
  static const int id3BiosealVisibilityCondition_Never = 4;
}

/// Enumerates the supported biometric data types.
abstract class id3BiosealBiometricDataType {
  /// The biometric data type is a undefined.
  static const int id3BiosealBiometricDataType_Undefined = 0;

  /// No information given.
  static const int id3BiosealBiometricDataType_NoInformationGiven = 1;

  /// Multiple biometric data used.
  static const int id3BiosealBiometricDataType_MultipleBiometricsUsed = 2;

  /// Facial features data.
  static const int id3BiosealBiometricDataType_FacialFeatures = 3;

  /// Voice data.
  static const int id3BiosealBiometricDataType_Voice = 4;

  /// Fingerprint data.
  static const int id3BiosealBiometricDataType_Fingerprint = 5;

  /// Iris data.
  static const int id3BiosealBiometricDataType_Iris = 6;

  /// Retina data.
  static const int id3BiosealBiometricDataType_Retina = 7;

  /// Hand geometry.
  static const int id3BiosealBiometricDataType_HandGeometry = 8;

  /// Signature dynamics.
  static const int id3BiosealBiometricDataType_SignatureDynamics = 9;

  /// Keystroke dynamics.
  static const int id3BiosealBiometricDataType_KeystrokeDynamics = 10;

  /// Lip movement.
  static const int id3BiosealBiometricDataType_LipMovement = 11;

  /// Thermal face image.
  static const int id3BiosealBiometricDataType_ThermalFaceImage = 12;

  /// Thermal hand image.
  static const int id3BiosealBiometricDataType_ThermalHandImage = 13;

  /// Gait.
  static const int id3BiosealBiometricDataType_Gait = 14;

  /// Body odor.
  static const int id3BiosealBiometricDataType_BodyOdor = 15;

  /// DNA.
  static const int id3BiosealBiometricDataType_Dna = 16;

  /// Ear shape.
  static const int id3BiosealBiometricDataType_EarShape = 17;

  /// Finger geometry.
  static const int id3BiosealBiometricDataType_FingerGeometry = 18;

  /// Palmprint data.
  static const int id3BiosealBiometricDataType_PalmPrint = 19;

  /// Vein pattern
  static const int id3BiosealBiometricDataType_VeinPattern = 20;

  /// Footprint data.
  static const int id3BiosealBiometricDataType_FootPrint = 21;
}

final class id3BiosealField extends ffi.Opaque {}

/// Handle to a Field object of the Bioseal module.
typedef ID3_BIOSEAL_FIELD = ffi.Pointer<id3BiosealField>;

final class id3BiosealExtensionList extends ffi.Opaque {}

/// Handle to a ExtensionList object of the Bioseal module.
typedef ID3_BIOSEAL_EXTENSION_LIST = ffi.Pointer<id3BiosealExtensionList>;

/// Enumerates the log item types.
abstract class id3BiosealLogItemType {
  /// The log item is an undefined.
  static const int id3BiosealLogItemType_Undefined = 0;

  /// The log item is an information.
  static const int id3BiosealLogItemType_Information = 1;

  /// The log item is a warning.
  static const int id3BiosealLogItemType_Warning = 2;

  /// The log item is an error.
  static const int id3BiosealLogItemType_Error = 3;

  /// The log item is for debug only.
  static const int id3BiosealLogItemType_Debug = 4;
}

/// Enumerates the error codes.
abstract class id3BiosealError {
  /// No error.
  static const int id3BiosealError_Success = 0;

  /// The given buffer is too small.
  static const int id3BiosealError_InsufficientBuffer = -1;

  /// The requested object does not exist; a 'null' should be returned if possible.
  static const int id3BiosealError_ObjectDoesNotExist = -2;

  /// Base error code for BioSeal module.
  static const int id3BiosealError_Base = -8000;

  /// Minimum error code for BioSeal module.
  static const int id3BiosealError_Minimum = -8999;

  /// The handle is invalid.
  static const int id3BiosealError_InvalidHandle = -8001;

  /// The parameter is invalid.
  static const int id3BiosealError_InvalidParameter = -8002;

  /// An exception was fired in the callback.
  static const int id3BiosealError_ExceptionInCallback = -8003;

  /// An exception was fired in JNI.
  static const int id3BiosealError_JavaException = -8004;

  /// Resource not found.
  static const int id3BiosealError_ResourceNotFound = -8005;

  /// An internal error has been fired.
  static const int id3BiosealError_MemoryError = -8006;

  /// An memory error has been fired.
  static const int id3BiosealError_InternalError = -8007;

  /// Error in the internal download process.
  static const int id3BiosealError_DownloadError = -8008;

  /// Invalid input format.
  static const int id3BiosealError_InvalidInputFormat = -8009;

  /// The LOTL is malformed.
  static const int id3BiosealError_BadInputLotl = -8010;

  /// The TSL does not conform to ETSI TS 119 612.
  static const int id3BiosealError_BadInputTsl = -8011;

  /// The manifest is malformed.
  static const int id3BiosealError_BadInputManifest = -8012;

  /// An unsupported Afnor XP Z42-101 identifier was found.
  static const int id3BiosealError_UnsupportedAfnorXpZ42_101Id = -8013;

  /// Decoding failed.
  static const int id3BiosealError_DecodingFailed = -8014;

  /// The BioSeal as expired.
  static const int id3BiosealError_BiosealExpired = -8015;

  /// Invalid certification chain.
  static const int id3BiosealError_InvalidCertificationChain = -8016;

  /// Invalid signature.
  static const int id3BiosealError_InvalidSignature = -8017;

  /// Authorized usage failed.
  static const int id3BiosealError_AuthorizedUsageFailed = -8018;

  /// The signing certificate was expired when the BioSeal was generated.
  static const int id3BiosealError_SigningCertificateExpired = -8019;

  /// Invalid revocation info validity period.
  static const int id3BiosealError_RevocationInfoValidityPeriod = -8020;

  /// An unexpected error occurred during decryption..
  static const int id3BiosealError_DecryptionError = -8021;

  /// Language not found.
  static const int id3BiosealError_LanguageNotAvailable = -8022;

  /// The BioSeal was not decoded.
  static const int id3BiosealError_BiosealNotDecoded = -8023;

  /// Function or request not supported.
  static const int id3BiosealError_NotSupported = -8024;

  /// Unable to verify the certificate chain.
  static const int id3BiosealError_UnableToVerifyCertificateChain = -8025;

  /// Need to verify the BioSeal.
  static const int id3BiosealError_NeedToVerify = -8026;

  /// No signature found.
  static const int id3BiosealError_NoSignatureFound = -8027;

  /// This function is not implemented.
  static const int id3BiosealError_FunctionNotImplemented = -8028;

  /// No certificate found.
  static const int id3BiosealError_NoCertificateFound = -8029;

  /// Internal SSL error.
  static const int id3BiosealError_InternalSslError = -8030;

  /// Unable to parse the given URL.
  static const int id3BiosealError_UrlParsingError = -8031;

  /// Document issuing country not supported.
  static const int id3BiosealError_UnsupportedDocumentIssuingCountry = -8032;

  /// Incorrect issuing agency code (IAC) in code prefix.
  static const int id3BiosealError_WrongPrefix = -8033;

  /// TODO
  static const int id3BiosealError_DuplicateManifestField = -8034;
}

final class id3BiosealLogItem extends ffi.Opaque {}

/// Handle to a LogItem object of the Bioseal module.
typedef ID3_BIOSEAL_LOG_ITEM = ffi.Pointer<id3BiosealLogItem>;

final class id3BiosealLog extends ffi.Opaque {}

/// Handle to a Log object of the Bioseal module.
typedef ID3_BIOSEAL_LOG = ffi.Pointer<id3BiosealLog>;

final class id3BiosealManifest extends ffi.Opaque {}

/// Handle to a Manifest object of the Bioseal module.
typedef ID3_BIOSEAL_MANIFEST = ffi.Pointer<id3BiosealManifest>;

/// Enumerates the resource type for resource callback args.
abstract class id3BiosealResourceType {
  /// The resource is a undefined.
  static const int id3BiosealResourceType_Undefined = 0;

  /// The resource is a manifest.
  static const int id3BiosealResourceType_Manifest = 1;

  /// The resource is a certificate.
  static const int id3BiosealResourceType_Certificate = 2;

  /// The resource is a TSL.
  static const int id3BiosealResourceType_Tsl = 3;

  /// The resource is a CRL.
  static const int id3BiosealResourceType_Crl = 4;

  /// The resource is a LOTL.
  static const int id3BiosealResourceType_Lotl = 5;

  /// The resource is a PKCS7 P7S file.
  static const int id3BiosealResourceType_P7S = 6;
}

final class id3BiosealResourceCallbackArgs extends ffi.Opaque {}

/// Handle to a ResourceCallbackArgs object of the Bioseal module.
typedef ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS
    = ffi.Pointer<id3BiosealResourceCallbackArgs>;

final class id3BiosealCertificateExtension extends ffi.Opaque {}

/// Handle to a CertificateExtension object of the Bioseal module.
typedef ID3_BIOSEAL_CERTIFICATE_EXTENSION
    = ffi.Pointer<id3BiosealCertificateExtension>;

final class id3BiosealCertificateExtensionList extends ffi.Opaque {}

/// Handle to a CertificateExtensionList object of the Bioseal module.
typedef ID3_BIOSEAL_CERTIFICATE_EXTENSION_LIST
    = ffi.Pointer<id3BiosealCertificateExtensionList>;

final class id3BiosealCertificateInformation extends ffi.Opaque {}

/// Handle to a CertificateInformation object of the Bioseal module.
typedef ID3_BIOSEAL_CERTIFICATE_INFORMATION
    = ffi.Pointer<id3BiosealCertificateInformation>;

final class id3BiosealBiometricVerificationRule extends ffi.Opaque {}

/// Handle to a BiometricVerificationRule object of the Bioseal module.
typedef ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULE
    = ffi.Pointer<id3BiosealBiometricVerificationRule>;

final class id3BiosealBiometricVerificationRules extends ffi.Opaque {}

/// Handle to a BiometricVerificationRules object of the Bioseal module.
typedef ID3_BIOSEAL_BIOMETRIC_VERIFICATION_RULES
    = ffi.Pointer<id3BiosealBiometricVerificationRules>;

/// Enumerates the user authentication methods.
abstract class id3BiosealUserAuthenticationMethod {
  /// The method is undefined.
  static const int id3BiosealUserAuthenticationMethod_Undefined = 0;

  /// A password must be entered to authenticate.
  static const int id3BiosealUserAuthenticationMethod_Password = 1;

  /// The user must present a biometric trait to authenticate.
  static const int id3BiosealUserAuthenticationMethod_Biometrics = 2;
}

final class id3BiosealUserAuthentication extends ffi.Opaque {}

/// Handle to a UserAuthentication object of the Bioseal module.
typedef ID3_BIOSEAL_USER_AUTHENTICATION
    = ffi.Pointer<id3BiosealUserAuthentication>;

final class id3BiosealDecryptionArgs extends ffi.Opaque {}

/// Handle to a DecryptionArgs object of the Bioseal module.
typedef ID3_BIOSEAL_DECRYPTION_ARGS = ffi.Pointer<id3BiosealDecryptionArgs>;

/// Contains data for VerificationResult
final class id3BiosealVerificationResult extends ffi.Struct {
  /// Indicates whether the certification chain has been verified.
  @ffi.Int()
  external int CertificationChainVerified;

  /// Indicates whether the governance that issued the VDS is valid.
  @ffi.Int()
  external int GovernanceValid;

  /// Indicates whether the LoTL governance that issued the VDS is valid.
  @ffi.Int()
  external int LotlGovernanceValid;

  /// Indicates whether the TSL governance that issued the VDS is valid.
  @ffi.Int()
  external int TslGovernanceValid;

  /// Indicates whether the manifest governance that issued the VDS is valid.
  @ffi.Int()
  external int ManifestGovernanceValid;

  /// Indicates whether the VDS is still valid, ie. it has not expired.
  @ffi.Int()
  external int VdsNotExpired;

  /// Indicates whether the signature of the VDS has been verified.
  @ffi.Int()
  external int VdsSignatureVerified;

  /// Indicates whether the CA certificate has been verified.
  @ffi.Int()
  external int CaCertificateVerified;

  /// Indicates whether the signing certificate was legitimately authorized to sign the VDS.
  @ffi.Int()
  external int SigningCertificateUsageAuthorized;
}

final class id3BiosealFieldList extends ffi.Opaque {}

/// Handle to a FieldList object of the Bioseal module.
typedef ID3_BIOSEAL_FIELD_LIST = ffi.Pointer<id3BiosealFieldList>;

final class id3Bioseal extends ffi.Opaque {}

/// Handle to a Bioseal object of the Bioseal module.
typedef ID3_BIOSEAL = ffi.Pointer<id3Bioseal>;

/// Represents the method that will handle a resource callback.
/// @param context [in] The callback context.
/// @param hArgs [in] The resource callback arguments. See ResourceCallbackArgs for details.
/// @return An error code. See id3BiosealError file for the list of possible error codes.
/// @retval id3BiosealError_Success The function succeeded.
typedef id3BiosealResourceCallbackHandler = ffi.Pointer<
    ffi.NativeFunction<
        ffi.Int Function(ffi.Pointer<ffi.Void> context,
            ID3_BIOSEAL_RESOURCE_CALLBACK_ARGS hArgs)>>;

/// Represents the method that will handle a decryption callback.
/// @param context [in] The callback context.
/// @param hArgs [in] The decryption callback arguments. See DecryptionArgs for details.
/// @return An error code. See id3BiosealError file for the list of possible error codes.
/// @retval id3BiosealError_Success The function succeeded.
typedef id3BiosealDecryptionCallbackHandler = ffi.Pointer<
    ffi.NativeFunction<
        ffi.Int Function(
            ffi.Pointer<ffi.Void> context, ID3_BIOSEAL_DECRYPTION_ARGS hArgs)>>;

final class id3BiosealBarcodeReader extends ffi.Opaque {}

/// Handle to a BarcodeReader object of the Bioseal module.
typedef ID3_BIOSEAL_BARCODE_READER = ffi.Pointer<id3BiosealBarcodeReader>;

/// Contains data for LibVersion
final class id3BiosealLibVersion extends ffi.Struct {
  /// Version.
  @ffi.Int()
  external int Major;

  /// Release.
  @ffi.Int()
  external int Minor;

  /// Build.
  @ffi.Int()
  external int Build;
}

/// Enumerates the license types.
abstract class id3BiosealLicenseType {
  /// Classic id3 license.
  static const int id3BiosealLicenseType_Classic = 1;

  /// Trial id3 license with a time limitation.
  static const int id3BiosealLicenseType_Trial = 2;

  /// Online id3 license with an online check.
  static const int id3BiosealLicenseType_Online = 3;
}

/// Enumerates the types of hardware codes.
abstract class id3BiosealLicenseHardwareCodeType {
  /// License locked on Windows OS.
  static const int id3BiosealLicenseHardwareCodeType_WindowsOs = 1;

  /// License locked on Linux OS.
  static const int id3BiosealLicenseHardwareCodeType_LinuxOs = 3;

  /// License locked on Android device.
  static const int id3BiosealLicenseHardwareCodeType_Android = 5;

  /// License locked on Android application package name.
  static const int id3BiosealLicenseHardwareCodeType_AndroidPackageName = 6;

  /// License locked on iOS device.
  static const int id3BiosealLicenseHardwareCodeType_Ios = 7;

  /// License locked on macOS.
  static const int id3BiosealLicenseHardwareCodeType_MacOs = 8;

  /// License locked on Jetson Nano.
  static const int id3BiosealLicenseHardwareCodeType_JetsonNano = 9;

  /// License locked on iOS application Bundle ID.
  static const int id3BiosealLicenseHardwareCodeType_IosBundleId = 10;

  /// License locked on Windows USB stick.
  static const int id3BiosealLicenseHardwareCodeType_WindowsUsb = 11;

  /// License locked on a smart card.
  static const int id3BiosealLicenseHardwareCodeType_SmartCard = 12;

  /// License locked on a application.
  static const int id3BiosealLicenseHardwareCodeType_Application = 13;
}

/// Enumerates the error codes related to license management.
abstract class id3BiosealLicenseError {
  /// No error.
  static const int id3BiosealLicenseError_Success = 0;

  /// The given buffer is too small.
  static const int id3BiosealLicenseError_InsufficientBuffer = -1;

  /// The requested object does not exist; a 'null' should be returned if possible.
  static const int id3BiosealLicenseError_ObjectDoesNotExist = -2;

  /// Base error code of the License module.
  static const int id3BiosealLicenseError_Base = -100;

  /// Minimum error code of the License module.
  static const int id3BiosealLicenseError_Minimum = -999;

  /// The handle is invalid.
  static const int id3BiosealLicenseError_InvalidHandle = -101;

  /// One of the parameters is incorrect.
  static const int id3BiosealLicenseError_InvalidParameter = -102;

  /// No license was found.
  static const int id3BiosealLicenseError_LicenseNotFound = -103;

  /// License is not valid or a required module is not licensed.
  static const int id3BiosealLicenseError_InvalidLicense = -104;

  /// The license has expired.
  static const int id3BiosealLicenseError_ExpiredLicense = -105;

  /// Installation code does not match hardware ID.
  static const int id3BiosealLicenseError_InvalidHardwareId = -106;

  /// The license is already fulfilled by another user (or computer).
  static const int id3BiosealLicenseError_AlreadyFulfilled = -107;

  /// A required module is not licensed or the usage limit has been reached.
  static const int id3BiosealLicenseError_ModuleError = -108;

  /// The license file cannot be accessed in write mode.
  static const int id3BiosealLicenseError_WriteError = -109;

  /// The number of available licenses has been reached. There isn't any available license remaining.
  static const int id3BiosealLicenseError_InsufficientLicenseCredits = -110;

  /// The serial is invalid.
  static const int id3BiosealLicenseError_InvalidSerial = -111;

  /// Invalid login or password.
  static const int id3BiosealLicenseError_InvalidCredentials = -112;

  /// The license is revoked or does not exist anymore.
  static const int id3BiosealLicenseError_RevokedLicense = -113;

  /// The license is blocked after a predefined period.
  static const int id3BiosealLicenseError_BlockedLicense = -114;

  /// The license server is currently unreachable.
  static const int id3BiosealLicenseError_UnreachableServer = -115;

  /// An unexpected error happened.
  static const int id3BiosealLicenseError_LicenseOtherError = -116;

  /// No license file was provided.
  static const int id3BiosealLicenseError_MissingFile = -117;

  /// This device is not compatible with id3 licensing system.
  static const int id3BiosealLicenseError_DeviceNotCompatible = -118;

  /// The activation of the license has failed.
  static const int id3BiosealLicenseError_ActivationFailed = -119;

  /// The license web services are unavailable.
  static const int id3BiosealLicenseError_ServiceUnavailable = -120;

  /// The license is not renewable.
  static const int id3BiosealLicenseError_NotRenewable = -121;

  /// The digest is invalid. The received file may be corrupted.
  static const int id3BiosealLicenseError_DigestInvalid = -122;

  /// No credit available for this product.
  static const int id3BiosealLicenseError_ProductUnavailable = -123;

  /// You are not allowed to do this.
  static const int id3BiosealLicenseError_UnauthorizedAction = -124;

  /// The license will be shortly blocked.
  static const int id3BiosealLicenseError_PreBlockedLicense = -125;
}

final class id3BiosealLotl extends ffi.Opaque {}

/// Handle to a Lotl object of the Bioseal module.
typedef ID3_BIOSEAL_LOTL = ffi.Pointer<id3BiosealLotl>;

const int true1 = 1;

const int false1 = 0;

const int __bool_true_false_are_defined = 1;

const int ID3BIOSEAL_VERSION_MAJOR = 1;

const int ID3BIOSEAL_VERSION_MINOR = 52;

const int ID3BIOSEAL_VERSION_BUILD = 0;
