// generated by diplomat-tool
// dart format off

part of 'lib.g.dart';

/// See the [Rust documentation for `Decimal`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html) for more information.
final class Decimal implements ffi.Finalizable {
  final ffi.Pointer<ffi.Opaque> _ffi;

  // These are "used" in the sense that they keep dependencies alive
  // ignore: unused_field
  final core.List<Object> _selfEdge;

  // This takes in a list of lifetime edges (including for &self borrows)
  // corresponding to data this may borrow from. These should be flat arrays containing
  // references to objects, and this object will hold on to them to keep them alive and
  // maintain borrow validity.
  Decimal._fromFfi(this._ffi, this._selfEdge) {
    if (_selfEdge.isEmpty) {
      _icu4x_Decimal_destroy_mv1(this, _ffi.cast());
    }
  }

  // ignore: experimental_member_use
  @meta.RecordUse()
  // ignore: non_constant_identifier_names
  static void _icu4x_Decimal_destroy_mv1(Decimal cl, ffi.Pointer<ffi.Void> pointer) => _finalizer.attach(cl, pointer);

  static final _finalizer = ffi.NativeFinalizer(ffi.Native.addressOf(_internal_icu4x_Decimal_destroy_mv1));

  /// Construct an [Decimal] from an integer.
  ///
  /// See the [Rust documentation for `Decimal`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html) for more information.
  factory Decimal.fromInt(int v) {
    final result = _icu4x_Decimal_from_int64_mv1(v);
    return Decimal._fromFfi(result, []);
  }

  /// Construct an [Decimal] from an float, with a given power of 10 for the lower magnitude
  ///
  /// See the [Rust documentation for `try_from_f64`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.try_from_f64) for more information.
  ///
  /// See the [Rust documentation for `FloatPrecision`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/enum.FloatPrecision.html) for more information.
  ///
  /// Throws [DecimalLimitError] on failure.
  factory Decimal.fromDoubleWithLowerMagnitude(double f, int magnitude) {
    final result = _icu4x_Decimal_from_double_with_lower_magnitude_mv1(f, magnitude);
    if (!result.isOk) {
      throw DecimalLimitError();
    }
    return Decimal._fromFfi(result.union.ok, []);
  }

  /// Construct an [Decimal] from an float, for a given number of significant digits
  ///
  /// See the [Rust documentation for `try_from_f64`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.try_from_f64) for more information.
  ///
  /// See the [Rust documentation for `FloatPrecision`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/enum.FloatPrecision.html) for more information.
  ///
  /// Throws [DecimalLimitError] on failure.
  factory Decimal.fromDoubleWithSignificantDigits(double f, int digits) {
    final result = _icu4x_Decimal_from_double_with_significant_digits_mv1(f, digits);
    if (!result.isOk) {
      throw DecimalLimitError();
    }
    return Decimal._fromFfi(result.union.ok, []);
  }

  /// Construct an [Decimal] from an float, with enough digits to recover
  /// the original floating point in IEEE 754 without needing trailing zeros
  ///
  /// See the [Rust documentation for `try_from_f64`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.try_from_f64) for more information.
  ///
  /// See the [Rust documentation for `FloatPrecision`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/enum.FloatPrecision.html) for more information.
  ///
  /// Throws [DecimalLimitError] on failure.
  factory Decimal.fromDoubleWithRoundTripPrecision(double f) {
    final result = _icu4x_Decimal_from_double_with_round_trip_precision_mv1(f);
    if (!result.isOk) {
      throw DecimalLimitError();
    }
    return Decimal._fromFfi(result.union.ok, []);
  }

  /// Construct an [Decimal] from a string.
  ///
  /// See the [Rust documentation for `try_from_str`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.try_from_str) for more information.
  ///
  /// Throws [DecimalParseError] on failure.
  factory Decimal.fromString(String v) {
    final temp = _FinalizedArena();
    final result = _icu4x_Decimal_from_string_mv1(v._utf8AllocIn(temp.arena));
    if (!result.isOk) {
      throw DecimalParseError.values[result.union.err];
    }
    return Decimal._fromFfi(result.union.ok, []);
  }

  /// See the [Rust documentation for `digit_at`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.digit_at) for more information.
  int digitAt(int magnitude) {
    final result = _icu4x_Decimal_digit_at_mv1(_ffi, magnitude);
    return result;
  }

  /// See the [Rust documentation for `magnitude_range`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.magnitude_range) for more information.
  int get magnitudeStart {
    final result = _icu4x_Decimal_magnitude_start_mv1(_ffi);
    return result;
  }

  /// See the [Rust documentation for `magnitude_range`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.magnitude_range) for more information.
  int get magnitudeEnd {
    final result = _icu4x_Decimal_magnitude_end_mv1(_ffi);
    return result;
  }

  /// See the [Rust documentation for `nonzero_magnitude_start`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.nonzero_magnitude_start) for more information.
  int get nonzeroMagnitudeStart {
    final result = _icu4x_Decimal_nonzero_magnitude_start_mv1(_ffi);
    return result;
  }

  /// See the [Rust documentation for `nonzero_magnitude_end`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.nonzero_magnitude_end) for more information.
  int get nonzeroMagnitudeEnd {
    final result = _icu4x_Decimal_nonzero_magnitude_end_mv1(_ffi);
    return result;
  }

  /// See the [Rust documentation for `is_zero`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.is_zero) for more information.
  bool get isZero {
    final result = _icu4x_Decimal_is_zero_mv1(_ffi);
    return result;
  }

  /// Multiply the [Decimal] by a given power of ten.
  ///
  /// See the [Rust documentation for `multiply_pow10`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.multiply_pow10) for more information.
  void multiplyPow10(int power) {
    _icu4x_Decimal_multiply_pow10_mv1(_ffi, power);
  }

  /// See the [Rust documentation for `sign`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.sign) for more information.
  DecimalSign get sign {
    final result = _icu4x_Decimal_sign_mv1(_ffi);
    return DecimalSign.values[result];
  }

  /// Set the sign of the [Decimal].
  ///
  /// See the [Rust documentation for `set_sign`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.set_sign) for more information.
  set sign(DecimalSign sign) {
    _icu4x_Decimal_set_sign_mv1(_ffi, sign.index);
  }

  /// See the [Rust documentation for `apply_sign_display`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.apply_sign_display) for more information.
  void applySignDisplay(DecimalSignDisplay signDisplay) {
    _icu4x_Decimal_apply_sign_display_mv1(_ffi, signDisplay.index);
  }

  /// See the [Rust documentation for `trim_start`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.trim_start) for more information.
  void trimStart() {
    _icu4x_Decimal_trim_start_mv1(_ffi);
  }

  /// See the [Rust documentation for `trim_end`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.trim_end) for more information.
  void trimEnd() {
    _icu4x_Decimal_trim_end_mv1(_ffi);
  }

  /// See the [Rust documentation for `trim_end_if_integer`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.trim_end_if_integer) for more information.
  void trimEndIfInteger() {
    _icu4x_Decimal_trim_end_if_integer_mv1(_ffi);
  }

  /// Zero-pad the [Decimal] on the left to a particular position
  ///
  /// See the [Rust documentation for `pad_start`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.pad_start) for more information.
  void padStart(int position) {
    _icu4x_Decimal_pad_start_mv1(_ffi, position);
  }

  /// Zero-pad the [Decimal] on the right to a particular position
  ///
  /// See the [Rust documentation for `pad_end`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.pad_end) for more information.
  void padEnd(int position) {
    _icu4x_Decimal_pad_end_mv1(_ffi, position);
  }

  /// Truncate the [Decimal] on the left to a particular position, deleting digits if necessary. This is useful for, e.g. abbreviating years
  /// ("2022" -> "22")
  ///
  /// See the [Rust documentation for `set_max_position`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.set_max_position) for more information.
  void setMaxPosition(int position) {
    _icu4x_Decimal_set_max_position_mv1(_ffi, position);
  }

  /// Round the number at a particular digit position.
  ///
  /// This uses half to even rounding, which resolves ties by selecting the nearest
  /// even integer to the original value.
  ///
  /// See the [Rust documentation for `round`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.round) for more information.
  void round(int position) {
    _icu4x_Decimal_round_mv1(_ffi, position);
  }

  /// See the [Rust documentation for `ceil`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.ceil) for more information.
  void ceil(int position) {
    _icu4x_Decimal_ceil_mv1(_ffi, position);
  }

  /// See the [Rust documentation for `expand`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.expand) for more information.
  void expand(int position) {
    _icu4x_Decimal_expand_mv1(_ffi, position);
  }

  /// See the [Rust documentation for `floor`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.floor) for more information.
  void floor(int position) {
    _icu4x_Decimal_floor_mv1(_ffi, position);
  }

  /// See the [Rust documentation for `trunc`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.trunc) for more information.
  void trunc(int position) {
    _icu4x_Decimal_trunc_mv1(_ffi, position);
  }

  /// See the [Rust documentation for `round_with_mode`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.round_with_mode) for more information.
  void roundWithMode(int position, DecimalSignedRoundingMode mode) {
    _icu4x_Decimal_round_with_mode_mv1(_ffi, position, mode.index);
  }

  /// See the [Rust documentation for `round_with_mode_and_increment`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.round_with_mode_and_increment) for more information.
  void roundWithModeAndIncrement(int position, DecimalSignedRoundingMode mode, DecimalRoundingIncrement increment) {
    _icu4x_Decimal_round_with_mode_and_increment_mv1(_ffi, position, mode.index, increment.index);
  }

  /// Concatenates `other` to the end of `self`.
  ///
  /// If successful, `other` will be set to 0 and a successful status is returned.
  ///
  /// If not successful, `other` will be unchanged and an error is returned.
  ///
  /// See the [Rust documentation for `concatenate_end`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.concatenate_end) for more information.
  bool concatenateEnd(Decimal other) {
    final result = _icu4x_Decimal_concatenate_end_mv1(_ffi, other._ffi);
    return result.isOk;
  }

  /// Format the [Decimal] as a string.
  ///
  /// See the [Rust documentation for `write_to`](https://docs.rs/fixed_decimal/0.7.2/fixed_decimal/type.Decimal.html#method.write_to) for more information.
  @override
  String toString() {
    final write = _Write();
    _icu4x_Decimal_to_string_mv1(_ffi, write._ffi);
    return write.finalize();
  }

}

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>)>(isLeaf: true, symbol: 'icu4x_Decimal_destroy_mv1')
// ignore: non_constant_identifier_names
external void _internal_icu4x_Decimal_destroy_mv1(ffi.Pointer<ffi.Void> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Pointer<ffi.Opaque> Function(ffi.Int64)>(isLeaf: true, symbol: 'icu4x_Decimal_from_int64_mv1')
// ignore: non_constant_identifier_names
external ffi.Pointer<ffi.Opaque> _icu4x_Decimal_from_int64_mv1(int v);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultOpaqueDecimalLimitErrorFfi Function(ffi.Double, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_from_double_with_lower_magnitude_mv1')
// ignore: non_constant_identifier_names
external _ResultOpaqueDecimalLimitErrorFfi _icu4x_Decimal_from_double_with_lower_magnitude_mv1(double f, int magnitude);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultOpaqueDecimalLimitErrorFfi Function(ffi.Double, ffi.Uint8)>(isLeaf: true, symbol: 'icu4x_Decimal_from_double_with_significant_digits_mv1')
// ignore: non_constant_identifier_names
external _ResultOpaqueDecimalLimitErrorFfi _icu4x_Decimal_from_double_with_significant_digits_mv1(double f, int digits);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultOpaqueDecimalLimitErrorFfi Function(ffi.Double)>(isLeaf: true, symbol: 'icu4x_Decimal_from_double_with_round_trip_precision_mv1')
// ignore: non_constant_identifier_names
external _ResultOpaqueDecimalLimitErrorFfi _icu4x_Decimal_from_double_with_round_trip_precision_mv1(double f);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultOpaqueInt32 Function(_SliceUtf8)>(isLeaf: true, symbol: 'icu4x_Decimal_from_string_mv1')
// ignore: non_constant_identifier_names
external _ResultOpaqueInt32 _icu4x_Decimal_from_string_mv1(_SliceUtf8 v);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Uint8 Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_digit_at_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_digit_at_mv1(ffi.Pointer<ffi.Opaque> self, int magnitude);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int16 Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_magnitude_start_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_magnitude_start_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int16 Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_magnitude_end_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_magnitude_end_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int16 Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_nonzero_magnitude_start_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_nonzero_magnitude_start_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int16 Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_nonzero_magnitude_end_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_nonzero_magnitude_end_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Bool Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_is_zero_mv1')
// ignore: non_constant_identifier_names
external bool _icu4x_Decimal_is_zero_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_multiply_pow10_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_multiply_pow10_mv1(ffi.Pointer<ffi.Opaque> self, int power);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Int32 Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_sign_mv1')
// ignore: non_constant_identifier_names
external int _icu4x_Decimal_sign_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int32)>(isLeaf: true, symbol: 'icu4x_Decimal_set_sign_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_set_sign_mv1(ffi.Pointer<ffi.Opaque> self, int sign);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int32)>(isLeaf: true, symbol: 'icu4x_Decimal_apply_sign_display_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_apply_sign_display_mv1(ffi.Pointer<ffi.Opaque> self, int signDisplay);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_trim_start_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_trim_start_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_trim_end_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_trim_end_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_trim_end_if_integer_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_trim_end_if_integer_mv1(ffi.Pointer<ffi.Opaque> self);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_pad_start_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_pad_start_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_pad_end_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_pad_end_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_set_max_position_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_set_max_position_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_round_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_round_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_ceil_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_ceil_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_expand_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_expand_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_floor_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_floor_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16)>(isLeaf: true, symbol: 'icu4x_Decimal_trunc_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_trunc_mv1(ffi.Pointer<ffi.Opaque> self, int position);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16, ffi.Int32)>(isLeaf: true, symbol: 'icu4x_Decimal_round_with_mode_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_round_with_mode_mv1(ffi.Pointer<ffi.Opaque> self, int position, int mode);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Int16, ffi.Int32, ffi.Int32)>(isLeaf: true, symbol: 'icu4x_Decimal_round_with_mode_and_increment_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_round_with_mode_and_increment_mv1(ffi.Pointer<ffi.Opaque> self, int position, int mode, int increment);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<_ResultVoidVoid Function(ffi.Pointer<ffi.Opaque>, ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_concatenate_end_mv1')
// ignore: non_constant_identifier_names
external _ResultVoidVoid _icu4x_Decimal_concatenate_end_mv1(ffi.Pointer<ffi.Opaque> self, ffi.Pointer<ffi.Opaque> other);

// ignore: experimental_member_use
@meta.RecordUse()
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Opaque>, ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'icu4x_Decimal_to_string_mv1')
// ignore: non_constant_identifier_names
external void _icu4x_Decimal_to_string_mv1(ffi.Pointer<ffi.Opaque> self, ffi.Pointer<ffi.Opaque> write);

// dart format on
