diff --git a/packages/cedar/.gitignore b/packages/cedar/.gitignore new file mode 100644 index 00000000..3cceda55 --- /dev/null +++ b/packages/cedar/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/packages/cedar/CHANGELOG.md b/packages/cedar/CHANGELOG.md new file mode 100644 index 00000000..a0712a79 --- /dev/null +++ b/packages/cedar/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.1.0 + +- Initial version. diff --git a/packages/cedar/README.md b/packages/cedar/README.md new file mode 100644 index 00000000..73d4f385 --- /dev/null +++ b/packages/cedar/README.md @@ -0,0 +1,5 @@ +# cedar + +Base types and utilities of the Cedar language in Dart. + +This is separate from `package:cedar` so that the types can be used without bundling the native assets of `package:cedar`. diff --git a/packages/cedar/analysis_options.yaml b/packages/cedar/analysis_options.yaml new file mode 100644 index 00000000..dee8927a --- /dev/null +++ b/packages/cedar/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/packages/cedar/lib/cedar.dart b/packages/cedar/lib/cedar.dart new file mode 100644 index 00000000..9ce90586 --- /dev/null +++ b/packages/cedar/lib/cedar.dart @@ -0,0 +1,17 @@ +/// Core types and interfaces of the Cedar policy language in Dart. +/// +/// This is separate from `package:cedar_ffi` so that the types can be used +/// without bundling the native assets of `package:cedar_ffi`. +library; + +export 'src/ast/cedar_entity.dart'; +export 'src/ast/cedar_entity_id.dart'; +export 'src/ast/cedar_node.dart'; +export 'src/ast/cedar_schema.dart'; +export 'src/authorization/cedar_authorization_request.dart'; +export 'src/authorization/cedar_authorization_response.dart'; +export 'src/authorization/cedar_authorizer.dart'; +export 'src/policy/cedar_policy.dart'; +export 'src/policy/cedar_policy_set.dart'; +export 'src/policy/json_expr.dart'; +export 'src/serializers.dart'; diff --git a/packages/cedar/lib/src/ast/cedar_entity.dart b/packages/cedar/lib/src/ast/cedar_entity.dart new file mode 100644 index 00000000..9e905e38 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_entity.dart @@ -0,0 +1,54 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:cedar/src/ast/cedar_entity_id.dart'; +import 'package:cedar/src/ast/cedar_node.dart'; +import 'package:cedar/src/policy/json_expr.dart'; + +part 'cedar_entity.g.dart'; + +abstract class CedarEntity + implements Built, CedarNode { + factory CedarEntity({ + required CedarEntityId id, + List parents = const [], + Map attributes = const {}, + }) { + return _$CedarEntity._( + id: id, + parents: parents.build(), + attributes: attributes.build(), + ); + } + + factory CedarEntity.build([ + void Function(CedarEntityBuilder) updates, + ]) = _$CedarEntity; + + factory CedarEntity.fromJson(Map json) => CedarEntity( + id: CedarEntityId.fromJson(json['uid'] as Map), + parents: (json['parents'] as List) + .map((e) => CedarEntityId.fromJson(e as Map)) + .toList(), + attributes: (json['attrs'] as Map) + .cast() + .map((key, value) => MapEntry(key, CedarValueJson.fromJson(value))), + ); + + const CedarEntity._(); + + CedarEntityId get id; + BuiltList get parents; + BuiltMap get attributes; + + @override + Map toJson() => { + 'uid': id.toJson(), + 'parents': parents.map((e) => e.toJson()).toList(), + 'attrs': attributes + .map((key, value) => MapEntry(key, value.toJson())) + .asMap(), + }; + + static Serializer get serializer => _$cedarEntitySerializer; +} diff --git a/packages/cedar/lib/src/ast/cedar_entity.g.dart b/packages/cedar/lib/src/ast/cedar_entity.g.dart new file mode 100644 index 00000000..16c92876 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_entity.g.dart @@ -0,0 +1,201 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'cedar_entity.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +Serializer _$cedarEntitySerializer = new _$CedarEntitySerializer(); + +class _$CedarEntitySerializer implements StructuredSerializer { + @override + final Iterable types = const [CedarEntity, _$CedarEntity]; + @override + final String wireName = 'CedarEntity'; + + @override + Iterable serialize(Serializers serializers, CedarEntity object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'id', + serializers.serialize(object.id, + specifiedType: const FullType(CedarEntityId)), + 'parents', + serializers.serialize(object.parents, + specifiedType: + const FullType(BuiltList, const [const FullType(CedarEntityId)])), + 'attributes', + serializers.serialize(object.attributes, + specifiedType: const FullType(BuiltMap, + const [const FullType(String), const FullType(CedarValueJson)])), + ]; + + return result; + } + + @override + CedarEntity deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarEntityBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'id': + result.id.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarEntityId))! as CedarEntityId); + break; + case 'parents': + result.parents.replace(serializers.deserialize(value, + specifiedType: const FullType( + BuiltList, const [const FullType(CedarEntityId)]))! + as BuiltList); + break; + case 'attributes': + result.attributes.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, const [ + const FullType(String), + const FullType(CedarValueJson) + ]))!); + break; + } + } + + return result.build(); + } +} + +class _$CedarEntity extends CedarEntity { + @override + final CedarEntityId id; + @override + final BuiltList parents; + @override + final BuiltMap attributes; + + factory _$CedarEntity([void Function(CedarEntityBuilder)? updates]) => + (new CedarEntityBuilder()..update(updates))._build(); + + _$CedarEntity._( + {required this.id, required this.parents, required this.attributes}) + : super._() { + BuiltValueNullFieldError.checkNotNull(id, r'CedarEntity', 'id'); + BuiltValueNullFieldError.checkNotNull(parents, r'CedarEntity', 'parents'); + BuiltValueNullFieldError.checkNotNull( + attributes, r'CedarEntity', 'attributes'); + } + + @override + CedarEntity rebuild(void Function(CedarEntityBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarEntityBuilder toBuilder() => new CedarEntityBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarEntity && + id == other.id && + parents == other.parents && + attributes == other.attributes; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, id.hashCode); + _$hash = $jc(_$hash, parents.hashCode); + _$hash = $jc(_$hash, attributes.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarEntity') + ..add('id', id) + ..add('parents', parents) + ..add('attributes', attributes)) + .toString(); + } +} + +class CedarEntityBuilder implements Builder { + _$CedarEntity? _$v; + + CedarEntityIdBuilder? _id; + CedarEntityIdBuilder get id => _$this._id ??= new CedarEntityIdBuilder(); + set id(CedarEntityIdBuilder? id) => _$this._id = id; + + ListBuilder? _parents; + ListBuilder get parents => + _$this._parents ??= new ListBuilder(); + set parents(ListBuilder? parents) => _$this._parents = parents; + + MapBuilder? _attributes; + MapBuilder get attributes => + _$this._attributes ??= new MapBuilder(); + set attributes(MapBuilder? attributes) => + _$this._attributes = attributes; + + CedarEntityBuilder(); + + CedarEntityBuilder get _$this { + final $v = _$v; + if ($v != null) { + _id = $v.id.toBuilder(); + _parents = $v.parents.toBuilder(); + _attributes = $v.attributes.toBuilder(); + _$v = null; + } + return this; + } + + @override + void replace(CedarEntity other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarEntity; + } + + @override + void update(void Function(CedarEntityBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarEntity build() => _build(); + + _$CedarEntity _build() { + _$CedarEntity _$result; + try { + _$result = _$v ?? + new _$CedarEntity._( + id: id.build(), + parents: parents.build(), + attributes: attributes.build()); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'id'; + id.build(); + _$failedField = 'parents'; + parents.build(); + _$failedField = 'attributes'; + attributes.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarEntity', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/cedar/lib/src/ast/cedar_entity_id.dart b/packages/cedar/lib/src/ast/cedar_entity_id.dart new file mode 100644 index 00000000..59dfb278 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_entity_id.dart @@ -0,0 +1,70 @@ +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:cedar/src/ast/cedar_node.dart'; + +part 'cedar_entity_id.g.dart'; + +abstract class CedarEntityId + implements Built, CedarNode { + factory CedarEntityId(String type, String id) => + _$CedarEntityId._(type: type, id: id); + + factory CedarEntityId.build([ + void Function(CedarEntityIdBuilder) updates, + ]) = _$CedarEntityId; + + factory CedarEntityId.fromJson(Map json) { + switch (json) { + case {'type': final String type, 'id': final String id} || + {'__entity': {'type': final String type, 'id': final String id}}: + return CedarEntityId(type, id); + default: + throw FormatException('Invalid entity ID JSON: $json'); + } + } + + const CedarEntityId._(); + + String get type; + String get id; + + /// Returns a normalized version of this entity ID. + /// + /// Cedar prohibits whitespace in entity IDs, so this method removes all + /// whitespace from the [type] and [id]. + /// + /// See [RFC 9](https://github.com/cedar-policy/rfcs/blob/main/text/0009-disallow-whitespace-in-entityuid.md) + /// for more information. + CedarEntityId get normalized => CedarEntityId( + type, + String.fromCharCodes( + id.runes.expand((char) { + return switch (char) { + 0 => '\\0'.codeUnits, + 0x9 => '\\t'.codeUnits, + 0xa => '\\n'.codeUnits, + 0xd => '\\r'.codeUnits, + 0x22 => '\\"'.codeUnits, + 0x27 => "\\'".codeUnits, + < 0x20 || + 0x7f || // Delete + 0x96 || // Non-breaking space + > 0xffff => + '\\u{${char.toRadixString(16)}}'.codeUnits, + _ => [char], + }; + }), + ), + ); + + @override + String toString() => '$type::"$id"'; + + @override + Map toJson() => { + 'type': type, + 'id': id, + }; + + static Serializer get serializer => _$cedarEntityIdSerializer; +} diff --git a/packages/cedar/lib/src/ast/cedar_entity_id.g.dart b/packages/cedar/lib/src/ast/cedar_entity_id.g.dart new file mode 100644 index 00000000..0e6e3615 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_entity_id.g.dart @@ -0,0 +1,145 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'cedar_entity_id.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +Serializer _$cedarEntityIdSerializer = + new _$CedarEntityIdSerializer(); + +class _$CedarEntityIdSerializer implements StructuredSerializer { + @override + final Iterable types = const [CedarEntityId, _$CedarEntityId]; + @override + final String wireName = 'CedarEntityId'; + + @override + Iterable serialize(Serializers serializers, CedarEntityId object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'type', + serializers.serialize(object.type, specifiedType: const FullType(String)), + 'id', + serializers.serialize(object.id, specifiedType: const FullType(String)), + ]; + + return result; + } + + @override + CedarEntityId deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarEntityIdBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'type': + result.type = serializers.deserialize(value, + specifiedType: const FullType(String))! as String; + break; + case 'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(String))! as String; + break; + } + } + + return result.build(); + } +} + +class _$CedarEntityId extends CedarEntityId { + @override + final String type; + @override + final String id; + + factory _$CedarEntityId([void Function(CedarEntityIdBuilder)? updates]) => + (new CedarEntityIdBuilder()..update(updates))._build(); + + _$CedarEntityId._({required this.type, required this.id}) : super._() { + BuiltValueNullFieldError.checkNotNull(type, r'CedarEntityId', 'type'); + BuiltValueNullFieldError.checkNotNull(id, r'CedarEntityId', 'id'); + } + + @override + CedarEntityId rebuild(void Function(CedarEntityIdBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarEntityIdBuilder toBuilder() => new CedarEntityIdBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarEntityId && type == other.type && id == other.id; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, type.hashCode); + _$hash = $jc(_$hash, id.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class CedarEntityIdBuilder + implements Builder { + _$CedarEntityId? _$v; + + String? _type; + String? get type => _$this._type; + set type(String? type) => _$this._type = type; + + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; + + CedarEntityIdBuilder(); + + CedarEntityIdBuilder get _$this { + final $v = _$v; + if ($v != null) { + _type = $v.type; + _id = $v.id; + _$v = null; + } + return this; + } + + @override + void replace(CedarEntityId other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarEntityId; + } + + @override + void update(void Function(CedarEntityIdBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarEntityId build() => _build(); + + _$CedarEntityId _build() { + final _$result = _$v ?? + new _$CedarEntityId._( + type: BuiltValueNullFieldError.checkNotNull( + type, r'CedarEntityId', 'type'), + id: BuiltValueNullFieldError.checkNotNull( + id, r'CedarEntityId', 'id')); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/cedar/lib/src/ast/cedar_node.dart b/packages/cedar/lib/src/ast/cedar_node.dart new file mode 100644 index 00000000..e9a01122 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_node.dart @@ -0,0 +1,3 @@ +abstract interface class CedarNode { + Map toJson(); +} diff --git a/packages/cedar/lib/src/ast/cedar_schema.dart b/packages/cedar/lib/src/ast/cedar_schema.dart new file mode 100644 index 00000000..03a1f374 --- /dev/null +++ b/packages/cedar/lib/src/ast/cedar_schema.dart @@ -0,0 +1,498 @@ +import 'package:cedar/src/ast/cedar_entity_id.dart'; +import 'package:cedar/src/ast/cedar_node.dart'; +import 'package:cedar/src/util.dart'; + +final class CedarSchema implements CedarNode { + CedarSchema({ + Map? namespaces, + }) : _namespaces = namespaces ?? {}; + + final Map _namespaces; + + factory CedarSchema.fromJson(Map json) { + return CedarSchema( + namespaces: json.map( + (name, json) => MapEntry( + name, + CedarNamespace.fromJson(json as Map), + ), + ), + ); + } + + CedarNamespace? getNamespace(String name) { + return _namespaces[name]; + } + + void updateNamespace( + String name, CedarNamespace Function(CedarNamespace) updates) { + _namespaces.update( + name, + (value) => updates(value), + ifAbsent: () => updates(CedarNamespace()), + ); + } + + @override + Map toJson() => _namespaces.map( + (name, namespace) => MapEntry(name, namespace.toJson()), + ); +} + +final class CedarNamespace implements CedarNode { + CedarNamespace({ + Map? entityTypes, + Map? actionTypes, + Map? commonTypes, + }) : _entityTypes = entityTypes, + _actionTypes = actionTypes, + _commonTypes = commonTypes; + + factory CedarNamespace.fromJson(Map json) { + return CedarNamespace( + entityTypes: (json['entityTypes'] as Map?) + ?.cast() + .map( + (name, json) => MapEntry( + name, + CedarEntitySchema.fromJson( + (json as Map).cast()), + ), + ), + actionTypes: (json['actions'] as Map?) + ?.cast() + .map( + (name, json) => MapEntry( + name, + CedarActionSchema.fromJson( + (json as Map).cast()), + ), + ), + commonTypes: (json['commonTypes'] as Map?) + ?.cast() + .map( + (name, json) => MapEntry( + name, + CedarType.fromJson((json as Map).cast()), + ), + ), + ); + } + + Map? _entityTypes; + Map? _actionTypes; + Map? _commonTypes; + + void addEntitySchema(String name, CedarEntitySchema entityType) { + (_entityTypes ??= {}).update( + name, + (value) => throw StateError('Entity type "$name" already exists'), + ifAbsent: () => entityType, + ); + } + + void addActionSchema(String name, CedarActionSchema actionType) { + (_actionTypes ??= {}).update( + name, + (value) => throw StateError('Action type "$name" already exists'), + ifAbsent: () => actionType, + ); + } + + void addCommonType(String name, CedarTypeDefinition type) { + (_commonTypes ??= {}).update( + name, + (value) => throw StateError('Common type "$name" already exists'), + ifAbsent: () => type, + ); + } + + @override + Map toJson() => { + if (_entityTypes != null) + 'entityTypes': _entityTypes!.map( + (name, entityType) => MapEntry(name, entityType.toJson()), + ), + if (_actionTypes != null) + 'actions': _actionTypes!.map( + (name, actionType) => MapEntry(name, actionType.toJson()), + ), + if (_commonTypes != null) + 'commonTypes': _commonTypes!.map( + (name, type) => MapEntry(name, type.toJson()), + ), + }; +} + +final class CedarEntitySchema implements CedarNode { + const CedarEntitySchema({ + this.memberOfTypes, + this.shape, + }); + + factory CedarEntitySchema.fromJson(Map json) { + return CedarEntitySchema( + memberOfTypes: + (json['memberOfTypes'] as List?)?.cast().toList(), + shape: (json['shape'] as Map?)?.let(CedarType.fromJson), + ); + } + + final List? memberOfTypes; + final CedarType? shape; + + @override + Map toJson() => { + if (memberOfTypes != null) 'memberOfTypes': memberOfTypes, + if (shape != null) 'shape': shape!.toJson(), + }; +} + +sealed class CedarType implements CedarNode { + factory CedarType.fromJson(Map json) { + switch (json) { + case {'type': 'Boolean'}: + return CedarBooleanType( + required: json['required'] as bool?, + ); + case {'type': 'String'}: + return CedarStringType( + required: json['required'] as bool?, + ); + case {'type': 'Long'}: + return CedarLongType( + required: json['required'] as bool?, + ); + case {'type': 'Set'}: + return CedarSetType( + elementType: CedarType.fromJson( + json['element'] as Map, + ), + required: json['required'] as bool?, + ); + case {'type': 'Record'}: + return CedarRecordType( + attributes: (json['attributes'] as Map) + .cast() + .map( + (name, json) => MapEntry( + name, + CedarType.fromJson(json as Map), + ), + ), + required: json['required'] as bool?, + additionalAttributes: json['additionalAttributes'] as bool?, + ); + case {'type': 'Entity'}: + return CedarEntityType( + entityName: json['name'] as String, + required: json['required'] as bool?, + ); + case {'type': 'Extension', 'name': 'ipaddr'}: + return CedarIpAddressType( + required: json['required'] as bool?, + ); + case {'type': 'Extension', 'name': 'decimal'}: + return CedarDecimalType( + required: json['required'] as bool?, + ); + case {'type': final String type}: + if (json.keys.length > 1) { + throw ArgumentError.value(json, 'json', 'Invalid Cedar type'); + } + return CedarTypeReference(type: type); + default: + throw ArgumentError.value(json, 'json', 'Invalid Cedar type'); + } + } + + const factory CedarType.boolean({ + bool required, + }) = CedarBooleanType; + + const factory CedarType.string({ + bool required, + }) = CedarStringType; + + const factory CedarType.long({ + bool required, + }) = CedarLongType; + + const factory CedarType.set({ + required CedarType elementType, + bool required, + }) = CedarSetType; + + const factory CedarType.record({ + required Map attributes, + bool required, + }) = CedarRecordType; + + const factory CedarType.entity({ + required String entityName, + bool required, + }) = CedarEntityType; + + const factory CedarType.ipAddress({ + bool required, + }) = CedarIpAddressType; + + const factory CedarType.decimal({ + bool required, + }) = CedarDecimalType; + + const factory CedarType.reference({ + required String type, + }) = CedarTypeReference; +} + +final class CedarTypeReference implements CedarType { + const CedarTypeReference({ + required this.type, + }); + + factory CedarTypeReference.fromJson(Map json) { + return CedarTypeReference(type: json['type'] as String); + } + + final String type; + + @override + Map toJson() => { + 'type': type, + }; +} + +sealed class CedarTypeDefinition implements CedarType { + const CedarTypeDefinition({ + this.required, + }); + + /// Whether a value of this type is required. + /// + /// Defaults to `true`. + final bool? required; + + const factory CedarTypeDefinition.boolean({ + bool required, + }) = CedarBooleanType; + + const factory CedarTypeDefinition.string({ + bool required, + }) = CedarStringType; + + const factory CedarTypeDefinition.long({ + bool required, + }) = CedarLongType; + + const factory CedarTypeDefinition.set({ + required CedarType elementType, + bool required, + }) = CedarSetType; + + const factory CedarTypeDefinition.record({ + required Map attributes, + bool required, + }) = CedarRecordType; + + const factory CedarTypeDefinition.entity({ + required String entityName, + bool required, + }) = CedarEntityType; + + const factory CedarTypeDefinition.ipAddress({ + bool required, + }) = CedarIpAddressType; + + const factory CedarTypeDefinition.decimal({ + bool required, + }) = CedarDecimalType; +} + +final class CedarBooleanType extends CedarTypeDefinition { + const CedarBooleanType({ + super.required, + }); + + @override + Map toJson() => { + 'type': 'Boolean', + if (required != null) 'required': required, + }; +} + +final class CedarStringType extends CedarTypeDefinition { + const CedarStringType({ + super.required, + }); + + @override + Map toJson() => { + 'type': 'String', + if (required != null) 'required': required, + }; +} + +final class CedarLongType extends CedarTypeDefinition { + const CedarLongType({ + super.required, + }); + + @override + Map toJson() => { + 'type': 'Long', + if (required != null) 'required': required, + }; +} + +final class CedarSetType extends CedarTypeDefinition { + const CedarSetType({ + required this.elementType, + super.required, + }); + + /// The type of the elements in the set. + final CedarType elementType; + + @override + Map toJson() => { + 'type': 'Set', + if (required != null) 'required': required, + 'element': elementType.toJson(), + }; +} + +final class CedarRecordType extends CedarTypeDefinition { + const CedarRecordType({ + required this.attributes, + super.required, + this.additionalAttributes, + }); + + final Map attributes; + // TODO: What is this used for? + final bool? additionalAttributes; + + @override + Map toJson() => { + 'type': 'Record', + if (required != null) 'required': required, + 'attributes': attributes.map( + (name, type) => MapEntry(name, type.toJson()), + ), + if (additionalAttributes != null) + 'additionalAttributes': additionalAttributes, + }; +} + +final class CedarEntityType extends CedarTypeDefinition { + const CedarEntityType({ + required this.entityName, + super.required, + }); + + /// The namespaced name of the entity type. + final String entityName; + + @override + Map toJson() => { + 'type': 'Entity', + if (required != null) 'required': required, + 'name': entityName, + }; +} + +final class CedarIpAddressType extends CedarTypeDefinition { + const CedarIpAddressType({ + super.required, + }); + + @override + Map toJson() => { + 'type': 'Extension', + if (required != null) 'required': required, + 'name': 'ipaddr', + }; +} + +final class CedarDecimalType extends CedarTypeDefinition { + const CedarDecimalType({ + super.required, + }); + + @override + Map toJson() => { + 'type': 'Extension', + if (required != null) 'required': required, + 'name': 'decimal', + }; +} + +final class CedarActionSchema implements CedarNode { + const CedarActionSchema({ + this.memberOf, + required this.appliesTo, + }); + + factory CedarActionSchema.fromJson(Map json) { + return CedarActionSchema( + memberOf: (json['memberOf'] as List?) + ?.map((json) => CedarEntityId.fromJson(json as Map)) + .toList(), + appliesTo: switch (json['appliesTo']) { + null => null, + final Map json => CedarActionAppliesTo.fromJson( + json.cast(), + ), + _ => throw ArgumentError.value( + json, + 'json', + 'Invalid Cedar action schema', + ), + }, + ); + } + + final List? memberOf; + final CedarActionAppliesTo? appliesTo; + + @override + Map toJson() => { + 'memberOf': memberOf?.map((e) => e.toJson()).toList(), + 'appliesTo': appliesTo?.toJson(), + }; +} + +final class CedarActionAppliesTo implements CedarNode { + const CedarActionAppliesTo({ + this.principalTypes, + this.resourceTypes, + this.contextType, + }); + + factory CedarActionAppliesTo.fromJson(Map json) { + return CedarActionAppliesTo( + principalTypes: (json['principalTypes'] as List?)?.cast(), + resourceTypes: (json['resourceTypes'] as List?)?.cast(), + contextType: json['context'] == null + ? null + : CedarType.fromJson( + (json['context'] as Map).cast(), + ), + ); + } + + final List? principalTypes; + final List? resourceTypes; + + /// Must be a [CedarRecordType] or a [CedarTypeReference] to a + /// [CedarRecordType]. + final CedarType? contextType; + + @override + Map toJson() => { + 'principalTypes': principalTypes, + 'resourceTypes': resourceTypes, + if (contextType != null) 'context': contextType!.toJson(), + }; +} diff --git a/packages/cedar/lib/src/authorization/cedar_authorization_request.dart b/packages/cedar/lib/src/authorization/cedar_authorization_request.dart new file mode 100644 index 00000000..5c2655cb --- /dev/null +++ b/packages/cedar/lib/src/authorization/cedar_authorization_request.dart @@ -0,0 +1,26 @@ +import 'package:cedar/cedar.dart'; + +/// {@template cedar.cedar_authorization_request} +/// A request for authorization to a [CedarEngine]. +/// {@endtemplate} +final class CedarAuthorizationRequest { + /// {@macro cedar.cedar_authorization_request} + const CedarAuthorizationRequest({ + this.principal, + this.action, + this.resource, + this.context, + }); + + /// The principal component of the request. + final CedarEntityId? principal; + + /// The action component of the request. + final CedarEntityId? action; + + /// The resource component of the request. + final CedarEntityId? resource; + + /// The context of the request. + final Map? context; +} diff --git a/packages/cedar/lib/src/authorization/cedar_authorization_response.dart b/packages/cedar/lib/src/authorization/cedar_authorization_response.dart new file mode 100644 index 00000000..86c3f702 --- /dev/null +++ b/packages/cedar/lib/src/authorization/cedar_authorization_response.dart @@ -0,0 +1,37 @@ +import 'package:cedar/cedar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +/// The decision of an authorization request. +enum CedarAuthorizationDecision { + @JsonValue('Allow') + allow, + + @JsonValue('Deny') + deny, +} + +/// {@template cedar.cedar_authorization_response} +/// The response to a [CedarAuthorizer] request. +/// {@endtemplate} +final class CedarAuthorizationResponse { + /// {@macro cedar.cedar_authorization_response} + const CedarAuthorizationResponse({ + required this.decision, + List? reasons, + List? errors, + }) : reasons = reasons ?? const [], + errorMessages = errors ?? const []; + + /// The decision of the authorization request. + final CedarAuthorizationDecision decision; + + /// The policy IDs of the policies that contributed to the decision. + /// + /// If no policies applied to the request, this will be empty. + final List reasons; + + /// Any evaluation errors which occurred during the request. + /// + /// If no errors occurred, this will be empty. + final List errorMessages; +} diff --git a/packages/cedar/lib/src/authorization/cedar_authorizer.dart b/packages/cedar/lib/src/authorization/cedar_authorizer.dart new file mode 100644 index 00000000..8eb75f55 --- /dev/null +++ b/packages/cedar/lib/src/authorization/cedar_authorizer.dart @@ -0,0 +1,8 @@ +import 'package:cedar/cedar.dart'; + +abstract interface class CedarAuthorizer { + /// Responds to an authorization [request]. + CedarAuthorizationResponse isAuthorized( + CedarAuthorizationRequest request, + ); +} diff --git a/packages/cedar/lib/src/policy/cedar_policy.dart b/packages/cedar/lib/src/policy/cedar_policy.dart new file mode 100644 index 00000000..5088927e --- /dev/null +++ b/packages/cedar/lib/src/policy/cedar_policy.dart @@ -0,0 +1,423 @@ +/// Provides builders and serializers for Cedar policies which conform to the +/// official JSON format: https://docs.cedarpolicy.com/policies/json-format.html. +library; + +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/built_value.dart'; +import 'package:built_value/json_object.dart'; +import 'package:built_value/serializer.dart'; +import 'package:cedar/cedar.dart'; + +part 'cedar_policy.g.dart'; + +class CedarPolicyEffect extends EnumClass { + const CedarPolicyEffect._(super.name); + + static const CedarPolicyEffect permit = _$permit; + static const CedarPolicyEffect forbid = _$forbid; + + static BuiltSet get values => _$CedarPolicyEffectValues; + static CedarPolicyEffect valueOf(String name) => + _$CedarPolicyEffectValueOf(name); + + static CedarPolicyEffect fromJson(String json) => + _$CedarPolicyEffectValueOf(json); + + String toJson() => name; + + static Serializer get serializer => + _$cedarPolicyEffectSerializer; +} + +class CedarPolicyOp extends EnumClass { + const CedarPolicyOp._(super.name); + + @BuiltValueEnumConst(wireName: 'All') + static const CedarPolicyOp all = _$all; + + @BuiltValueEnumConst(wireName: '==') + static const CedarPolicyOp equals = _$equals; + + @BuiltValueEnumConst(wireName: 'in') + static const CedarPolicyOp in$ = _$in$; + + @BuiltValueEnumConst(wireName: 'is') + static const CedarPolicyOp is$ = _$is$; + + static BuiltSet get values => _$CedarPolicyOpValues; + static CedarPolicyOp valueOf(String name) => _$CedarPolicyOpValueOf(name); + + static CedarPolicyOp fromJson(String json) => + cedarSerializers.deserializeWith(CedarPolicyOp.serializer, json)!; + + String toJson() => + cedarSerializers.serializeWith(CedarPolicyOp.serializer, this) as String; + + static Serializer get serializer => _$cedarPolicyOpSerializer; +} + +class CedarPolicyConditionKind extends EnumClass { + const CedarPolicyConditionKind._(super.name); + + static const CedarPolicyConditionKind when = _$when; + static const CedarPolicyConditionKind unless = _$unless; + + static BuiltSet get values => + _$CedarPolicyConditionKindValues; + static CedarPolicyConditionKind valueOf(String name) => + _$CedarPolicyConditionKindValueOf(name); + + static CedarPolicyConditionKind fromJson(String json) => + _$CedarPolicyConditionKindValueOf(json); + + String toJson() => name; + + static Serializer get serializer => + _$cedarPolicyConditionKindSerializer; +} + +abstract class CedarPolicy implements Built { + factory CedarPolicy({ + String? id, + required CedarPolicyEffect effect, + required CedarPolicyPrincipal principal, + required CedarPolicyAction action, + required CedarPolicyResource resource, + List conditions = const [], + Map? annotations, + }) { + return _$CedarPolicy._( + id: id, + effect: effect, + principal: principal, + action: action, + resource: resource, + conditions: conditions.build(), + annotations: annotations?.build(), + ); + } + + factory CedarPolicy.fromJson(Map json) { + return CedarPolicy( + effect: CedarPolicyEffect.fromJson(json['effect'] as String), + principal: CedarPolicyPrincipal.fromJson( + json['principal'] as Map, + ), + action: CedarPolicyAction.fromJson( + json['action'] as Map, + ), + resource: CedarPolicyResource.fromJson( + json['resource'] as Map, + ), + conditions: (json['conditions'] as List) + .map((c) => CedarPolicyCondition.fromJson(c as Map)) + .toList(), + annotations: (json['annotations'] as Map?)?.cast(), + ); + } + + factory CedarPolicy.build([ + void Function(CedarPolicyBuilder) updates, + ]) = _$CedarPolicy; + CedarPolicy._(); + + /// An optional name to uniquely identify the policy when performing + /// authorization checks later. + @BuiltValueField(serialize: false) + String? get id; + + CedarPolicyEffect get effect; + CedarPolicyPrincipal get principal; + CedarPolicyAction get action; + CedarPolicyResource get resource; + BuiltList get conditions; + BuiltMap? get annotations; + + Map toJson() => { + 'effect': effect.toJson(), + 'principal': principal.toJson(), + 'action': action.toJson(), + 'resource': resource.toJson(), + 'conditions': conditions.map((c) => c.toJson()).toList(), + if (annotations != null) 'annotations': annotations!.toMap(), + }; + + static Serializer get serializer => _$cedarPolicySerializer; +} + +abstract class CedarPolicyPrincipal + implements Built { + factory CedarPolicyPrincipal({ + required CedarPolicyOp op, + CedarEntityId? entity, + String? entityType, + }) { + return CedarPolicyPrincipal.build((b) { + b + ..op = op + ..entityType = entityType; + if (entity != null) { + b.entity.replace(entity); + } + }); + } + + factory CedarPolicyPrincipal.fromJson(Map json) { + return CedarPolicyPrincipal( + op: CedarPolicyOp.fromJson(json['op'] as String), + entity: json['entity'] == null + ? null + : CedarEntityId.fromJson(json['entity'] as Map), + entityType: json['entity_type'] as String?, + ); + } + + factory CedarPolicyPrincipal.build([ + void Function(CedarPolicyPrincipalBuilder) updates, + ]) = _$CedarPolicyPrincipal; + CedarPolicyPrincipal._(); + + @BuiltValueHook(finalizeBuilder: true) + static void _validate(CedarPolicyPrincipalBuilder policy) { + switch (policy.op) { + case CedarPolicyOp.all: + _expectAbsent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.equals: + _expectPresent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.in$: + _expectPresent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.is$: + _expectPresent('entityType', policy.entityType); + _expectAbsent('entity', policy._entity); + default: + throw ArgumentError.value(policy.op, 'op', 'Invalid op for principal'); + } + } + + CedarPolicyOp get op; + CedarEntityId? get entity; + + @BuiltValueField(wireName: 'entity_type') + String? get entityType; + + Map toJson() => { + 'op': op.toJson(), + if (entity != null) 'entity': entity!.toJson(), + if (entityType != null) 'entity_type': entityType, + }; + + static Serializer get serializer => + _$cedarPolicyPrincipalSerializer; +} + +abstract class CedarPolicyAction + implements Built { + factory CedarPolicyAction({ + required CedarPolicyOp op, + CedarEntityId? entity, + List? entities, + }) { + return CedarPolicyAction.build((b) { + b.op = op; + if (entity != null) { + b.entity.replace(entity); + } + if (entities != null) { + b.entities.addAll(entities); + } + }); + } + + factory CedarPolicyAction.build([ + void Function(CedarPolicyActionBuilder) updates, + ]) = _$CedarPolicyAction; + CedarPolicyAction._(); + + @BuiltValueHook(finalizeBuilder: true) + static void _validate(CedarPolicyActionBuilder policy) { + void expectNoEntities() { + if (policy._entities case final entities? when entities.isNotEmpty) { + throw ArgumentError.value( + policy._entities, + 'entities', + 'Should be empty', + ); + } + } + + switch (policy.op) { + case CedarPolicyOp.all: + _expectAbsent('entity', policy._entity); + expectNoEntities(); + case CedarPolicyOp.equals: + _expectPresent('entity', policy._entity); + expectNoEntities(); + case CedarPolicyOp.in$: + if (policy._entity != null) { + expectNoEntities(); + } else if (policy._entities != null) { + _expectAbsent('entity', policy._entity); + } else { + throw ArgumentError( + 'Either entity or entities must be specified', + ); + } + case CedarPolicyOp.is$: + default: + throw ArgumentError.value(policy.op, 'op', 'Invalid op for action'); + } + } + + CedarPolicyOp get op; + CedarEntityId? get entity; + BuiltList? get entities; + + Map toJson() => { + 'op': op.toJson(), + if (entity != null) 'entity': entity!.toJson(), + if (entities != null && op == CedarPolicyOp.in$) + 'entities': entities!.map((e) => e.toJson()).toList(), + }; + + static CedarPolicyAction fromJson(Map json) { + return CedarPolicyAction( + op: CedarPolicyOp.fromJson(json['op'] as String), + entity: json['entity'] == null + ? null + : CedarEntityId.fromJson(json['entity'] as Map), + entities: (json['entities'] as List?) + ?.map((e) => CedarEntityId.fromJson(e as Map)) + .toList(), + ); + } + + static Serializer get serializer => + _$cedarPolicyActionSerializer; +} + +abstract class CedarPolicyResource + implements Built { + factory CedarPolicyResource({ + required CedarPolicyOp op, + CedarEntityId? entity, + String? entityType, + }) { + return CedarPolicyResource.build((b) { + b + ..op = op + ..entityType = entityType; + if (entity != null) { + b.entity.replace(entity); + } + }); + } + + factory CedarPolicyResource.build([ + void Function(CedarPolicyResourceBuilder) updates, + ]) = _$CedarPolicyResource; + CedarPolicyResource._(); + + @BuiltValueHook(finalizeBuilder: true) + static void _validate(CedarPolicyResourceBuilder policy) { + switch (policy.op) { + case CedarPolicyOp.all: + _expectAbsent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.equals: + _expectPresent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.in$: + _expectPresent('entity', policy._entity); + _expectAbsent('entityType', policy.entityType); + case CedarPolicyOp.is$: + _expectPresent('entityType', policy.entityType); + _expectAbsent('entity', policy._entity); + default: + throw ArgumentError.value(policy.op, 'op', 'Invalid op for resource'); + } + } + + CedarPolicyOp get op; + CedarEntityId? get entity; + + @BuiltValueField(wireName: 'entity_type') + String? get entityType; + + Map toJson() => { + 'op': op.toJson(), + if (entity != null) 'entity': entity!.toJson(), + if (entityType != null) 'entity_type': entityType, + }; + + factory CedarPolicyResource.fromJson(Map json) { + return CedarPolicyResource( + op: CedarPolicyOp.fromJson(json['op'] as String), + entity: json['entity'] == null + ? null + : CedarEntityId.fromJson(json['entity'] as Map), + entityType: json['entity_type'] as String?, + ); + } + + static Serializer get serializer => + _$cedarPolicyResourceSerializer; +} + +abstract class CedarPolicyCondition + implements Built { + factory CedarPolicyCondition({ + required CedarPolicyConditionKind kind, + required JsonExpr body, + }) { + return _$CedarPolicyCondition._( + kind: kind, + bodyJson: JsonObject(body.toJson()), + ); + } + + factory CedarPolicyCondition.build([ + void Function(CedarPolicyConditionBuilder) updates, + ]) = _$CedarPolicyCondition; + CedarPolicyCondition._(); + + CedarPolicyConditionKind get kind; + + @BuiltValueField(wireName: 'body') + JsonObject get bodyJson; + + JsonExpr get body => JsonExpr.fromJson(bodyJson.asMap.cast()); + + Map toJson() => { + 'kind': kind.toJson(), + 'body': bodyJson.asMap, + }; + + factory CedarPolicyCondition.fromJson(Map json) => + CedarPolicyCondition.build( + (b) => b + ..kind = CedarPolicyConditionKind.fromJson(json['kind'] as String) + ..bodyJson = JsonObject(json['body'] as Map), + ); + + static Serializer get serializer => + _$cedarPolicyConditionSerializer; +} + +void _expectPresent(String name, Object? value) { + if (value == null) { + throw ArgumentError.notNull(name); + } +} + +void _expectAbsent(String name, Object? value) { + if (value != null) { + throw ArgumentError.value( + value, + name, + 'Should be absent', + ); + } +} diff --git a/packages/cedar/lib/src/policy/cedar_policy.g.dart b/packages/cedar/lib/src/policy/cedar_policy.g.dart new file mode 100644 index 00000000..8cd1c2b7 --- /dev/null +++ b/packages/cedar/lib/src/policy/cedar_policy.g.dart @@ -0,0 +1,1182 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'cedar_policy.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +const CedarPolicyEffect _$permit = const CedarPolicyEffect._('permit'); +const CedarPolicyEffect _$forbid = const CedarPolicyEffect._('forbid'); + +CedarPolicyEffect _$CedarPolicyEffectValueOf(String name) { + switch (name) { + case 'permit': + return _$permit; + case 'forbid': + return _$forbid; + default: + throw new ArgumentError(name); + } +} + +final BuiltSet _$CedarPolicyEffectValues = + new BuiltSet(const [ + _$permit, + _$forbid, +]); + +const CedarPolicyOp _$all = const CedarPolicyOp._('all'); +const CedarPolicyOp _$equals = const CedarPolicyOp._('equals'); +const CedarPolicyOp _$in$ = const CedarPolicyOp._('in\$'); +const CedarPolicyOp _$is$ = const CedarPolicyOp._('is\$'); + +CedarPolicyOp _$CedarPolicyOpValueOf(String name) { + switch (name) { + case 'all': + return _$all; + case 'equals': + return _$equals; + case 'in\$': + return _$in$; + case 'is\$': + return _$is$; + default: + throw new ArgumentError(name); + } +} + +final BuiltSet _$CedarPolicyOpValues = + new BuiltSet(const [ + _$all, + _$equals, + _$in$, + _$is$, +]); + +const CedarPolicyConditionKind _$when = + const CedarPolicyConditionKind._('when'); +const CedarPolicyConditionKind _$unless = + const CedarPolicyConditionKind._('unless'); + +CedarPolicyConditionKind _$CedarPolicyConditionKindValueOf(String name) { + switch (name) { + case 'when': + return _$when; + case 'unless': + return _$unless; + default: + throw new ArgumentError(name); + } +} + +final BuiltSet _$CedarPolicyConditionKindValues = + new BuiltSet(const [ + _$when, + _$unless, +]); + +Serializer _$cedarPolicyEffectSerializer = + new _$CedarPolicyEffectSerializer(); +Serializer _$cedarPolicyOpSerializer = + new _$CedarPolicyOpSerializer(); +Serializer _$cedarPolicyConditionKindSerializer = + new _$CedarPolicyConditionKindSerializer(); +Serializer _$cedarPolicySerializer = new _$CedarPolicySerializer(); +Serializer _$cedarPolicyPrincipalSerializer = + new _$CedarPolicyPrincipalSerializer(); +Serializer _$cedarPolicyActionSerializer = + new _$CedarPolicyActionSerializer(); +Serializer _$cedarPolicyResourceSerializer = + new _$CedarPolicyResourceSerializer(); +Serializer _$cedarPolicyConditionSerializer = + new _$CedarPolicyConditionSerializer(); + +class _$CedarPolicyEffectSerializer + implements PrimitiveSerializer { + @override + final Iterable types = const [CedarPolicyEffect]; + @override + final String wireName = 'CedarPolicyEffect'; + + @override + Object serialize(Serializers serializers, CedarPolicyEffect object, + {FullType specifiedType = FullType.unspecified}) => + object.name; + + @override + CedarPolicyEffect deserialize(Serializers serializers, Object serialized, + {FullType specifiedType = FullType.unspecified}) => + CedarPolicyEffect.valueOf(serialized as String); +} + +class _$CedarPolicyOpSerializer implements PrimitiveSerializer { + static const Map _toWire = const { + 'all': 'All', + 'equals': '==', + 'in\$': 'in', + 'is\$': 'is', + }; + static const Map _fromWire = const { + 'All': 'all', + '==': 'equals', + 'in': 'in\$', + 'is': 'is\$', + }; + + @override + final Iterable types = const [CedarPolicyOp]; + @override + final String wireName = 'CedarPolicyOp'; + + @override + Object serialize(Serializers serializers, CedarPolicyOp object, + {FullType specifiedType = FullType.unspecified}) => + _toWire[object.name] ?? object.name; + + @override + CedarPolicyOp deserialize(Serializers serializers, Object serialized, + {FullType specifiedType = FullType.unspecified}) => + CedarPolicyOp.valueOf( + _fromWire[serialized] ?? (serialized is String ? serialized : '')); +} + +class _$CedarPolicyConditionKindSerializer + implements PrimitiveSerializer { + @override + final Iterable types = const [CedarPolicyConditionKind]; + @override + final String wireName = 'CedarPolicyConditionKind'; + + @override + Object serialize(Serializers serializers, CedarPolicyConditionKind object, + {FullType specifiedType = FullType.unspecified}) => + object.name; + + @override + CedarPolicyConditionKind deserialize( + Serializers serializers, Object serialized, + {FullType specifiedType = FullType.unspecified}) => + CedarPolicyConditionKind.valueOf(serialized as String); +} + +class _$CedarPolicySerializer implements StructuredSerializer { + @override + final Iterable types = const [CedarPolicy, _$CedarPolicy]; + @override + final String wireName = 'CedarPolicy'; + + @override + Iterable serialize(Serializers serializers, CedarPolicy object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'effect', + serializers.serialize(object.effect, + specifiedType: const FullType(CedarPolicyEffect)), + 'principal', + serializers.serialize(object.principal, + specifiedType: const FullType(CedarPolicyPrincipal)), + 'action', + serializers.serialize(object.action, + specifiedType: const FullType(CedarPolicyAction)), + 'resource', + serializers.serialize(object.resource, + specifiedType: const FullType(CedarPolicyResource)), + 'conditions', + serializers.serialize(object.conditions, + specifiedType: const FullType( + BuiltList, const [const FullType(CedarPolicyCondition)])), + ]; + Object? value; + value = object.annotations; + if (value != null) { + result + ..add('annotations') + ..add(serializers.serialize(value, + specifiedType: const FullType(BuiltMap, + const [const FullType(String), const FullType(String)]))); + } + return result; + } + + @override + CedarPolicy deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicyBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'effect': + result.effect = serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyEffect))! + as CedarPolicyEffect; + break; + case 'principal': + result.principal.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyPrincipal))! + as CedarPolicyPrincipal); + break; + case 'action': + result.action.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyAction))! + as CedarPolicyAction); + break; + case 'resource': + result.resource.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyResource))! + as CedarPolicyResource); + break; + case 'conditions': + result.conditions.replace(serializers.deserialize(value, + specifiedType: const FullType( + BuiltList, const [const FullType(CedarPolicyCondition)]))! + as BuiltList); + break; + case 'annotations': + result.annotations.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, + const [const FullType(String), const FullType(String)]))!); + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicyPrincipalSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + CedarPolicyPrincipal, + _$CedarPolicyPrincipal + ]; + @override + final String wireName = 'CedarPolicyPrincipal'; + + @override + Iterable serialize( + Serializers serializers, CedarPolicyPrincipal object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'op', + serializers.serialize(object.op, + specifiedType: const FullType(CedarPolicyOp)), + ]; + Object? value; + value = object.entity; + if (value != null) { + result + ..add('entity') + ..add(serializers.serialize(value, + specifiedType: const FullType(CedarEntityId))); + } + value = object.entityType; + if (value != null) { + result + ..add('entity_type') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + return result; + } + + @override + CedarPolicyPrincipal deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicyPrincipalBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'op': + result.op = serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyOp))! as CedarPolicyOp; + break; + case 'entity': + result.entity.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarEntityId))! as CedarEntityId); + break; + case 'entity_type': + result.entityType = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicyActionSerializer + implements StructuredSerializer { + @override + final Iterable types = const [CedarPolicyAction, _$CedarPolicyAction]; + @override + final String wireName = 'CedarPolicyAction'; + + @override + Iterable serialize(Serializers serializers, CedarPolicyAction object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'op', + serializers.serialize(object.op, + specifiedType: const FullType(CedarPolicyOp)), + ]; + Object? value; + value = object.entity; + if (value != null) { + result + ..add('entity') + ..add(serializers.serialize(value, + specifiedType: const FullType(CedarEntityId))); + } + value = object.entities; + if (value != null) { + result + ..add('entities') + ..add(serializers.serialize(value, + specifiedType: const FullType( + BuiltList, const [const FullType(CedarEntityId)]))); + } + return result; + } + + @override + CedarPolicyAction deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicyActionBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'op': + result.op = serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyOp))! as CedarPolicyOp; + break; + case 'entity': + result.entity.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarEntityId))! as CedarEntityId); + break; + case 'entities': + result.entities.replace(serializers.deserialize(value, + specifiedType: const FullType( + BuiltList, const [const FullType(CedarEntityId)]))! + as BuiltList); + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicyResourceSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + CedarPolicyResource, + _$CedarPolicyResource + ]; + @override + final String wireName = 'CedarPolicyResource'; + + @override + Iterable serialize( + Serializers serializers, CedarPolicyResource object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'op', + serializers.serialize(object.op, + specifiedType: const FullType(CedarPolicyOp)), + ]; + Object? value; + value = object.entity; + if (value != null) { + result + ..add('entity') + ..add(serializers.serialize(value, + specifiedType: const FullType(CedarEntityId))); + } + value = object.entityType; + if (value != null) { + result + ..add('entity_type') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + return result; + } + + @override + CedarPolicyResource deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicyResourceBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'op': + result.op = serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyOp))! as CedarPolicyOp; + break; + case 'entity': + result.entity.replace(serializers.deserialize(value, + specifiedType: const FullType(CedarEntityId))! as CedarEntityId); + break; + case 'entity_type': + result.entityType = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicyConditionSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + CedarPolicyCondition, + _$CedarPolicyCondition + ]; + @override + final String wireName = 'CedarPolicyCondition'; + + @override + Iterable serialize( + Serializers serializers, CedarPolicyCondition object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'kind', + serializers.serialize(object.kind, + specifiedType: const FullType(CedarPolicyConditionKind)), + 'body', + serializers.serialize(object.bodyJson, + specifiedType: const FullType(JsonObject)), + ]; + + return result; + } + + @override + CedarPolicyCondition deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicyConditionBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'kind': + result.kind = serializers.deserialize(value, + specifiedType: const FullType(CedarPolicyConditionKind))! + as CedarPolicyConditionKind; + break; + case 'body': + result.bodyJson = serializers.deserialize(value, + specifiedType: const FullType(JsonObject))! as JsonObject; + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicy extends CedarPolicy { + @override + final String? id; + @override + final CedarPolicyEffect effect; + @override + final CedarPolicyPrincipal principal; + @override + final CedarPolicyAction action; + @override + final CedarPolicyResource resource; + @override + final BuiltList conditions; + @override + final BuiltMap? annotations; + + factory _$CedarPolicy([void Function(CedarPolicyBuilder)? updates]) => + (new CedarPolicyBuilder()..update(updates))._build(); + + _$CedarPolicy._( + {this.id, + required this.effect, + required this.principal, + required this.action, + required this.resource, + required this.conditions, + this.annotations}) + : super._() { + BuiltValueNullFieldError.checkNotNull(effect, r'CedarPolicy', 'effect'); + BuiltValueNullFieldError.checkNotNull( + principal, r'CedarPolicy', 'principal'); + BuiltValueNullFieldError.checkNotNull(action, r'CedarPolicy', 'action'); + BuiltValueNullFieldError.checkNotNull(resource, r'CedarPolicy', 'resource'); + BuiltValueNullFieldError.checkNotNull( + conditions, r'CedarPolicy', 'conditions'); + } + + @override + CedarPolicy rebuild(void Function(CedarPolicyBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicyBuilder toBuilder() => new CedarPolicyBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicy && + id == other.id && + effect == other.effect && + principal == other.principal && + action == other.action && + resource == other.resource && + conditions == other.conditions && + annotations == other.annotations; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, id.hashCode); + _$hash = $jc(_$hash, effect.hashCode); + _$hash = $jc(_$hash, principal.hashCode); + _$hash = $jc(_$hash, action.hashCode); + _$hash = $jc(_$hash, resource.hashCode); + _$hash = $jc(_$hash, conditions.hashCode); + _$hash = $jc(_$hash, annotations.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicy') + ..add('id', id) + ..add('effect', effect) + ..add('principal', principal) + ..add('action', action) + ..add('resource', resource) + ..add('conditions', conditions) + ..add('annotations', annotations)) + .toString(); + } +} + +class CedarPolicyBuilder implements Builder { + _$CedarPolicy? _$v; + + String? _id; + String? get id => _$this._id; + set id(String? id) => _$this._id = id; + + CedarPolicyEffect? _effect; + CedarPolicyEffect? get effect => _$this._effect; + set effect(CedarPolicyEffect? effect) => _$this._effect = effect; + + CedarPolicyPrincipalBuilder? _principal; + CedarPolicyPrincipalBuilder get principal => + _$this._principal ??= new CedarPolicyPrincipalBuilder(); + set principal(CedarPolicyPrincipalBuilder? principal) => + _$this._principal = principal; + + CedarPolicyActionBuilder? _action; + CedarPolicyActionBuilder get action => + _$this._action ??= new CedarPolicyActionBuilder(); + set action(CedarPolicyActionBuilder? action) => _$this._action = action; + + CedarPolicyResourceBuilder? _resource; + CedarPolicyResourceBuilder get resource => + _$this._resource ??= new CedarPolicyResourceBuilder(); + set resource(CedarPolicyResourceBuilder? resource) => + _$this._resource = resource; + + ListBuilder? _conditions; + ListBuilder get conditions => + _$this._conditions ??= new ListBuilder(); + set conditions(ListBuilder? conditions) => + _$this._conditions = conditions; + + MapBuilder? _annotations; + MapBuilder get annotations => + _$this._annotations ??= new MapBuilder(); + set annotations(MapBuilder? annotations) => + _$this._annotations = annotations; + + CedarPolicyBuilder(); + + CedarPolicyBuilder get _$this { + final $v = _$v; + if ($v != null) { + _id = $v.id; + _effect = $v.effect; + _principal = $v.principal.toBuilder(); + _action = $v.action.toBuilder(); + _resource = $v.resource.toBuilder(); + _conditions = $v.conditions.toBuilder(); + _annotations = $v.annotations?.toBuilder(); + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicy other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicy; + } + + @override + void update(void Function(CedarPolicyBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicy build() => _build(); + + _$CedarPolicy _build() { + _$CedarPolicy _$result; + try { + _$result = _$v ?? + new _$CedarPolicy._( + id: id, + effect: BuiltValueNullFieldError.checkNotNull( + effect, r'CedarPolicy', 'effect'), + principal: principal.build(), + action: action.build(), + resource: resource.build(), + conditions: conditions.build(), + annotations: _annotations?.build()); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'principal'; + principal.build(); + _$failedField = 'action'; + action.build(); + _$failedField = 'resource'; + resource.build(); + _$failedField = 'conditions'; + conditions.build(); + _$failedField = 'annotations'; + _annotations?.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarPolicy', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +class _$CedarPolicyPrincipal extends CedarPolicyPrincipal { + @override + final CedarPolicyOp op; + @override + final CedarEntityId? entity; + @override + final String? entityType; + + factory _$CedarPolicyPrincipal( + [void Function(CedarPolicyPrincipalBuilder)? updates]) => + (new CedarPolicyPrincipalBuilder()..update(updates))._build(); + + _$CedarPolicyPrincipal._({required this.op, this.entity, this.entityType}) + : super._() { + BuiltValueNullFieldError.checkNotNull(op, r'CedarPolicyPrincipal', 'op'); + } + + @override + CedarPolicyPrincipal rebuild( + void Function(CedarPolicyPrincipalBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicyPrincipalBuilder toBuilder() => + new CedarPolicyPrincipalBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicyPrincipal && + op == other.op && + entity == other.entity && + entityType == other.entityType; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, op.hashCode); + _$hash = $jc(_$hash, entity.hashCode); + _$hash = $jc(_$hash, entityType.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicyPrincipal') + ..add('op', op) + ..add('entity', entity) + ..add('entityType', entityType)) + .toString(); + } +} + +class CedarPolicyPrincipalBuilder + implements Builder { + _$CedarPolicyPrincipal? _$v; + + CedarPolicyOp? _op; + CedarPolicyOp? get op => _$this._op; + set op(CedarPolicyOp? op) => _$this._op = op; + + CedarEntityIdBuilder? _entity; + CedarEntityIdBuilder get entity => + _$this._entity ??= new CedarEntityIdBuilder(); + set entity(CedarEntityIdBuilder? entity) => _$this._entity = entity; + + String? _entityType; + String? get entityType => _$this._entityType; + set entityType(String? entityType) => _$this._entityType = entityType; + + CedarPolicyPrincipalBuilder(); + + CedarPolicyPrincipalBuilder get _$this { + final $v = _$v; + if ($v != null) { + _op = $v.op; + _entity = $v.entity?.toBuilder(); + _entityType = $v.entityType; + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicyPrincipal other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicyPrincipal; + } + + @override + void update(void Function(CedarPolicyPrincipalBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicyPrincipal build() => _build(); + + _$CedarPolicyPrincipal _build() { + CedarPolicyPrincipal._validate(this); + _$CedarPolicyPrincipal _$result; + try { + _$result = _$v ?? + new _$CedarPolicyPrincipal._( + op: BuiltValueNullFieldError.checkNotNull( + op, r'CedarPolicyPrincipal', 'op'), + entity: _entity?.build(), + entityType: entityType); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'entity'; + _entity?.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarPolicyPrincipal', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +class _$CedarPolicyAction extends CedarPolicyAction { + @override + final CedarPolicyOp op; + @override + final CedarEntityId? entity; + @override + final BuiltList? entities; + + factory _$CedarPolicyAction( + [void Function(CedarPolicyActionBuilder)? updates]) => + (new CedarPolicyActionBuilder()..update(updates))._build(); + + _$CedarPolicyAction._({required this.op, this.entity, this.entities}) + : super._() { + BuiltValueNullFieldError.checkNotNull(op, r'CedarPolicyAction', 'op'); + } + + @override + CedarPolicyAction rebuild(void Function(CedarPolicyActionBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicyActionBuilder toBuilder() => + new CedarPolicyActionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicyAction && + op == other.op && + entity == other.entity && + entities == other.entities; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, op.hashCode); + _$hash = $jc(_$hash, entity.hashCode); + _$hash = $jc(_$hash, entities.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicyAction') + ..add('op', op) + ..add('entity', entity) + ..add('entities', entities)) + .toString(); + } +} + +class CedarPolicyActionBuilder + implements Builder { + _$CedarPolicyAction? _$v; + + CedarPolicyOp? _op; + CedarPolicyOp? get op => _$this._op; + set op(CedarPolicyOp? op) => _$this._op = op; + + CedarEntityIdBuilder? _entity; + CedarEntityIdBuilder get entity => + _$this._entity ??= new CedarEntityIdBuilder(); + set entity(CedarEntityIdBuilder? entity) => _$this._entity = entity; + + ListBuilder? _entities; + ListBuilder get entities => + _$this._entities ??= new ListBuilder(); + set entities(ListBuilder? entities) => + _$this._entities = entities; + + CedarPolicyActionBuilder(); + + CedarPolicyActionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _op = $v.op; + _entity = $v.entity?.toBuilder(); + _entities = $v.entities?.toBuilder(); + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicyAction other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicyAction; + } + + @override + void update(void Function(CedarPolicyActionBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicyAction build() => _build(); + + _$CedarPolicyAction _build() { + CedarPolicyAction._validate(this); + _$CedarPolicyAction _$result; + try { + _$result = _$v ?? + new _$CedarPolicyAction._( + op: BuiltValueNullFieldError.checkNotNull( + op, r'CedarPolicyAction', 'op'), + entity: _entity?.build(), + entities: _entities?.build()); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'entity'; + _entity?.build(); + _$failedField = 'entities'; + _entities?.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarPolicyAction', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +class _$CedarPolicyResource extends CedarPolicyResource { + @override + final CedarPolicyOp op; + @override + final CedarEntityId? entity; + @override + final String? entityType; + + factory _$CedarPolicyResource( + [void Function(CedarPolicyResourceBuilder)? updates]) => + (new CedarPolicyResourceBuilder()..update(updates))._build(); + + _$CedarPolicyResource._({required this.op, this.entity, this.entityType}) + : super._() { + BuiltValueNullFieldError.checkNotNull(op, r'CedarPolicyResource', 'op'); + } + + @override + CedarPolicyResource rebuild( + void Function(CedarPolicyResourceBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicyResourceBuilder toBuilder() => + new CedarPolicyResourceBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicyResource && + op == other.op && + entity == other.entity && + entityType == other.entityType; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, op.hashCode); + _$hash = $jc(_$hash, entity.hashCode); + _$hash = $jc(_$hash, entityType.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicyResource') + ..add('op', op) + ..add('entity', entity) + ..add('entityType', entityType)) + .toString(); + } +} + +class CedarPolicyResourceBuilder + implements Builder { + _$CedarPolicyResource? _$v; + + CedarPolicyOp? _op; + CedarPolicyOp? get op => _$this._op; + set op(CedarPolicyOp? op) => _$this._op = op; + + CedarEntityIdBuilder? _entity; + CedarEntityIdBuilder get entity => + _$this._entity ??= new CedarEntityIdBuilder(); + set entity(CedarEntityIdBuilder? entity) => _$this._entity = entity; + + String? _entityType; + String? get entityType => _$this._entityType; + set entityType(String? entityType) => _$this._entityType = entityType; + + CedarPolicyResourceBuilder(); + + CedarPolicyResourceBuilder get _$this { + final $v = _$v; + if ($v != null) { + _op = $v.op; + _entity = $v.entity?.toBuilder(); + _entityType = $v.entityType; + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicyResource other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicyResource; + } + + @override + void update(void Function(CedarPolicyResourceBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicyResource build() => _build(); + + _$CedarPolicyResource _build() { + CedarPolicyResource._validate(this); + _$CedarPolicyResource _$result; + try { + _$result = _$v ?? + new _$CedarPolicyResource._( + op: BuiltValueNullFieldError.checkNotNull( + op, r'CedarPolicyResource', 'op'), + entity: _entity?.build(), + entityType: entityType); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'entity'; + _entity?.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarPolicyResource', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +class _$CedarPolicyCondition extends CedarPolicyCondition { + @override + final CedarPolicyConditionKind kind; + @override + final JsonObject bodyJson; + + factory _$CedarPolicyCondition( + [void Function(CedarPolicyConditionBuilder)? updates]) => + (new CedarPolicyConditionBuilder()..update(updates))._build(); + + _$CedarPolicyCondition._({required this.kind, required this.bodyJson}) + : super._() { + BuiltValueNullFieldError.checkNotNull( + kind, r'CedarPolicyCondition', 'kind'); + BuiltValueNullFieldError.checkNotNull( + bodyJson, r'CedarPolicyCondition', 'bodyJson'); + } + + @override + CedarPolicyCondition rebuild( + void Function(CedarPolicyConditionBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicyConditionBuilder toBuilder() => + new CedarPolicyConditionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicyCondition && + kind == other.kind && + bodyJson == other.bodyJson; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, kind.hashCode); + _$hash = $jc(_$hash, bodyJson.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicyCondition') + ..add('kind', kind) + ..add('bodyJson', bodyJson)) + .toString(); + } +} + +class CedarPolicyConditionBuilder + implements Builder { + _$CedarPolicyCondition? _$v; + + CedarPolicyConditionKind? _kind; + CedarPolicyConditionKind? get kind => _$this._kind; + set kind(CedarPolicyConditionKind? kind) => _$this._kind = kind; + + JsonObject? _bodyJson; + JsonObject? get bodyJson => _$this._bodyJson; + set bodyJson(JsonObject? bodyJson) => _$this._bodyJson = bodyJson; + + CedarPolicyConditionBuilder(); + + CedarPolicyConditionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _kind = $v.kind; + _bodyJson = $v.bodyJson; + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicyCondition other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicyCondition; + } + + @override + void update(void Function(CedarPolicyConditionBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicyCondition build() => _build(); + + _$CedarPolicyCondition _build() { + final _$result = _$v ?? + new _$CedarPolicyCondition._( + kind: BuiltValueNullFieldError.checkNotNull( + kind, r'CedarPolicyCondition', 'kind'), + bodyJson: BuiltValueNullFieldError.checkNotNull( + bodyJson, r'CedarPolicyCondition', 'bodyJson')); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/cedar/lib/src/policy/cedar_policy_set.dart b/packages/cedar/lib/src/policy/cedar_policy_set.dart new file mode 100644 index 00000000..1cdb6c06 --- /dev/null +++ b/packages/cedar/lib/src/policy/cedar_policy_set.dart @@ -0,0 +1,40 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:cedar/cedar.dart'; + +part 'cedar_policy_set.g.dart'; + +abstract class CedarPolicySet + implements Built { + factory CedarPolicySet({ + Map policies = const {}, + }) { + return _$CedarPolicySet._(policies: policies.build()); + } + + factory CedarPolicySet.fromJson(Map json) { + return CedarPolicySet( + policies: { + for (final MapEntry(key: id, value: json) in json.entries) + id: CedarPolicy.fromJson(json as Map) + .rebuild((p) => p..id ??= id), + }, + ); + } + + factory CedarPolicySet.build([ + void Function(CedarPolicySetBuilder) updates, + ]) = _$CedarPolicySet; + + const CedarPolicySet._(); + + BuiltMap get policies; + // TODO(dnys1): Templates + + Map toJson() => + policies.asMap().map((key, value) => MapEntry(key, value.toJson())); + + static Serializer get serializer => + _$cedarPolicySetSerializer; +} diff --git a/packages/cedar/lib/src/policy/cedar_policy_set.g.dart b/packages/cedar/lib/src/policy/cedar_policy_set.g.dart new file mode 100644 index 00000000..8f6fac8f --- /dev/null +++ b/packages/cedar/lib/src/policy/cedar_policy_set.g.dart @@ -0,0 +1,155 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'cedar_policy_set.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +Serializer _$cedarPolicySetSerializer = + new _$CedarPolicySetSerializer(); + +class _$CedarPolicySetSerializer + implements StructuredSerializer { + @override + final Iterable types = const [CedarPolicySet, _$CedarPolicySet]; + @override + final String wireName = 'CedarPolicySet'; + + @override + Iterable serialize(Serializers serializers, CedarPolicySet object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'policies', + serializers.serialize(object.policies, + specifiedType: const FullType(BuiltMap, + const [const FullType(String), const FullType(CedarPolicy)])), + ]; + + return result; + } + + @override + CedarPolicySet deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new CedarPolicySetBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'policies': + result.policies.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, const [ + const FullType(String), + const FullType(CedarPolicy) + ]))!); + break; + } + } + + return result.build(); + } +} + +class _$CedarPolicySet extends CedarPolicySet { + @override + final BuiltMap policies; + + factory _$CedarPolicySet([void Function(CedarPolicySetBuilder)? updates]) => + (new CedarPolicySetBuilder()..update(updates))._build(); + + _$CedarPolicySet._({required this.policies}) : super._() { + BuiltValueNullFieldError.checkNotNull( + policies, r'CedarPolicySet', 'policies'); + } + + @override + CedarPolicySet rebuild(void Function(CedarPolicySetBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + CedarPolicySetBuilder toBuilder() => + new CedarPolicySetBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is CedarPolicySet && policies == other.policies; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, policies.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'CedarPolicySet') + ..add('policies', policies)) + .toString(); + } +} + +class CedarPolicySetBuilder + implements Builder { + _$CedarPolicySet? _$v; + + MapBuilder? _policies; + MapBuilder get policies => + _$this._policies ??= new MapBuilder(); + set policies(MapBuilder? policies) => + _$this._policies = policies; + + CedarPolicySetBuilder(); + + CedarPolicySetBuilder get _$this { + final $v = _$v; + if ($v != null) { + _policies = $v.policies.toBuilder(); + _$v = null; + } + return this; + } + + @override + void replace(CedarPolicySet other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$CedarPolicySet; + } + + @override + void update(void Function(CedarPolicySetBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + CedarPolicySet build() => _build(); + + _$CedarPolicySet _build() { + _$CedarPolicySet _$result; + try { + _$result = _$v ?? new _$CedarPolicySet._(policies: policies.build()); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'policies'; + policies.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + r'CedarPolicySet', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/cedar/lib/src/policy/json_expr.dart b/packages/cedar/lib/src/policy/json_expr.dart new file mode 100644 index 00000000..71831527 --- /dev/null +++ b/packages/cedar/lib/src/policy/json_expr.dart @@ -0,0 +1,1155 @@ +import 'dart:convert'; + +import 'package:cedar/src/ast/cedar_entity_id.dart'; +import 'package:collection/collection.dart'; +import 'package:meta/meta.dart'; + +sealed class JsonExprOp { + factory JsonExprOp.fromJson(String json) => switch (json) { + 'Value' => JsonExprOpCode.value, + 'Var' => JsonExprOpCode.variable, + 'Slot' => JsonExprOpCode.slot, + 'Unknown' => JsonExprOpCode.unknown, + '!' => JsonExprOpCode.not, + 'neg' => JsonExprOpCode.neg, + '==' => JsonExprOpCode.equals, + '!=' => JsonExprOpCode.notEquals, + 'in' => JsonExprOpCode.in$, + '<' => JsonExprOpCode.lessThan, + '<=' => JsonExprOpCode.lessThanOrEquals, + '>' => JsonExprOpCode.greaterThan, + '>=' => JsonExprOpCode.greaterThanOrEquals, + '&&' => JsonExprOpCode.and, + '||' => JsonExprOpCode.or, + '+' => JsonExprOpCode.plus, + '-' => JsonExprOpCode.minus, + '*' => JsonExprOpCode.times, + 'contains' => JsonExprOpCode.contains, + 'containsAll' => JsonExprOpCode.containsAll, + 'containsAny' => JsonExprOpCode.containsAny, + '.' => JsonExprOpCode.getAttribute, + 'has' => JsonExprOpCode.hasAttribute, + 'like' => JsonExprOpCode.like, + 'is' => JsonExprOpCode.is$, + 'if-then-else' => JsonExprOpCode.ifThenElse, + 'Set' => JsonExprOpCode.set, + 'Record' => JsonExprOpCode.record, + _ => JsonExprOpFunc(json), + }; + + String toJson(); +} + +final class JsonExprOpFunc implements JsonExprOp { + const JsonExprOpFunc(this.name); + + final String name; + + @override + String toJson() => name; + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprOpFunc && name == other.name; + + @override + int get hashCode => name.hashCode; +} + +enum JsonExprOpCode implements JsonExprOp { + value, + variable, + slot, + unknown, + not, + neg, + equals, + notEquals, + in$, + lessThan, + lessThanOrEquals, + greaterThan, + greaterThanOrEquals, + and, + or, + plus, + minus, + times, + contains, + containsAll, + containsAny, + getAttribute, + hasAttribute, + like, + is$, + ifThenElse, + set, + record; + + @override + String toJson() => switch (this) { + value => 'Value', + variable => 'Var', + slot => 'Slot', + unknown => 'Unknown', + not => '!', + neg => 'neg', + equals => '==', + notEquals => '!=', + in$ => 'in', + lessThan => '<', + lessThanOrEquals => '<=', + greaterThan => '>', + greaterThanOrEquals => '>=', + and => '&&', + or => '||', + plus => '+', + minus => '-', + times => '*', + contains => 'contains', + containsAll => 'containsAll', + containsAny => 'containsAny', + getAttribute => '.', + hasAttribute => 'has', + like => 'like', + is$ => 'is', + ifThenElse => 'if-then-else', + set => 'Set', + record => 'Record', + }; +} + +sealed class JsonExpr { + const JsonExpr(); + + factory JsonExpr.fromJson(Map json) { + if (json.keys.length != 1) { + throw FormatException('Expected exactly one key in JSON expression'); + } + final MapEntry(:key, :value) = json.entries.first; + final op = JsonExprOp.fromJson(key); + return switch (op) { + JsonExprOpCode.value => JsonExprValue.fromJson(value), + JsonExprOpCode.variable => JsonExprVariable.fromJson(value as String), + JsonExprOpCode.slot => JsonExprSlot.fromJson(value as String), + JsonExprOpCode.unknown => + JsonExprUnknown.fromJson(value as Map), + JsonExprOpCode.not => JsonExprNot.fromJson(value as Map), + JsonExprOpCode.neg => JsonExprNeg.fromJson(value as Map), + JsonExprOpCode.equals => + JsonExprEquals.fromJson(value as Map), + JsonExprOpCode.notEquals => + JsonExprNotEquals.fromJson(value as Map), + JsonExprOpCode.in$ => JsonExprIn.fromJson(value as Map), + JsonExprOpCode.lessThan => + JsonExprLessThan.fromJson(value as Map), + JsonExprOpCode.lessThanOrEquals => + JsonExprLessThanOrEquals.fromJson(value as Map), + JsonExprOpCode.greaterThan => + JsonExprGreaterThan.fromJson(value as Map), + JsonExprOpCode.greaterThanOrEquals => + JsonExprGreaterThanOrEquals.fromJson(value as Map), + JsonExprOpCode.and => JsonExprAnd.fromJson(value as Map), + JsonExprOpCode.or => JsonExprOr.fromJson(value as Map), + JsonExprOpCode.plus => + JsonExprPlus.fromJson(value as Map), + JsonExprOpCode.minus => + JsonExprMinus.fromJson(value as Map), + JsonExprOpCode.times => + JsonExprTimes.fromJson(value as Map), + JsonExprOpCode.contains => + JsonExprContains.fromJson(value as Map), + JsonExprOpCode.containsAll => + JsonExprContainsAll.fromJson(value as Map), + JsonExprOpCode.containsAny => + JsonExprContainsAny.fromJson(value as Map), + JsonExprOpCode.getAttribute => + JsonExprGetAttribute.fromJson(value as Map), + JsonExprOpCode.hasAttribute => + JsonExprHasAttribute.fromJson(value as Map), + JsonExprOpCode.like => + JsonExprLike.fromJson(value as Map), + JsonExprOpCode.is$ => JsonExprIs.fromJson(value as Map), + JsonExprOpCode.ifThenElse => + JsonExprIfThenElse.fromJson(value as Map), + JsonExprOpCode.set => JsonExprSet.fromJson(value as List), + JsonExprOpCode.record => + JsonExprRecord.fromJson(value as Map), + final JsonExprOpFunc op => JsonExprFuncCall( + op, + (value as List) + .map((el) => JsonExpr.fromJson(el as Map)) + .toList(), + ), + }; + } + + const factory JsonExpr.value(CedarValueJson value) = JsonExprValue; + + const factory JsonExpr.variable(CedarVariable variable) = JsonExprVariable; + + const factory JsonExpr.slot(CedarSlotId slotId) = JsonExprSlot; + + const factory JsonExpr.unknown(String name) = JsonExprUnknown; + + const factory JsonExpr.not(JsonExpr arg) = JsonExprNot; + + const factory JsonExpr.neg(JsonExpr arg) = JsonExprNeg; + + const factory JsonExpr.equals(JsonExpr left, JsonExpr right) = JsonExprEquals; + + const factory JsonExpr.notEquals(JsonExpr left, JsonExpr right) = + JsonExprNotEquals; + + const factory JsonExpr.in$(JsonExpr left, JsonExpr right) = JsonExprIn; + + const factory JsonExpr.lessThan(JsonExpr left, JsonExpr right) = + JsonExprLessThan; + + const factory JsonExpr.lessThanOrEquals(JsonExpr left, JsonExpr right) = + JsonExprLessThanOrEquals; + + const factory JsonExpr.greaterThan(JsonExpr left, JsonExpr right) = + JsonExprGreaterThan; + + const factory JsonExpr.greaterThanOrEquals(JsonExpr left, JsonExpr right) = + JsonExprGreaterThanOrEquals; + + const factory JsonExpr.and(JsonExpr left, JsonExpr right) = JsonExprAnd; + + const factory JsonExpr.or(JsonExpr left, JsonExpr right) = JsonExprOr; + + const factory JsonExpr.plus(JsonExpr left, JsonExpr right) = JsonExprPlus; + + const factory JsonExpr.minus(JsonExpr left, JsonExpr right) = JsonExprMinus; + + const factory JsonExpr.times(JsonExpr left, JsonExpr right) = JsonExprTimes; + + const factory JsonExpr.contains(JsonExpr left, JsonExpr right) = + JsonExprContains; + + const factory JsonExpr.containsAll(JsonExpr left, JsonExpr right) = + JsonExprContainsAll; + + const factory JsonExpr.containsAny(JsonExpr left, JsonExpr right) = + JsonExprContainsAny; + + const factory JsonExpr.getAttribute(JsonExpr left, String attr) = + JsonExprGetAttribute; + + const factory JsonExpr.hasAttribute(JsonExpr left, String attr) = + JsonExprHasAttribute; + + const factory JsonExpr.like(JsonExpr left, String pattern) = JsonExprLike; + + const factory JsonExpr.is$(JsonExpr left, String entityType, + [JsonExpr? inExpr]) = JsonExprIs; + + const factory JsonExpr.ifThenElse({ + required JsonExpr cond, + required JsonExpr then, + required JsonExpr else$, + }) = JsonExprIfThenElse; + + const factory JsonExpr.set(List expressions) = JsonExprSet; + + const factory JsonExpr.record(Map attributes) = + JsonExprRecord; + + const factory JsonExpr.funcCall(JsonExprOpFunc fn, List args) = + JsonExprFuncCall; + + JsonExprOp get op; + + Object? valueToJson(); + + @nonVirtual + Map toJson() => { + op.toJson(): valueToJson(), + }; + + @override + String toString() => _prettyJson(toJson()); +} + +final class JsonExprFuncCall extends JsonExpr { + const JsonExprFuncCall(this.fn, this.args); + + final JsonExprOpFunc fn; + final List args; + + @override + JsonExprOpFunc get op => fn; + + @override + List> valueToJson() => + args.map((arg) => arg.toJson()).toList(); + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprFuncCall && + op == other.op && + const ListEquality().equals(args, other.args); + + @override + int get hashCode => Object.hash(op, op, args); +} + +sealed class CedarValueJson { + const CedarValueJson(); + + factory CedarValueJson.fromJson(Object? json) { + return switch (json) { + {'__entity': _} => CedarValueEntity.fromJson(json), + {'__extn': _} => CedarValueExtension.fromJson(json), + final bool json => CedarValueBool.fromJson(json), + final num json => CedarValueLong.fromJson(json.toInt()), + final String json => CedarValueString.fromJson(json), + final List json => CedarValueSet.fromJson(json), + final Map json => CedarValueRecord.fromJson(json.cast()), + _ => throw FormatException('Invalid Cedar JSON value: $json'), + }; + } + + const factory CedarValueJson.entity(CedarEntityId entityId) = + CedarValueEntity; + + const factory CedarValueJson.extension(CedarExtensionInvocation extension) = + CedarValueExtension; + + const factory CedarValueJson.bool(bool value) = CedarValueBool; + + const factory CedarValueJson.long(int value) = CedarValueLong; + + const factory CedarValueJson.string(String value) = CedarValueString; + + const factory CedarValueJson.set(List elements) = + CedarValueSet; + + const factory CedarValueJson.record(Map attributes) = + CedarValueRecord; + + Object? toJson(); + + @override + String toString() => _prettyJson(toJson()); +} + +final class CedarValueEntity extends CedarValueJson { + const CedarValueEntity(this.entityId); + + factory CedarValueEntity.fromJson(Map json) { + return CedarValueEntity( + CedarEntityId.fromJson(json['__entity'] as Map), + ); + } + + final CedarEntityId entityId; + + @override + Map toJson() => { + '__entity': entityId.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarValueEntity && entityId == other.entityId; + + @override + int get hashCode => entityId.hashCode; +} + +final class CedarValueExtension extends CedarValueJson { + const CedarValueExtension(this.extension); + + factory CedarValueExtension.fromJson(Map json) { + return CedarValueExtension( + CedarExtensionInvocation.fromJson(json['__extn'] as Map), + ); + } + + final CedarExtensionInvocation extension; + + @override + Map toJson() => { + '__extn': extension.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarValueExtension && extension == other.extension; + + @override + int get hashCode => extension.hashCode; +} + +final class CedarExtensionInvocation { + const CedarExtensionInvocation({ + required this.fn, + required this.arg, + }); + + factory CedarExtensionInvocation.fromJson(Map json) { + return CedarExtensionInvocation( + fn: json['fn'] as String, + arg: CedarValueJson.fromJson(json['arg']), + ); + } + + final String fn; + final CedarValueJson arg; + + Map toJson() => { + 'fn': fn, + 'arg': arg.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarExtensionInvocation && fn == other.fn && arg == other.arg; + + @override + int get hashCode => Object.hash(fn, arg); +} + +final class CedarValueBool extends CedarValueJson { + const CedarValueBool(this.value); + + factory CedarValueBool.fromJson(bool json) { + return CedarValueBool(json); + } + + final bool value; + + @override + bool toJson() => value; + + @override + bool operator ==(Object other) => + identical(this, other) || other is CedarValueBool && value == other.value; + + @override + int get hashCode => value.hashCode; +} + +final class CedarValueLong extends CedarValueJson { + const CedarValueLong(this.value); + + factory CedarValueLong.fromJson(int json) { + return CedarValueLong(json); + } + + final int value; + + @override + int toJson() => value; + + @override + bool operator ==(Object other) => + identical(this, other) || other is CedarValueLong && value == other.value; + + @override + int get hashCode => value.hashCode; +} + +final class CedarValueString extends CedarValueJson { + const CedarValueString(this.value); + + factory CedarValueString.fromJson(String json) { + return CedarValueString(json); + } + + final String value; + + @override + String toJson() => value; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarValueString && value == other.value; + + @override + int get hashCode => value.hashCode; +} + +final class CedarValueSet extends CedarValueJson { + const CedarValueSet(this.elements); + + factory CedarValueSet.fromJson(List json) { + return CedarValueSet([ + for (final element in json) CedarValueJson.fromJson(element), + ]); + } + + final List elements; + + @override + List toJson() => [ + for (final element in elements) element.toJson(), + ]; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarValueSet && + const UnorderedIterableEquality().equals(elements, other.elements); + + @override + int get hashCode => Object.hashAllUnordered(elements); +} + +final class CedarValueRecord extends CedarValueJson { + const CedarValueRecord(this.attributes); + + factory CedarValueRecord.fromJson(Map json) { + return CedarValueRecord({ + for (final entry in json.entries) + entry.key: CedarValueJson.fromJson(entry.value) + }); + } + + final Map attributes; + + @override + Map toJson() => { + for (final entry in attributes.entries) entry.key: entry.value.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is CedarValueRecord && + const MapEquality().equals(attributes, other.attributes); + + @override + int get hashCode => const MapEquality().hash(attributes); +} + +final class JsonExprValue extends JsonExpr { + const JsonExprValue(this.value); + + factory JsonExprValue.fromJson(Object? json) { + return JsonExprValue(CedarValueJson.fromJson(json)); + } + + final CedarValueJson value; + + @override + JsonExprOpCode get op => JsonExprOpCode.value; + + @override + Object? valueToJson() => value.toJson(); + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprValue && value == other.value; + + @override + int get hashCode => Object.hash(op, value); +} + +enum CedarVariable { principal, action, resource, context } + +final class JsonExprVariable extends JsonExpr { + const JsonExprVariable(this.variable); + + factory JsonExprVariable.fromJson(String json) { + return JsonExprVariable(CedarVariable.values.byName(json)); + } + + final CedarVariable variable; + + @override + JsonExprOpCode get op => JsonExprOpCode.variable; + + @override + String valueToJson() => variable.name; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprVariable && variable == other.variable; + + @override + int get hashCode => Object.hash(op, variable); +} + +enum CedarSlotId { principal, resource } + +final class JsonExprSlot extends JsonExpr { + const JsonExprSlot(this.slotId); + + factory JsonExprSlot.fromJson(String json) { + return JsonExprSlot(CedarSlotId.values.byName(json.substring(1))); + } + + final CedarSlotId slotId; + + @override + JsonExprOpCode get op => JsonExprOpCode.slot; + + @override + String valueToJson() => '?${slotId.name}'; + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprSlot && slotId == other.slotId; + + @override + int get hashCode => Object.hash(op, slotId); +} + +final class JsonExprUnknown extends JsonExpr { + const JsonExprUnknown(this.name); + + factory JsonExprUnknown.fromJson(Map json) { + return JsonExprUnknown(json['name'] as String); + } + + final String name; + + @override + JsonExprOpCode get op => JsonExprOpCode.unknown; + + @override + Map valueToJson() => { + 'name': name, + }; + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprUnknown && name == other.name; + + @override + int get hashCode => Object.hash(op, name); +} + +final class JsonExprNot extends JsonExpr { + const JsonExprNot(this.arg); + + factory JsonExprNot.fromJson(Map json) { + return JsonExprNot( + JsonExpr.fromJson(json['arg'] as Map), + ); + } + + final JsonExpr arg; + + @override + JsonExprOpCode get op => JsonExprOpCode.not; + + @override + Map valueToJson() => { + 'arg': arg.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprNot && arg == other.arg; + + @override + int get hashCode => Object.hash(op, arg); +} + +final class JsonExprNeg extends JsonExpr { + const JsonExprNeg(this.arg); + + factory JsonExprNeg.fromJson(Map json) { + return JsonExprNeg( + JsonExpr.fromJson(json['arg'] as Map), + ); + } + + final JsonExpr arg; + + @override + JsonExprOpCode get op => JsonExprOpCode.neg; + + @override + Map valueToJson() => { + 'arg': arg.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || other is JsonExprNeg && arg == other.arg; + + @override + int get hashCode => Object.hash(op, arg); +} + +sealed class JsonBinaryExpr extends JsonExpr { + const JsonBinaryExpr(this.left, this.right); + + final JsonExpr left; + final JsonExpr right; + + @nonVirtual + @override + Map valueToJson() => { + 'left': left.toJson(), + 'right': right.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) && + other is JsonBinaryExpr && + op == other.op && + left == other.left && + right == other.right; + + @override + int get hashCode => Object.hash(op, left, right); +} + +final class JsonExprEquals extends JsonBinaryExpr { + const JsonExprEquals(super.left, super.right); + + factory JsonExprEquals.fromJson(Map json) { + return JsonExprEquals( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.equals; +} + +final class JsonExprNotEquals extends JsonBinaryExpr { + const JsonExprNotEquals(super.left, super.right); + + factory JsonExprNotEquals.fromJson(Map json) { + return JsonExprNotEquals( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.notEquals; +} + +final class JsonExprIn extends JsonBinaryExpr { + const JsonExprIn(super.left, super.right); + + factory JsonExprIn.fromJson(Map json) { + return JsonExprIn( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.in$; +} + +final class JsonExprLessThan extends JsonBinaryExpr { + const JsonExprLessThan(super.left, super.right); + + factory JsonExprLessThan.fromJson(Map json) { + return JsonExprLessThan( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.lessThan; +} + +final class JsonExprLessThanOrEquals extends JsonBinaryExpr { + const JsonExprLessThanOrEquals(super.left, super.right); + + factory JsonExprLessThanOrEquals.fromJson(Map json) { + return JsonExprLessThanOrEquals( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.lessThanOrEquals; +} + +final class JsonExprGreaterThan extends JsonBinaryExpr { + const JsonExprGreaterThan(super.left, super.right); + + factory JsonExprGreaterThan.fromJson(Map json) { + return JsonExprGreaterThan( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.greaterThan; +} + +final class JsonExprGreaterThanOrEquals extends JsonBinaryExpr { + const JsonExprGreaterThanOrEquals(super.left, super.right); + + factory JsonExprGreaterThanOrEquals.fromJson(Map json) { + return JsonExprGreaterThanOrEquals( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.greaterThanOrEquals; +} + +final class JsonExprAnd extends JsonBinaryExpr { + const JsonExprAnd(super.left, super.right); + + factory JsonExprAnd.fromJson(Map json) { + return JsonExprAnd( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.and; +} + +final class JsonExprOr extends JsonBinaryExpr { + const JsonExprOr(super.left, super.right); + + factory JsonExprOr.fromJson(Map json) { + return JsonExprOr( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.or; +} + +final class JsonExprPlus extends JsonBinaryExpr { + const JsonExprPlus(super.left, super.right); + + factory JsonExprPlus.fromJson(Map json) { + return JsonExprPlus( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.plus; +} + +final class JsonExprMinus extends JsonBinaryExpr { + const JsonExprMinus(super.left, super.right); + + factory JsonExprMinus.fromJson(Map json) { + return JsonExprMinus( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.minus; +} + +final class JsonExprTimes extends JsonBinaryExpr { + const JsonExprTimes(super.left, super.right); + + factory JsonExprTimes.fromJson(Map json) { + return JsonExprTimes( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.times; +} + +final class JsonExprContains extends JsonBinaryExpr { + const JsonExprContains(super.left, super.right); + + factory JsonExprContains.fromJson(Map json) { + return JsonExprContains( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.contains; +} + +final class JsonExprContainsAll extends JsonBinaryExpr { + const JsonExprContainsAll(super.left, super.right); + + factory JsonExprContainsAll.fromJson(Map json) { + return JsonExprContainsAll( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.containsAll; +} + +final class JsonExprContainsAny extends JsonBinaryExpr { + const JsonExprContainsAny(super.left, super.right); + + factory JsonExprContainsAny.fromJson(Map json) { + return JsonExprContainsAny( + JsonExpr.fromJson(json['left'] as Map), + JsonExpr.fromJson(json['right'] as Map), + ); + } + + @override + JsonExprOpCode get op => JsonExprOpCode.containsAny; +} + +final class JsonExprGetAttribute extends JsonExpr { + const JsonExprGetAttribute(this.left, this.attr); + + factory JsonExprGetAttribute.fromJson(Map json) { + return JsonExprGetAttribute( + JsonExpr.fromJson(json['left'] as Map), + json['attr'] as String, + ); + } + + final JsonExpr left; + final String attr; + + @override + JsonExprOpCode get op => JsonExprOpCode.getAttribute; + + @override + Map valueToJson() => { + 'left': left.toJson(), + 'attr': attr, + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprGetAttribute && left == other.left && attr == other.attr; + + @override + int get hashCode => Object.hash(op, left, attr); +} + +final class JsonExprHasAttribute extends JsonExpr { + const JsonExprHasAttribute(this.left, this.attr); + + factory JsonExprHasAttribute.fromJson(Map json) { + return JsonExprHasAttribute( + JsonExpr.fromJson(json['left'] as Map), + json['attr'] as String, + ); + } + + final JsonExpr left; + final String attr; + + @override + JsonExprOpCode get op => JsonExprOpCode.hasAttribute; + + @override + Map valueToJson() => { + 'left': left.toJson(), + 'attr': attr, + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprHasAttribute && left == other.left && attr == other.attr; + + @override + int get hashCode => Object.hash(op, left, attr); +} + +final class JsonExprLike extends JsonExpr { + const JsonExprLike(this.left, this.pattern); + + factory JsonExprLike.fromJson(Map json) { + return JsonExprLike( + JsonExpr.fromJson(json['left'] as Map), + json['pattern'] as String, + ); + } + + final JsonExpr left; + final String pattern; + + @override + JsonExprOpCode get op => JsonExprOpCode.like; + + @override + Map valueToJson() => { + 'left': left.toJson(), + 'pattern': pattern, + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprLike && left == other.left && pattern == other.pattern; + + @override + int get hashCode => Object.hash(op, left, pattern); +} + +final class JsonExprIs extends JsonExpr { + const JsonExprIs(this.left, this.entityType, [this.inExpr]); + + factory JsonExprIs.fromJson(Map json) { + return JsonExprIs( + JsonExpr.fromJson(json['left'] as Map), + json['entity_type'] as String, + json['in'] != null + ? JsonExpr.fromJson(json['in'] as Map) + : null, + ); + } + + final JsonExpr left; + final String entityType; + final JsonExpr? inExpr; + + @override + JsonExprOpCode get op => JsonExprOpCode.is$; + + @override + Map valueToJson() => { + 'left': left.toJson(), + 'entity_type': entityType, + if (inExpr case final inExpr?) 'in': inExpr.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprIs && + left == other.left && + entityType == other.entityType && + inExpr == other.inExpr; + + @override + int get hashCode => Object.hash(op, left, entityType, inExpr); +} + +final class JsonExprIfThenElse extends JsonExpr { + const JsonExprIfThenElse({ + required this.cond, + required this.then, + required this.else$, + }); + + factory JsonExprIfThenElse.fromJson(Map json) { + return JsonExprIfThenElse( + cond: JsonExpr.fromJson(json['if'] as Map), + then: JsonExpr.fromJson(json['then'] as Map), + else$: JsonExpr.fromJson(json['else'] as Map), + ); + } + + final JsonExpr cond; + final JsonExpr then; + final JsonExpr else$; + + @override + JsonExprOpCode get op => JsonExprOpCode.ifThenElse; + + @override + Map valueToJson() => { + 'if': cond.toJson(), + 'then': then.toJson(), + 'else': else$.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprIfThenElse && + cond == other.cond && + then == other.then && + else$ == other.else$; + + @override + int get hashCode => Object.hash(op, cond, then, else$); +} + +final class JsonExprSet extends JsonExpr { + const JsonExprSet(this.expressions); + + factory JsonExprSet.fromJson(List json) { + return JsonExprSet([ + for (final expression in json) + JsonExpr.fromJson(expression as Map) + ]); + } + + final List expressions; + + @override + JsonExprOpCode get op => JsonExprOpCode.set; + + @override + List valueToJson() => [ + for (final expression in expressions) expression.toJson(), + ]; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprSet && + const UnorderedIterableEquality() + .equals(expressions, other.expressions); + + @override + int get hashCode => Object.hashAllUnordered(expressions); +} + +final class JsonExprRecord extends JsonExpr { + const JsonExprRecord(this.attributes); + + factory JsonExprRecord.fromJson(Map json) { + return JsonExprRecord({ + for (final entry in json.entries) + entry.key: JsonExpr.fromJson(entry.value as Map) + }); + } + + final Map attributes; + + @override + JsonExprOpCode get op => JsonExprOpCode.record; + + @override + Map valueToJson() => { + for (final entry in attributes.entries) entry.key: entry.value.toJson(), + }; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is JsonExprRecord && + const MapEquality().equals(attributes, other.attributes); + + @override + int get hashCode => const MapEquality().hash(attributes); +} + +String _prettyJson(Object? o) => const JsonEncoder.withIndent(' ').convert(o); diff --git a/packages/cedar/lib/src/serializers.dart b/packages/cedar/lib/src/serializers.dart new file mode 100644 index 00000000..a2afb173 --- /dev/null +++ b/packages/cedar/lib/src/serializers.dart @@ -0,0 +1,20 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/serializer.dart'; +import 'package:cedar/cedar.dart'; + +part 'serializers.g.dart'; + +@SerializersFor([ + CedarEntityId, + CedarEntity, + CedarPolicySet, + CedarPolicy, + CedarPolicyEffect, + CedarPolicyOp, + CedarPolicyConditionKind, + CedarPolicyPrincipal, + CedarPolicyAction, + CedarPolicyResource, + CedarPolicyCondition, +]) +final Serializers cedarSerializers = _$cedarSerializers; diff --git a/packages/cedar/lib/src/serializers.g.dart b/packages/cedar/lib/src/serializers.g.dart new file mode 100644 index 00000000..b682b045 --- /dev/null +++ b/packages/cedar/lib/src/serializers.g.dart @@ -0,0 +1,45 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'serializers.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +Serializers _$cedarSerializers = (new Serializers().toBuilder() + ..add(CedarEntity.serializer) + ..add(CedarEntityId.serializer) + ..add(CedarPolicy.serializer) + ..add(CedarPolicyAction.serializer) + ..add(CedarPolicyCondition.serializer) + ..add(CedarPolicyConditionKind.serializer) + ..add(CedarPolicyEffect.serializer) + ..add(CedarPolicyOp.serializer) + ..add(CedarPolicyPrincipal.serializer) + ..add(CedarPolicyResource.serializer) + ..add(CedarPolicySet.serializer) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(CedarEntityId)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(CedarEntityId)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, + const [const FullType(String), const FullType(CedarValueJson)]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType( + BuiltList, const [const FullType(CedarPolicyCondition)]), + () => new ListBuilder()) + ..addBuilderFactory( + const FullType( + BuiltMap, const [const FullType(String), const FullType(String)]), + () => new MapBuilder()) + ..addBuilderFactory( + const FullType(BuiltMap, + const [const FullType(String), const FullType(CedarPolicy)]), + () => new MapBuilder())) + .build(); + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/cedar/lib/src/util.dart b/packages/cedar/lib/src/util.dart new file mode 100644 index 00000000..15b5740d --- /dev/null +++ b/packages/cedar/lib/src/util.dart @@ -0,0 +1,8 @@ +extension Let on T? { + R? let(R Function(T) f) { + if (this case final this_?) { + return f(this_); + } + return null; + } +} diff --git a/packages/cedar/pubspec.yaml b/packages/cedar/pubspec.yaml new file mode 100644 index 00000000..4d3d0fa0 --- /dev/null +++ b/packages/cedar/pubspec.yaml @@ -0,0 +1,19 @@ +name: cedar +description: Core types and interfaces of the Cedar policy language in Dart. +version: 0.1.0 + +environment: + sdk: ^3.3.0 + +dependencies: + built_collection: ^5.1.1 + built_value: ^8.9.1 + collection: ^1.18.0 + json_annotation: ^4.8.1 + meta: ^1.11.0 + +dev_dependencies: + build_runner: ^2.4.8 + built_value_generator: ^8.9.1 + lints: ^3.0.0 + test: ^1.24.0 diff --git a/packages/celest/lib/celest.dart b/packages/celest/lib/celest.dart index d242310f..51f01b06 100644 --- a/packages/celest/lib/celest.dart +++ b/packages/celest/lib/celest.dart @@ -3,13 +3,21 @@ library celest; export 'package:celest_core/celest_core.dart'; +/// Auth +export 'src/auth/auth.dart'; +export 'src/auth/auth_provider.dart'; + /// Config export 'src/config/env.dart'; /// Core export 'src/core/cloud_widget.dart'; +export 'src/core/context.dart'; export 'src/core/project.dart'; /// Functions export 'src/functions/cloud_api.dart'; export 'src/functions/cloud_function.dart'; + +/// Grants +export 'src/grants/grants.dart'; diff --git a/packages/celest/lib/src/auth/auth_provider.dart b/packages/celest/lib/src/auth/auth_provider.dart index 54c5b624..39d60488 100644 --- a/packages/celest/lib/src/auth/auth_provider.dart +++ b/packages/celest/lib/src/auth/auth_provider.dart @@ -2,15 +2,15 @@ /// An authentication provider which can be used to sign in to Celest. /// /// Currently, Celest supports the following authentication methods: -/// - [AuthProvider.google] Sign in with Google +/// - [AuthProvider.email] Email sign-in with OTP codes. /// {@endtemplate} sealed class AuthProvider { const AuthProvider(); - /// A provider which enables Sign in with Google. - const factory AuthProvider.google() = _GoogleAuthProvider; + /// A provider which enables email sign-in with OTP codes. + const factory AuthProvider.email() = _EmailAuthProvider; } -final class _GoogleAuthProvider extends AuthProvider { - const _GoogleAuthProvider(); +final class _EmailAuthProvider extends AuthProvider { + const _EmailAuthProvider(); } diff --git a/packages/celest/lib/src/core/context.dart b/packages/celest/lib/src/core/context.dart new file mode 100644 index 00000000..c4bcaf13 --- /dev/null +++ b/packages/celest/lib/src/core/context.dart @@ -0,0 +1,36 @@ +import 'package:celest/celest.dart'; + +/// The context of a [CloudFunction] invocation. +abstract final class Context { + /// A context reference to the [User] invoking a [CloudFunction]. + /// + /// ## Example + /// + /// To inject a user into an `@authenticated` function: + /// + /// ```dart + /// @authenticated + /// Future sayHello({ + /// @Context.user required User user, + /// }) async { + /// print('Hello, ${user.displayName}!'); + /// } + /// ``` + /// + /// If a user is injected to a `@public` or private function, then the + /// user parameter must be nullable: + /// + /// ```dart + /// @public + /// Future sayHello({ + /// @Context.user User? user, + /// }) async { + /// print('Hello, ${user?.displayName ?? 'stranger'}!'); + /// } + /// ``` + static const user = _UserContext(); +} + +final class _UserContext implements Context { + const _UserContext(); +} diff --git a/packages/celest/lib/src/core/project.dart b/packages/celest/lib/src/core/project.dart index 0f140eee..a66a9c4a 100644 --- a/packages/celest/lib/src/core/project.dart +++ b/packages/celest/lib/src/core/project.dart @@ -11,14 +11,8 @@ class Project implements CloudWidget { /// {@macro celest.core.project} const Project({ required this.name, - this.logoUrl, }); /// The name of the project as its identified in your Celest backend. final String name; - - /// The hosted URL of your project's logo. - /// - /// This is used by widgets like [Auth] to craft a custom login page. - final String? logoUrl; } diff --git a/packages/celest/lib/src/grants/grants.dart b/packages/celest/lib/src/grants/grants.dart new file mode 100644 index 00000000..3887943c --- /dev/null +++ b/packages/celest/lib/src/grants/grants.dart @@ -0,0 +1,61 @@ +import 'package:celest/src/core/entity.dart'; + +/// A grant which provides access to all authenticated users. +/// +/// ## Example +/// +/// ```dart +/// import 'package:celest/celest.dart'; +/// +/// @authenticated +/// Future sayHello() async { +/// print('User is authenticated!'); +/// } +/// ``` +const authenticated = _Authenticated(); + +/// A grant which provides access to everyone. +/// +/// **NOTE**: Using this grant on a function or library will make it accessible +/// to the public internet. Anyone will be able to call the functions. +/// +/// ## Example +/// +/// ```dart +/// import 'package:celest/celest.dart'; +/// +/// @public +/// Future sayHello() async { +/// print('Hello, stranger!'); +/// } +/// ``` +const public = _Public(); + +final class _Role implements Entity { + const _Role({ + required this.name, + }); + + static const _Role authenticated = _Role(name: r'$authenticated'); + + final String name; +} + +/// An assignment which grants a set of permissions to a specific group of +/// [Entity]s. +final class _Grant { + const _Grant({ + required this.to, + }); + + /// The group of [Entity] which are granted access. + final List to; +} + +final class _Authenticated extends _Grant { + const _Authenticated() : super(to: const [_Role.authenticated]); +} + +final class _Public { + const _Public(); +} diff --git a/packages/celest/lib/src/runtime/serve.dart b/packages/celest/lib/src/runtime/serve.dart index 737bd89d..8b84b29e 100644 --- a/packages/celest/lib/src/runtime/serve.dart +++ b/packages/celest/lib/src/runtime/serve.dart @@ -57,10 +57,22 @@ abstract base class CloudFunctionTarget { init(); } + static const _contextHeaderPrefix = 'X-Celest-Context-'; + static final _contextHeaderMatcher = RegExp( + _contextHeaderPrefix, + caseSensitive: false, + ); + Future _handler(Request request) async { final bodyJson = await request.decodeJson(); final response = await runZoned( - () => handle(bodyJson), + () => handle({ + for (final MapEntry(:key, :value) in request.headers.entries) + if (key.startsWith(_contextHeaderMatcher)) + '\$${key.substring(_contextHeaderPrefix.length).toLowerCase()}': + value, + ...bodyJson, + }), zoneSpecification: ZoneSpecification( print: (self, parent, zone, message) { parent.print(zone, '[$name] $message'); diff --git a/packages/celest_auth/.gitignore b/packages/celest_auth/.gitignore new file mode 100644 index 00000000..3cceda55 --- /dev/null +++ b/packages/celest_auth/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/packages/celest_auth/CHANGELOG.md b/packages/celest_auth/CHANGELOG.md new file mode 100644 index 00000000..0e1034b4 --- /dev/null +++ b/packages/celest_auth/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.3.0 + +- Initial version. diff --git a/packages/celest_auth/README.md b/packages/celest_auth/README.md new file mode 100644 index 00000000..06c29c6e --- /dev/null +++ b/packages/celest_auth/README.md @@ -0,0 +1 @@ +# Celest Auth diff --git a/packages/celest_auth/analysis_options.yaml b/packages/celest_auth/analysis_options.yaml new file mode 100644 index 00000000..7e76a09d --- /dev/null +++ b/packages/celest_auth/analysis_options.yaml @@ -0,0 +1,14 @@ +include: package:lints/recommended.yaml + +analyzer: + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + errors: + # To prevent issues publishing. + depend_on_referenced_packages: error + public_member_api_docs: ignore # TODO + implementation_imports: ignore # TODO + exclude: + - "**/*.ffi.dart" diff --git a/packages/celest_auth/android/.gitignore b/packages/celest_auth/android/.gitignore new file mode 100644 index 00000000..167e46c9 --- /dev/null +++ b/packages/celest_auth/android/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +local.properties +.idea/ +.DS_Store +build +captures +.cxx \ No newline at end of file diff --git a/packages/celest_auth/android/build.gradle b/packages/celest_auth/android/build.gradle new file mode 100644 index 00000000..ff5e995a --- /dev/null +++ b/packages/celest_auth/android/build.gradle @@ -0,0 +1,67 @@ +group 'dev.celest.celest_auth' +version '1.0-SNAPSHOT' + +buildscript { + ext.kotlin_version = '1.7.21' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.4.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + // Conditional for compatibility with AGP <4.2. + if (project.android.hasProperty("namespace")) { + namespace 'dev.celest.celest_auth' + } + + compileSdk 31 + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + minSdkVersion 21 + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + } + } +} + +dependencies { + implementation "androidx.credentials:credentials:1.3.0-alpha01" + implementation "androidx.credentials:credentials-play-services-auth:1.3.0-alpha01" + implementation "com.google.android.libraries.identity.googleid:googleid:1.1.0" + implementation "androidx.biometric:biometric:1.2.0-alpha05" + implementation "com.google.android.gms:play-services-auth:21.0.0" + implementation "com.google.android.gms:play-services-fido:20.1.0" +} diff --git a/packages/celest_auth/android/consumer-rules.pro b/packages/celest_auth/android/consumer-rules.pro new file mode 100644 index 00000000..c255f910 --- /dev/null +++ b/packages/celest_auth/android/consumer-rules.pro @@ -0,0 +1,5 @@ +-keep class dev.celest.celest_auth.** { *; } +-if class androidx.credentials.CredentialManager +-keep class androidx.credentials.playservices.** { + *; +} \ No newline at end of file diff --git a/packages/celest_auth/android/settings.gradle b/packages/celest_auth/android/settings.gradle new file mode 100644 index 00000000..cbbebcb5 --- /dev/null +++ b/packages/celest_auth/android/settings.gradle @@ -0,0 +1,6 @@ +rootProject.name = 'celest_auth' +dependencyResolutionManagement { + repositories { + google() + } +} diff --git a/packages/celest_auth/android/src/main/AndroidManifest.xml b/packages/celest_auth/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..9ed95bc9 --- /dev/null +++ b/packages/celest_auth/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/packages/celest_auth/android/src/main/kotlin/dev/celest/celest_auth/CelestAuth.kt b/packages/celest_auth/android/src/main/kotlin/dev/celest/celest_auth/CelestAuth.kt new file mode 100644 index 00000000..defd47b9 --- /dev/null +++ b/packages/celest_auth/android/src/main/kotlin/dev/celest/celest_auth/CelestAuth.kt @@ -0,0 +1,64 @@ +package dev.celest.celest_auth + +import android.app.Activity +import android.content.Context +import android.os.CancellationSignal +import android.service.voice.VoiceInteractionSession.ActivityId +import androidx.annotation.Keep +import androidx.credentials.CreateCredentialResponse +import androidx.credentials.CreatePublicKeyCredentialRequest +import androidx.credentials.CredentialManager +import androidx.credentials.CredentialManagerCallback +import androidx.credentials.GetCredentialRequest +import androidx.credentials.GetCredentialResponse +import androidx.credentials.GetPublicKeyCredentialOption +import androidx.credentials.exceptions.CreateCredentialException +import androidx.credentials.exceptions.GetCredentialException +import com.google.android.gms.fido.Fido +import kotlinx.coroutines.coroutineScope +import java.util.concurrent.Executors +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine + +@Keep +class CelestAuth(private val mainActivity: Activity) { + private val credentialManager: CredentialManager = CredentialManager.create(mainActivity) + private val executor = Executors.newCachedThreadPool() + + fun register( + requestJson: String, + callback: CredentialManagerCallback, + ): CancellationSignal { + val request = CreatePublicKeyCredentialRequest( + requestJson = requestJson, + preferImmediatelyAvailableCredentials = true + ) + val cancellationSignal = CancellationSignal() + credentialManager.createCredentialAsync( + mainActivity, + request, + cancellationSignal, + executor, + callback, + ) + return cancellationSignal + } + + fun authenticate( + requestJson: String, + callback: CredentialManagerCallback, + ): CancellationSignal { + val request = GetCredentialRequest.Builder().addCredentialOption( + GetPublicKeyCredentialOption(requestJson = requestJson) + ).build() + val cancellationSignal = CancellationSignal() + credentialManager.getCredentialAsync( + mainActivity, + request, + cancellationSignal, + executor, + callback, + ) + return cancellationSignal + } +} \ No newline at end of file diff --git a/packages/celest_auth/dart_test.yaml b/packages/celest_auth/dart_test.yaml new file mode 100644 index 00000000..82ba5990 --- /dev/null +++ b/packages/celest_auth/dart_test.yaml @@ -0,0 +1,5 @@ +override_platforms: + firefox: + settings: + # Workaround for: https://github.com/dart-lang/test/issues/2194 + executable: /Applications/Firefox.app/Contents/MacOS/firefox diff --git a/packages/celest_auth/darwin/Classes/CelestAuth.swift b/packages/celest_auth/darwin/Classes/CelestAuth.swift new file mode 100644 index 00000000..051778b0 --- /dev/null +++ b/packages/celest_auth/darwin/Classes/CelestAuth.swift @@ -0,0 +1,390 @@ +#if os(iOS) +import UIKit +#elseif os(macOS) +import AppKit +#else +#error("Unsupported OS") +#endif + +import AuthenticationServices +import OSLog + +public typealias OnSuccess = (UnsafePointer) -> Void +public typealias OnError = (CelestAuthErrorCode, UnsafePointer) -> Void + +@objc public enum CelestAuthErrorCode: Int, RawRepresentable { + case unknown = 0 + case unsupported = 1 + case serde = 2 + + // From ASAuthorizationError.Code + case canceled = 1001 + case invalidResponse = 1002 + case notHandled = 1003 + case failed = 1004 + case notInteractive = 1005 +} + +@objc protocol CelestAuthProtocol: NSObjectProtocol { + /// Whether passkeys are supported on the current platform. + @objc var isPasskeysSupported: Bool { get } + + /// Sends a registration request to the platform authenticator and + /// completes with the registration response or an error. + @objc func register( + request: String, + onSuccess: @escaping OnSuccess, + onError: @escaping OnError + ) + + /// Sends an authentication request to the platform authenticator and + /// completes with the authentication response or an error. + @objc func authenticate( + request: String, + onSuccess: @escaping OnSuccess, + onError: @escaping OnError + ) + + @objc func cancel() +} + +@objc public class CelestAuth: NSObject, CelestAuthProtocol { + @objc public override init() { + if #available(iOS 15.0, macOS 12.0, *) { + self.impl = CelestAuthSupported() + } else { + self.impl = CelestAuthUnsupported() + } + } + + private let impl: CelestAuthProtocol + + @objc public var isPasskeysSupported: Bool { + impl.isPasskeysSupported + } + + @objc public func cancel() { + impl.cancel() + } + + @objc public func register(request: String, onSuccess: @escaping OnSuccess, onError: @escaping OnError) { + impl.register(request: request, onSuccess: onSuccess, onError: onError) + } + + @objc public func authenticate(request: String, onSuccess: @escaping OnSuccess, onError: @escaping OnError) { + impl.authenticate(request: request, onSuccess: onSuccess, onError: onError) + } + + @objc public func freePointer(_ ptr: UnsafePointer) { + ptr.deallocate() + } +} + +@available(iOS 15.0, macOS 12.0, *) +class CelestAuthSupported: NSObject, CelestAuthProtocol, ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding { + + private let logger = Logger(subsystem: "dev.celest.celest_auth", category: "debug") + + private weak var controller: ASAuthorizationController? + private var onSuccess: OnSuccess? + private var onError: OnError? + + var isPasskeysSupported: Bool { true } + + func cancel() { + if #available(iOS 16.0, macOS 13.0, *) { + controller?.cancel() + } + } + + func register( + request: String, + onSuccess: @escaping OnSuccess, + onError: @escaping OnError + ) { + guard let data = request.data(using: .utf8), + let options = try? JSONDecoder().decode(PasskeyRequestOptions.self, from: data), + let challenge = Data(base64URLEncoded: options.challenge), + let userID = options.user.id.data(using: .utf8) + else { + return onError(.serde, "Failed to deserialize registration request".unsafePointer) + } + self.onSuccess = onSuccess + self.onError = onError + let platformProvider = ASAuthorizationPlatformPublicKeyCredentialProvider(relyingPartyIdentifier: options.rp.id) + let platformKeyRequest = platformProvider.createCredentialRegistrationRequest( + challenge: challenge, + name: options.user.name, + userID: userID + ) + let authController = ASAuthorizationController(authorizationRequests: [platformKeyRequest]) + authController.delegate = self + authController.presentationContextProvider = self + if #available(iOS 16.0, macOS 13.0, *) { + authController.performRequests(options: .preferImmediatelyAvailableCredentials) + } else { + authController.performRequests() + } + self.controller = authController + } + + func authenticate( + request: String, + onSuccess: @escaping OnSuccess, + onError: @escaping OnError + ) { + guard let data = request.data(using: .utf8), + let options = try? JSONDecoder().decode(PasskeyAuthenticationOptions.self, from: data), + let challenge = Data(base64URLEncoded: options.challenge) + else { + return onError(.serde, "Failed to deserialize authentication request".unsafePointer) + } + self.onSuccess = onSuccess + self.onError = onError + let platformProvider = ASAuthorizationPlatformPublicKeyCredentialProvider(relyingPartyIdentifier: options.rpId) + let platformKeyRequest = platformProvider.createCredentialAssertionRequest(challenge: challenge) + let authController = ASAuthorizationController(authorizationRequests: [platformKeyRequest]) + authController.delegate = self + authController.presentationContextProvider = self + if #available(iOS 16.0, macOS 13.0, *) { + authController.performRequests(options: .preferImmediatelyAvailableCredentials) + } else { + authController.performRequests() + } + self.controller = authController + } + + private func reset() { + self.onSuccess = nil + self.onError = nil + } + + private func complete(value: Data) { + onSuccess?(value.unsafePointer) + reset() + } + + private func complete(error: CelestAuthErrorCode, message: String) { + logger.error("Authorization completed with error: \(message)") + onError?(error, message.unsafePointer) + reset() + } + + private func complete(error: Error) { + logger.error("Authorization completed with error: \(error)") + onError?(.unknown, error.localizedDescription.unsafePointer) + reset() + } + + public func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { + #if os(iOS) + ASPresentationAnchor() + #else + let windows = NSApplication.shared.windows + var presentationAnchor = windows.first + for window in windows { + if window.isKeyWindow { + presentationAnchor = window + } + } + return presentationAnchor ?? ASPresentationAnchor() + #endif + } + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { + logger.debug("Authorization completed successfully with result: \(authorization)") + switch authorization.credential { + case let credential as ASAuthorizationPlatformPublicKeyCredentialRegistration: + let response = PasskeyRegistration(credential: credential) + guard let responseJson = try? JSONEncoder().encode(response) else { + return complete(error: .serde, message: "Failed to serialize registration response") + } + complete(value: responseJson) + case let credential as ASAuthorizationPlatformPublicKeyCredentialAssertion: + let response = PasskeyAuthentication(credential: credential) + guard let responseJson = try? JSONEncoder().encode(response) else { + return complete(error: .serde, message: "Failed to serialize authentication response") + } + complete(value: responseJson) + default: + complete(error: .unknown, message: "Unknown credential type: \(authorization.self)") + } + } + + public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { + logger.error("Authorization completed with error: \(error)") + if let error = error as? ASAuthorizationError { + return complete(error: .init(rawValue: error.errorCode) ?? .unknown, message: error.localizedDescription) + } + complete(error: error) + } +} + +class CelestAuthUnsupported: NSObject, CelestAuthProtocol { + var isPasskeysSupported: Bool { false } + + func cancel() {} + + func register(request: String, onSuccess: @escaping OnSuccess, onError: @escaping OnError) { + onError(.unsupported, "Unsupported platform".unsafePointer) + } + + func authenticate(request: String, onSuccess: @escaping OnSuccess, onError: @escaping OnError) { + onError(.unsupported, "Unsupported platform".unsafePointer) + } +} + +struct PasskeyRequestOptions: Codable { + let challenge: String + let rp: PasskeyRequestRp + let user: PasskeyRequestUser +} + +struct PasskeyRequestRp: Codable { + let name: String + let id: String +} + +struct PasskeyRequestUser: Codable { + let id: String + let name: String + let displayName: String +} + +struct PasskeyAuthenticationOptions: Codable { + let rpId: String + let challenge: String +} + +@available(iOS 15.0, macOS 12.0, *) +struct PasskeyRegistration: Codable { + init(credential: ASAuthorizationPlatformPublicKeyCredentialRegistration) { + let credentialID = credential.credentialID.base64URLEncodedString() + self.id = credentialID + self.rawId = credentialID + self.response = PasskeyRegistrationResponse( + clientDataJSON: credential.rawClientDataJSON.base64URLEncodedString(), + attestationObject: credential.rawAttestationObject?.base64URLEncodedString() + ) + if #available(iOS 16.6, macOS 13.5, *) { + switch credential.attachment { + case .platform: + self.authenticatorAttachment = "platform" + case .crossPlatform: + self.authenticatorAttachment = "cross-platform" + @unknown default: + self.authenticatorAttachment = "unknown" + } + } else { + self.authenticatorAttachment = nil + } + } + + let id: String + let rawId: String + var type = "public-key" + let response: PasskeyRegistrationResponse + let authenticatorAttachment: String? +} + +struct PasskeyRegistrationResponse: Codable { + let clientDataJSON: String + let attestationObject: String? +} + +@available(iOS 15.0, macOS 12.0, *) +struct PasskeyAuthentication: Codable { + init(credential: ASAuthorizationPlatformPublicKeyCredentialAssertion) { + let credentialID = credential.credentialID.base64URLEncodedString() + self.id = credentialID + self.rawId = credentialID + self.response = PasskeyAuthenticationResponse( + clientDataJSON: credential.rawClientDataJSON.base64URLEncodedString(), + authenticatorData: credential.rawAuthenticatorData.base64URLEncodedString(), + signature: credential.signature.base64URLEncodedString(), + userHandle: credential.userID.base64URLEncodedString() + ) + if #available(iOS 16.6, macOS 13.5, *) { + switch credential.attachment { + case .platform: + self.authenticatorAttachment = "platform" + case .crossPlatform: + self.authenticatorAttachment = "cross-platform" + @unknown default: + self.authenticatorAttachment = "unknown" + } + } else { + self.authenticatorAttachment = nil + } + } + + let id: String + let rawId: String + var type: String = "public-key" + let response: PasskeyAuthenticationResponse + let authenticatorAttachment: String? +} + +struct PasskeyAuthenticationResponse: Codable { + let clientDataJSON: String + let authenticatorData: String + let signature: String + let userHandle: String +} + +extension Data { + + /// Instantiates data by decoding a base64url string into base64 + /// + /// - Parameter string: A base64url encoded string + init?(base64URLEncoded string: String) { + self.init(base64Encoded: string.toggleBase64URLSafe(on: false)) + } + + /// Encodes the string into a base64url safe representation + /// + /// - Returns: A string that is base64 encoded but made safe for passing + /// in as a query parameter into a URL string + func base64URLEncodedString() -> String { + return self.base64EncodedString().toggleBase64URLSafe(on: true) + } + + + var unsafePointer: UnsafeMutablePointer { + let ptr = UnsafeMutablePointer.allocate(capacity: count + 1) + copyBytes(to: ptr, count: count) + return ptr + } + +} + +extension String { + + var unsafePointer: UnsafeMutablePointer { + data(using: .utf8)!.unsafePointer + } + + /// Encodes or decodes into a base64url safe representation + /// + /// - Parameter on: Whether or not the string should be made safe for URL strings + /// - Returns: if `on`, then a base64url string; if `off` then a base64 string + func toggleBase64URLSafe(on: Bool) -> String { + if on { + // Make base64 string safe for passing into URL query params + let base64url = self.replacingOccurrences(of: "/", with: "_") + .replacingOccurrences(of: "+", with: "-") + .replacingOccurrences(of: "=", with: "") + return base64url + } else { + // Return to base64 encoding + var base64 = self.replacingOccurrences(of: "_", with: "/") + .replacingOccurrences(of: "-", with: "+") + // Add any necessary padding with `=` + if base64.count % 4 != 0 { + base64.append(String(repeating: "=", count: 4 - base64.count % 4)) + } + return base64 + } + } + +} diff --git a/packages/celest_auth/darwin/celest_auth.podspec b/packages/celest_auth/darwin/celest_auth.podspec new file mode 100644 index 00000000..ffdd34b6 --- /dev/null +++ b/packages/celest_auth/darwin/celest_auth.podspec @@ -0,0 +1,27 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint ffi_plugin.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'celest_auth' + s.version = '0.0.1' + s.summary = 'Shared iOS/macOS platform code of Celest Auth.' + s.description = <<-DESC + Shared iOS/macOS platform code of Celest Auth. + DESC + s.homepage = 'https://celest.dev' + s.license = { :file => '../LICENSE' } + s.author = { 'Dillon Nys' => 'dillon@celest.dev' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + + s.ios.dependency 'Flutter' + s.osx.dependency 'FlutterMacOS' + s.ios.deployment_target = '11.0' + s.osx.deployment_target = '10.11' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.module_name = 'celest_auth' + s.swift_version = '5.0' +end diff --git a/packages/celest_auth/example/.gitignore b/packages/celest_auth/example/.gitignore new file mode 100644 index 00000000..29a3a501 --- /dev/null +++ b/packages/celest_auth/example/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/packages/celest_auth/example/.metadata b/packages/celest_auth/example/.metadata new file mode 100644 index 00000000..bae49f35 --- /dev/null +++ b/packages/celest_auth/example/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "7482962148e8d758338d8a28f589f317e1e42ba4" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: android + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: ios + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: linux + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: macos + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: web + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + - platform: windows + create_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + base_revision: 7482962148e8d758338d8a28f589f317e1e42ba4 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/celest_auth/example/README.md b/packages/celest_auth/example/README.md new file mode 100644 index 00000000..b61b3d43 --- /dev/null +++ b/packages/celest_auth/example/README.md @@ -0,0 +1,3 @@ +# celest_auth_example + +A new Flutter project. diff --git a/packages/celest_auth/example/analysis_options.yaml b/packages/celest_auth/example/analysis_options.yaml new file mode 100644 index 00000000..f9b30346 --- /dev/null +++ b/packages/celest_auth/example/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/packages/celest_auth/example/android/.gitignore b/packages/celest_auth/example/android/.gitignore new file mode 100644 index 00000000..6f568019 --- /dev/null +++ b/packages/celest_auth/example/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/packages/celest_auth/example/android/app/build.gradle b/packages/celest_auth/example/android/app/build.gradle new file mode 100644 index 00000000..f01e1bba --- /dev/null +++ b/packages/celest_auth/example/android/app/build.gradle @@ -0,0 +1,73 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +android { + namespace "dev.celest.celest_auth_example" + compileSdk flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + applicationId "dev.celest.celest_auth_example" + minSdkVersion 21 + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + // These dependencies are only present so that `jnigen` will work. + // Applications should not include these. + implementation "androidx.credentials:credentials:1.3.0-alpha01" + implementation "androidx.credentials:credentials-play-services-auth:1.3.0-alpha01" + implementation "com.google.android.libraries.identity.googleid:googleid:1.1.0" + implementation "androidx.biometric:biometric:1.2.0-alpha05" + implementation "com.google.android.gms:play-services-auth:21.0.0" + implementation "com.google.android.gms:play-services-fido:20.1.0" +} diff --git a/packages/celest_auth/example/android/app/src/debug/AndroidManifest.xml b/packages/celest_auth/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/celest_auth/example/android/app/src/main/AndroidManifest.xml b/packages/celest_auth/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..846826fa --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/android/app/src/main/kotlin/dev/celest/celest_auth_example/MainActivity.kt b/packages/celest_auth/example/android/app/src/main/kotlin/dev/celest/celest_auth_example/MainActivity.kt new file mode 100644 index 00000000..11dce1ff --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/kotlin/dev/celest/celest_auth_example/MainActivity.kt @@ -0,0 +1,5 @@ +package dev.celest.celest_auth_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/packages/celest_auth/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/celest_auth/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..f74085f3 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/celest_auth/example/android/app/src/main/res/drawable/launch_background.xml b/packages/celest_auth/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/celest_auth/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/celest_auth/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..db77bb4b Binary files /dev/null and b/packages/celest_auth/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/celest_auth/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/celest_auth/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..17987b79 Binary files /dev/null and b/packages/celest_auth/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/celest_auth/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/celest_auth/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..09d43914 Binary files /dev/null and b/packages/celest_auth/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/celest_auth/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/celest_auth/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..d5f1c8d3 Binary files /dev/null and b/packages/celest_auth/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/celest_auth/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/celest_auth/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..4d6372ee Binary files /dev/null and b/packages/celest_auth/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/celest_auth/example/android/app/src/main/res/values-night/styles.xml b/packages/celest_auth/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..06952be7 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/celest_auth/example/android/app/src/main/res/values/styles.xml b/packages/celest_auth/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..cb1ef880 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/celest_auth/example/android/app/src/profile/AndroidManifest.xml b/packages/celest_auth/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/packages/celest_auth/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/celest_auth/example/android/build.gradle b/packages/celest_auth/example/android/build.gradle new file mode 100644 index 00000000..bc157bd1 --- /dev/null +++ b/packages/celest_auth/example/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/packages/celest_auth/example/android/gradle.properties b/packages/celest_auth/example/android/gradle.properties new file mode 100644 index 00000000..598d13fe --- /dev/null +++ b/packages/celest_auth/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/celest_auth/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/celest_auth/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..e1ca574e --- /dev/null +++ b/packages/celest_auth/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/packages/celest_auth/example/android/settings.gradle b/packages/celest_auth/example/android/settings.gradle new file mode 100644 index 00000000..1d6d19b7 --- /dev/null +++ b/packages/celest_auth/example/android/settings.gradle @@ -0,0 +1,26 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/packages/celest_auth/example/celest/.gitignore b/packages/celest_auth/example/celest/.gitignore new file mode 100644 index 00000000..b756291a --- /dev/null +++ b/packages/celest_auth/example/celest/.gitignore @@ -0,0 +1,5 @@ +# Dart +.dart_tool/ + +# Celest +**/.env diff --git a/packages/celest_auth/example/celest/analysis_options.yaml b/packages/celest_auth/example/celest/analysis_options.yaml new file mode 100644 index 00000000..572dd239 --- /dev/null +++ b/packages/celest_auth/example/celest/analysis_options.yaml @@ -0,0 +1 @@ +include: package:lints/recommended.yaml diff --git a/packages/celest_auth/example/celest/auth/auth.dart b/packages/celest_auth/example/celest/auth/auth.dart new file mode 100644 index 00000000..ac57f6a8 --- /dev/null +++ b/packages/celest_auth/example/celest/auth/auth.dart @@ -0,0 +1,7 @@ +import 'package:celest/celest.dart'; + +const auth = Auth( + providers: [ + AuthProvider.email(), + ], +); diff --git a/packages/celest_auth/example/celest/functions/greeting.dart b/packages/celest_auth/example/celest/functions/greeting.dart new file mode 100644 index 00000000..e8343b5c --- /dev/null +++ b/packages/celest_auth/example/celest/functions/greeting.dart @@ -0,0 +1,21 @@ +// Cloud functions are top-level Dart functions defined in the `functions/` +// folder of your Celest project. + +import 'package:celest/celest.dart'; + +/// Says hello to the authenticated [user]. +@authenticated +Future sayHello({ + @Context.user required User user, +}) async { + if (!user.emailVerified) { + throw UnauthorizedException('Email not verified'); + } + + print('Saying hello to user: $user'); + + if (user.displayName case final name?) { + return 'Hello, $name!'; + } + return 'Hello!'; +} diff --git a/packages/celest_auth/example/celest/lib/client.dart b/packages/celest_auth/example/celest/lib/client.dart new file mode 100644 index 00000000..ff63b4f5 --- /dev/null +++ b/packages/celest_auth/example/celest/lib/client.dart @@ -0,0 +1,82 @@ +// Generated by Celest. This file should not be modified manually, but +// it can be checked into version control. +// ignore_for_file: type=lint, unused_local_variable, unnecessary_cast, unnecessary_import + +library; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'dart:async' as _$async; +import 'dart:io' as _$io; + +import 'package:celest_core/_internal.dart'; +import 'package:celest_core/src/util/globals.dart'; +import 'package:http/http.dart' as _$http; + +import 'src/client/auth.dart'; +import 'src/client/functions.dart'; +import 'src/client/serializers.dart'; + +export 'package:celest_auth/celest_auth.dart'; + +final Celest celest = Celest(); + +enum CelestEnvironment { + local; + + Uri get baseUri => switch (this) { + local => kIsWeb || !_$io.Platform.isAndroid + ? Uri.parse('http://localhost:8888') + : Uri.parse('http://10.0.2.2:8888'), + }; +} + +class Celest with CelestBase { + var _initialized = false; + + late CelestEnvironment _currentEnvironment; + + late final SecureStorage _secureStorage = SecureStorage(); + + @override + late _$http.Client httpClient = + CelestHttpClient(secureStorage: _secureStorage); + + late Uri _baseUri; + + final _functions = CelestFunctions(); + + late final CelestAuth _auth = CelestAuth( + this, + secureStorage: _secureStorage, + ); + + T _checkInitialized(T Function() value) { + if (!_initialized) { + throw StateError( + 'Celest has not been initialized. Make sure to call `celest.init()` at the start of your `main` method.'); + } + return value(); + } + + CelestEnvironment get currentEnvironment => + _checkInitialized(() => _currentEnvironment); + + @override + Uri get baseUri => _checkInitialized(() => _baseUri); + + CelestFunctions get functions => _checkInitialized(() => _functions); + + CelestAuth get auth => _checkInitialized(() => _auth); + + void init({CelestEnvironment environment = CelestEnvironment.local}) { + if (_initialized && environment != _currentEnvironment) { + _auth.signOut(); + } + _currentEnvironment = environment; + _baseUri = environment.baseUri; + _$async.scheduleMicrotask(_auth.init); + if (!_initialized) { + initSerializers(); + } + _initialized = true; + } +} diff --git a/packages/celest_auth/example/celest/lib/exceptions/bad_name_exception.dart b/packages/celest_auth/example/celest/lib/exceptions/bad_name_exception.dart new file mode 100644 index 00000000..28c67ecb --- /dev/null +++ b/packages/celest_auth/example/celest/lib/exceptions/bad_name_exception.dart @@ -0,0 +1,11 @@ +// By convention, any custom exception types thrown by an API must be defined +// in this file or exported from this file. + +class BadNameException implements Exception { + const BadNameException(this.message); + + final String message; + + @override + String toString() => 'BadNameException: $message'; +} diff --git a/packages/celest_auth/example/celest/lib/models/person.dart b/packages/celest_auth/example/celest/lib/models/person.dart new file mode 100644 index 00000000..b2b60309 --- /dev/null +++ b/packages/celest_auth/example/celest/lib/models/person.dart @@ -0,0 +1,8 @@ +// By convention, any custom types used within an API request/response must be +// defined in the `models/` folder. + +class Person { + const Person({required this.name}); + + final String name; +} diff --git a/packages/celest_auth/example/celest/lib/src/client/auth.dart b/packages/celest_auth/example/celest/lib/src/client/auth.dart new file mode 100644 index 00000000..1dbc09a8 --- /dev/null +++ b/packages/celest_auth/example/celest/lib/src/client/auth.dart @@ -0,0 +1,22 @@ +// Generated by Celest. This file should not be modified manually, but +// it can be checked into version control. +// ignore_for_file: type=lint, unused_local_variable, unnecessary_cast, unnecessary_import + +library; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:celest_auth/celest_auth.dart' as _$celest_auth; +import 'package:celest_auth/src/auth_impl.dart' as _$auth_impl; +import 'package:celest_core/_internal.dart'; + +extension type CelestAuth._(_$auth_impl.AuthImpl _hub) + implements _$celest_auth.Auth { + CelestAuth( + CelestBase celest, { + required SecureStorage secureStorage, + }) : _hub = _$auth_impl.AuthImpl( + celest, + secureStorage: secureStorage, + ); + + _$auth_impl.Email get email => _$auth_impl.Email(_hub); +} diff --git a/packages/celest_auth/example/celest/lib/src/client/functions.dart b/packages/celest_auth/example/celest/lib/src/client/functions.dart new file mode 100644 index 00000000..48f1df90 --- /dev/null +++ b/packages/celest_auth/example/celest/lib/src/client/functions.dart @@ -0,0 +1,64 @@ +// Generated by Celest. This file should not be modified manually, but +// it can be checked into version control. +// ignore_for_file: type=lint, unused_local_variable, unnecessary_cast, unnecessary_import + +library; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'dart:convert' as _$convert; + +import 'package:celest/celest.dart'; +import 'package:celest_core/src/exception/cloud_exception.dart'; +import 'package:celest_core/src/exception/serialization_exception.dart'; + +import '../../client.dart'; + +class CelestFunctions { + final greeting = CelestFunctionsGreeting(); +} + +class CelestFunctionsGreeting { + Never _throwError({ + required int $statusCode, + required Map $body, + }) { + final $error = ($body['error'] as Map); + final $code = ($error['code'] as String); + final $details = ($error['details'] as Map?); + switch ($code) { + case r'BadRequestException': + throw Serializers.instance.deserialize($details); + case r'UnauthorizedException': + throw Serializers.instance.deserialize($details); + case r'InternalServerException': + throw Serializers.instance + .deserialize($details); + case r'SerializationException': + throw Serializers.instance + .deserialize($details); + case _: + switch ($statusCode) { + case 400: + throw BadRequestException($code); + case _: + throw InternalServerException($code); + } + } + } + + /// Says hello to the authenticated [user]. + Future sayHello() async { + final $response = await celest.httpClient.post( + celest.baseUri.resolve('/greeting/say-hello'), + headers: const {'Content-Type': 'application/json; charset=utf-8'}, + ); + final $body = + (_$convert.jsonDecode($response.body) as Map); + if ($response.statusCode != 200) { + _throwError( + $statusCode: $response.statusCode, + $body: $body, + ); + } + return ($body['response'] as String); + } +} diff --git a/packages/celest_auth/example/celest/lib/src/client/serializers.dart b/packages/celest_auth/example/celest/lib/src/client/serializers.dart new file mode 100644 index 00000000..fd4cdea5 --- /dev/null +++ b/packages/celest_auth/example/celest/lib/src/client/serializers.dart @@ -0,0 +1,41 @@ +// ignore_for_file: type=lint, unused_local_variable, unnecessary_cast, unnecessary_import + +import 'package:celest/celest.dart'; +import 'package:celest_core/src/exception/cloud_exception.dart'; +import 'package:celest_core/src/exception/serialization_exception.dart'; + +void initSerializers() { + Serializers.instance + .put(Serializer.define>( + serialize: ($value) => {r'message': $value.message}, + deserialize: ($serialized) { + return BadRequestException(($serialized[r'message'] as String)); + }, + )); + Serializers.instance + .put(Serializer.define>( + serialize: ($value) => {r'message': $value.message}, + deserialize: ($serialized) { + return InternalServerException(($serialized[r'message'] as String)); + }, + )); + Serializers.instance + .put(Serializer.define?>( + serialize: ($value) => {r'message': $value.message}, + deserialize: ($serialized) { + return UnauthorizedException( + (($serialized?[r'message'] as String?)) ?? 'Unauthorized'); + }, + )); + Serializers.instance + .put(Serializer.define>( + serialize: ($value) => { + r'message': $value.message, + r'offset': $value.offset, + r'source': $value.source, + }, + deserialize: ($serialized) { + return SerializationException(($serialized[r'message'] as String)); + }, + )); +} diff --git a/packages/celest_auth/example/celest/project.dart b/packages/celest_auth/example/celest/project.dart new file mode 100644 index 00000000..d8835789 --- /dev/null +++ b/packages/celest_auth/example/celest/project.dart @@ -0,0 +1,5 @@ +import 'package:celest/celest.dart'; + +const project = Project( + name: 'celest_auth_example', +); diff --git a/packages/celest_auth/example/celest/pubspec.yaml b/packages/celest_auth/example/celest/pubspec.yaml new file mode 100644 index 00000000..7f473bfb --- /dev/null +++ b/packages/celest_auth/example/celest/pubspec.yaml @@ -0,0 +1,16 @@ +name: celest_backend +description: The Celest backend for celest_auth_example. +publish_to: none + +environment: + sdk: ^3.3.0 + +dependencies: + celest: ^0.2.0 + celest_auth: any + celest_core: ^0.2.0 + http: ">=0.13.0 <2.0.0" + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/packages/celest_auth/example/celest/resources.dart b/packages/celest_auth/example/celest/resources.dart new file mode 100644 index 00000000..ffc4fd72 --- /dev/null +++ b/packages/celest_auth/example/celest/resources.dart @@ -0,0 +1,5 @@ +// Generated by Celest. This file should not be modified manually, but +// it can be checked into version control. +// ignore_for_file: type=lint, unused_local_variable, unnecessary_cast, unnecessary_import + +library; diff --git a/packages/celest_auth/example/celest/test/functions/greeting_test.dart b/packages/celest_auth/example/celest/test/functions/greeting_test.dart new file mode 100644 index 00000000..89af06e1 --- /dev/null +++ b/packages/celest_auth/example/celest/test/functions/greeting_test.dart @@ -0,0 +1,35 @@ +import 'package:celest/celest.dart'; +import 'package:test/test.dart'; + +import '../../functions/greeting.dart'; + +void main() { + group('greeting', () { + test('sayHello', () async { + expect( + await sayHello( + user: User( + userId: '123', + email: 'test@celest.dev', + emailVerified: true, + displayName: 'Celest', + ), + ), + 'Hello, Celest!', + ); + }); + test('sayHello (email not verified)', () async { + expect( + sayHello( + user: User( + userId: '123', + email: 'test@celest.dev', + emailVerified: false, + displayName: 'Celest', + ), + ), + throwsA(isA()), + ); + }); + }); +} diff --git a/packages/celest_auth/example/ios/.gitignore b/packages/celest_auth/example/ios/.gitignore new file mode 100644 index 00000000..7a7f9873 --- /dev/null +++ b/packages/celest_auth/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/packages/celest_auth/example/ios/Flutter/AppFrameworkInfo.plist b/packages/celest_auth/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..7c569640 --- /dev/null +++ b/packages/celest_auth/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/celest_auth/example/ios/Flutter/Debug.xcconfig b/packages/celest_auth/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..ec97fc6f --- /dev/null +++ b/packages/celest_auth/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/celest_auth/example/ios/Flutter/Release.xcconfig b/packages/celest_auth/example/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..c4855bfe --- /dev/null +++ b/packages/celest_auth/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/celest_auth/example/ios/Podfile b/packages/celest_auth/example/ios/Podfile new file mode 100644 index 00000000..d97f17e2 --- /dev/null +++ b/packages/celest_auth/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/packages/celest_auth/example/ios/Podfile.lock b/packages/celest_auth/example/ios/Podfile.lock new file mode 100644 index 00000000..3550bbf8 --- /dev/null +++ b/packages/celest_auth/example/ios/Podfile.lock @@ -0,0 +1,23 @@ +PODS: + - celest_auth (0.0.1): + - Flutter + - FlutterMacOS + - Flutter (1.0.0) + +DEPENDENCIES: + - celest_auth (from `.symlinks/plugins/celest_auth/darwin`) + - Flutter (from `Flutter`) + +EXTERNAL SOURCES: + celest_auth: + :path: ".symlinks/plugins/celest_auth/darwin" + Flutter: + :path: Flutter + +SPEC CHECKSUMS: + celest_auth: 94a61a3de8684f0bb7459baba4d5e8b5b9780f72 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 + +COCOAPODS: 1.15.0 diff --git a/packages/celest_auth/example/ios/Runner.xcodeproj/project.pbxproj b/packages/celest_auth/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..6d73cf39 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,735 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28DB6D6E79B78B827EA52321 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA41D9D03F0845F56EED13E8 /* Pods_RunnerTests.framework */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + D2DE32F25AF0169F89BEFB6D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC26DE6EFB87491B2A14E832 /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 16F2CF9C4003BEF4F1163958 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 1B826A9919327048F3017894 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 43B113F6AA4D863C070D780C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 4A803A079E9B02D0656FF2F9 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AC1A9A7D92F4C66A94DF4502 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + AC26DE6EFB87491B2A14E832 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C0A1769B2B954E91009FD7F1 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + EA41D9D03F0845F56EED13E8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F39F6AAC7F27A00A2406F559 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 87B3C14EA4C1D6344360B996 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 28DB6D6E79B78B827EA52321 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D2DE32F25AF0169F89BEFB6D /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 55CD265E653F237C38D62A19 /* Pods */ = { + isa = PBXGroup; + children = ( + AC1A9A7D92F4C66A94DF4502 /* Pods-Runner.debug.xcconfig */, + 43B113F6AA4D863C070D780C /* Pods-Runner.release.xcconfig */, + F39F6AAC7F27A00A2406F559 /* Pods-Runner.profile.xcconfig */, + 16F2CF9C4003BEF4F1163958 /* Pods-RunnerTests.debug.xcconfig */, + 1B826A9919327048F3017894 /* Pods-RunnerTests.release.xcconfig */, + 4A803A079E9B02D0656FF2F9 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 55CD265E653F237C38D62A19 /* Pods */, + E94F0FFABF6E45393CFB6659 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + C0A1769B2B954E91009FD7F1 /* Runner.entitlements */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + E94F0FFABF6E45393CFB6659 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AC26DE6EFB87491B2A14E832 /* Pods_Runner.framework */, + EA41D9D03F0845F56EED13E8 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + FF50F668124EA2F2A5E0E44B /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 87B3C14EA4C1D6344360B996 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 60271842E3BCBF6EC455752F /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 233434462875656F03F245AF /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 233434462875656F03F245AF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 60271842E3BCBF6EC455752F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + FF50F668124EA2F2A5E0E44B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 16F2CF9C4003BEF4F1163958 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1B826A9919327048F3017894 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4A803A079E9B02D0656FF2F9 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/celest_auth/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/celest_auth/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..8e3ca5df --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/celest_auth/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/celest_auth/example/ios/Runner/AppDelegate.swift b/packages/celest_auth/example/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 00000000..dc9ada47 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 00000000..7353c41e Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 00000000..797d452e Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 00000000..6ed2d933 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 00000000..4cd7b009 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 00000000..fe730945 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 00000000..321773cd Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 00000000..797d452e Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 00000000..502f463a Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 00000000..0ec30343 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 00000000..0ec30343 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 00000000..e9f5fea2 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 00000000..84ac32ae Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 00000000..8953cba0 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 00000000..0467bf12 Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/celest_auth/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/celest_auth/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/ios/Runner/Base.lproj/Main.storyboard b/packages/celest_auth/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/ios/Runner/Info.plist b/packages/celest_auth/example/ios/Runner/Info.plist new file mode 100644 index 00000000..6658322f --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Celest Auth Example + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + celest_auth_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/celest_auth/example/ios/Runner/Runner-Bridging-Header.h b/packages/celest_auth/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/celest_auth/example/ios/Runner/Runner.entitlements b/packages/celest_auth/example/ios/Runner/Runner.entitlements new file mode 100644 index 00000000..26ac1546 --- /dev/null +++ b/packages/celest_auth/example/ios/Runner/Runner.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.associated-domains + + webcredentials:user-hub.celest.dev + + + diff --git a/packages/celest_auth/example/ios/RunnerTests/RunnerTests.swift b/packages/celest_auth/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/packages/celest_auth/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/packages/celest_auth/example/lib/main.dart b/packages/celest_auth/example/lib/main.dart new file mode 100644 index 00000000..e536d496 --- /dev/null +++ b/packages/celest_auth/example/lib/main.dart @@ -0,0 +1,135 @@ +import 'package:celest_backend/client.dart'; +import 'package:flutter/material.dart'; + +void main() { + celest.init(); + runApp(const MainApp()); +} + +class MainApp extends StatefulWidget { + const MainApp({super.key}); + + @override + State createState() => _MainAppState(); +} + +class _MainAppState extends State { + final _emailController = TextEditingController(); + final _otpController = TextEditingController(); + Future? _request; + + Future signUp() async { + try { + await celest.auth.email.signIn(email: _emailController.text); + _emailController.clear(); + } on Exception catch (e, st) { + debugPrint('Error: $e'); + debugPrint('Stacktrace: $st'); + } + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: Center( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: StreamBuilder( + stream: celest.auth.authStateChanges, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const CircularProgressIndicator(); + } + final state = snapshot.data!; + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (state case Authenticated(:final user)) + Text('Currently signed in: ${user.email}') + else + const Text('Currently signed out'), + const SizedBox(height: 16), + TextButton( + onPressed: () { + setState(() { + _request = celest.functions.greeting.sayHello(); + }); + }, + child: const Text('Make authenticated request'), + ), + if (_request case final request?) ...[ + const SizedBox(height: 16), + SizedBox( + height: 50, + child: Center( + child: FutureBuilder( + future: request, + builder: (context, snapshot) => switch (snapshot) { + AsyncSnapshot(:final error?) => + Text('Error: $error'), + AsyncSnapshot(data: final response?) => + Text('Response: $response'), + _ => const CircularProgressIndicator(), + }, + ), + ), + ), + ], + const SizedBox(height: 16), + ...switch (state) { + EmailNeedsVerification() => [ + TextField( + key: const ValueKey('otp'), + controller: _otpController, + decoration: const InputDecoration( + labelText: 'OTP', + ), + autofillHints: const [ + AutofillHints.oneTimeCode, + ], + keyboardType: TextInputType.number, + ), + const SizedBox(height: 16), + TextButton( + onPressed: () => state.verifyOtp( + _otpController.text, + ), + child: const Text('Verify OTP'), + ), + ], + Unauthenticated() => [ + TextField( + key: const ValueKey('email'), + controller: _emailController, + decoration: const InputDecoration( + labelText: 'Email', + ), + autofillHints: const [ + AutofillHints.email, + ], + keyboardType: TextInputType.emailAddress, + ), + const SizedBox(height: 16), + TextButton( + onPressed: signUp, + child: const Text('Sign In with Email'), + ), + ], + Authenticated() => [ + TextButton( + onPressed: celest.auth.signOut, + child: const Text('Sign out'), + ), + ], + }, + ], + ); + }, + ), + ), + ), + ), + ); + } +} diff --git a/packages/celest_auth/example/linux/.gitignore b/packages/celest_auth/example/linux/.gitignore new file mode 100644 index 00000000..d3896c98 --- /dev/null +++ b/packages/celest_auth/example/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/packages/celest_auth/example/linux/CMakeLists.txt b/packages/celest_auth/example/linux/CMakeLists.txt new file mode 100644 index 00000000..148d87b4 --- /dev/null +++ b/packages/celest_auth/example/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "celest_auth_example") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "dev.celest.celest_auth_example") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/packages/celest_auth/example/linux/flutter/CMakeLists.txt b/packages/celest_auth/example/linux/flutter/CMakeLists.txt new file mode 100644 index 00000000..d5bd0164 --- /dev/null +++ b/packages/celest_auth/example/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.cc b/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..e71a16d2 --- /dev/null +++ b/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.h b/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..e0f0a47b --- /dev/null +++ b/packages/celest_auth/example/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/celest_auth/example/linux/flutter/generated_plugins.cmake b/packages/celest_auth/example/linux/flutter/generated_plugins.cmake new file mode 100644 index 00000000..be1ee3e5 --- /dev/null +++ b/packages/celest_auth/example/linux/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/packages/celest_auth/example/linux/main.cc b/packages/celest_auth/example/linux/main.cc new file mode 100644 index 00000000..e7c5c543 --- /dev/null +++ b/packages/celest_auth/example/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/packages/celest_auth/example/linux/my_application.cc b/packages/celest_auth/example/linux/my_application.cc new file mode 100644 index 00000000..23cb9f34 --- /dev/null +++ b/packages/celest_auth/example/linux/my_application.cc @@ -0,0 +1,124 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "celest_auth_example"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "celest_auth_example"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/packages/celest_auth/example/linux/my_application.h b/packages/celest_auth/example/linux/my_application.h new file mode 100644 index 00000000..72271d5e --- /dev/null +++ b/packages/celest_auth/example/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/packages/celest_auth/example/macos/.gitignore b/packages/celest_auth/example/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/packages/celest_auth/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/packages/celest_auth/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/celest_auth/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..4b81f9b2 --- /dev/null +++ b/packages/celest_auth/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/celest_auth/example/macos/Flutter/Flutter-Release.xcconfig b/packages/celest_auth/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..5caa9d15 --- /dev/null +++ b/packages/celest_auth/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/celest_auth/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/celest_auth/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..cccf817a --- /dev/null +++ b/packages/celest_auth/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/packages/celest_auth/example/macos/Podfile b/packages/celest_auth/example/macos/Podfile new file mode 100644 index 00000000..c795730d --- /dev/null +++ b/packages/celest_auth/example/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/packages/celest_auth/example/macos/Podfile.lock b/packages/celest_auth/example/macos/Podfile.lock new file mode 100644 index 00000000..6772ce4f --- /dev/null +++ b/packages/celest_auth/example/macos/Podfile.lock @@ -0,0 +1,23 @@ +PODS: + - celest_auth (0.0.1): + - Flutter + - FlutterMacOS + - FlutterMacOS (1.0.0) + +DEPENDENCIES: + - celest_auth (from `Flutter/ephemeral/.symlinks/plugins/celest_auth/darwin`) + - FlutterMacOS (from `Flutter/ephemeral`) + +EXTERNAL SOURCES: + celest_auth: + :path: Flutter/ephemeral/.symlinks/plugins/celest_auth/darwin + FlutterMacOS: + :path: Flutter/ephemeral + +SPEC CHECKSUMS: + celest_auth: 94a61a3de8684f0bb7459baba4d5e8b5b9780f72 + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + +PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 + +COCOAPODS: 1.15.0 diff --git a/packages/celest_auth/example/macos/Runner.xcodeproj/project.pbxproj b/packages/celest_auth/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..3bd0033f --- /dev/null +++ b/packages/celest_auth/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,806 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 406DE7CE9B74754E1048117A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5803BE715FD01790F514D3B9 /* Pods_Runner.framework */; }; + 40F7B19533D9D558AF09AF85 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC3EDB190A40F413F8563C7F /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 13EEB93C8B0869792FED80FB /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* celest_auth_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = celest_auth_example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 398CD059A3C0B954CBC57916 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 459449A0413987CB865132A7 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 5803BE715FD01790F514D3B9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 97D8D099AFFAEF9E5C5B4A95 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + B5D7353413FE372DB380FDD9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + F030AA16F188F4B6F4ECDC34 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + FC3EDB190A40F413F8563C7F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40F7B19533D9D558AF09AF85 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 406DE7CE9B74754E1048117A /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 5A21AB31001C2D938B38C254 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* celest_auth_example.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + 5A21AB31001C2D938B38C254 /* Pods */ = { + isa = PBXGroup; + children = ( + 398CD059A3C0B954CBC57916 /* Pods-Runner.debug.xcconfig */, + F030AA16F188F4B6F4ECDC34 /* Pods-Runner.release.xcconfig */, + B5D7353413FE372DB380FDD9 /* Pods-Runner.profile.xcconfig */, + 13EEB93C8B0869792FED80FB /* Pods-RunnerTests.debug.xcconfig */, + 459449A0413987CB865132A7 /* Pods-RunnerTests.release.xcconfig */, + 97D8D099AFFAEF9E5C5B4A95 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5803BE715FD01790F514D3B9 /* Pods_Runner.framework */, + FC3EDB190A40F413F8563C7F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 6D1F9FA5468921BA1FAA5966 /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 041A10BE767685543E2C5776 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 82A83F3EA03936B423761E5A /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* celest_auth_example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 041A10BE767685543E2C5776 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 6D1F9FA5468921BA1FAA5966 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 82A83F3EA03936B423761E5A /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 13EEB93C8B0869792FED80FB /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/celest_auth_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/celest_auth_example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 459449A0413987CB865132A7 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/celest_auth_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/celest_auth_example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 97D8D099AFFAEF9E5C5B4A95 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/celest_auth_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/celest_auth_example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 3N6FCLHNUW; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/packages/celest_auth/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/celest_auth/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/celest_auth/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/celest_auth/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..1c41355f --- /dev/null +++ b/packages/celest_auth/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/celest_auth/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/celest_auth/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/celest_auth/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/celest_auth/example/macos/Runner/AppDelegate.swift b/packages/celest_auth/example/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..d53ef643 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 00000000..82b6f9d9 Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 00000000..13b35eba Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 00000000..0a3f5fa4 Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 00000000..bdb57226 Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 00000000..f083318e Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 00000000..326c0e72 Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 00000000..2f1632cf Binary files /dev/null and b/packages/celest_auth/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/packages/celest_auth/example/macos/Runner/Base.lproj/MainMenu.xib b/packages/celest_auth/example/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 00000000..80e867a4 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/macos/Runner/Configs/AppInfo.xcconfig b/packages/celest_auth/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..b651b194 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = celest_auth_example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = dev.celest.celestAuthExample + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 dev.celest. All rights reserved. diff --git a/packages/celest_auth/example/macos/Runner/Configs/Debug.xcconfig b/packages/celest_auth/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/celest_auth/example/macos/Runner/Configs/Release.xcconfig b/packages/celest_auth/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/celest_auth/example/macos/Runner/Configs/Warnings.xcconfig b/packages/celest_auth/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/packages/celest_auth/example/macos/Runner/DebugProfile.entitlements b/packages/celest_auth/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..210ee666 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,18 @@ + + + + + com.apple.developer.associated-domains + + webcredentials:user-hub.celest.dev + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/packages/celest_auth/example/macos/Runner/Info.plist b/packages/celest_auth/example/macos/Runner/Info.plist new file mode 100644 index 00000000..4789daa6 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/packages/celest_auth/example/macos/Runner/MainFlutterWindow.swift b/packages/celest_auth/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..3cc05eb2 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/packages/celest_auth/example/macos/Runner/Release.entitlements b/packages/celest_auth/example/macos/Runner/Release.entitlements new file mode 100644 index 00000000..22e4e4f8 --- /dev/null +++ b/packages/celest_auth/example/macos/Runner/Release.entitlements @@ -0,0 +1,16 @@ + + + + + com.apple.developer.associated-domains + + webcredentials:user-hub.celest.dev + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/packages/celest_auth/example/macos/RunnerTests/RunnerTests.swift b/packages/celest_auth/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..5418c9f5 --- /dev/null +++ b/packages/celest_auth/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import FlutterMacOS +import Cocoa +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/packages/celest_auth/example/pubspec.yaml b/packages/celest_auth/example/pubspec.yaml new file mode 100644 index 00000000..737a9577 --- /dev/null +++ b/packages/celest_auth/example/pubspec.yaml @@ -0,0 +1,34 @@ +name: celest_auth_example +description: "A new Flutter project." +publish_to: "none" +version: 0.1.0 + +environment: + sdk: ">=3.3.0 <4.0.0" + +dependencies: + celest_backend: + path: celest/ + flutter: + sdk: flutter + flutter_state_notifier: ^1.0.0 + +dependency_overrides: + cedar: + path: ../../cedar + celest: + path: ../../celest + celest_auth: + path: ../ + celest_core: + path: ../../celest_core + corks: + path: ../../corks + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^3.0.0 + +flutter: + uses-material-design: true diff --git a/packages/celest_auth/example/web/favicon.png b/packages/celest_auth/example/web/favicon.png new file mode 100644 index 00000000..8aaa46ac Binary files /dev/null and b/packages/celest_auth/example/web/favicon.png differ diff --git a/packages/celest_auth/example/web/icons/Icon-192.png b/packages/celest_auth/example/web/icons/Icon-192.png new file mode 100644 index 00000000..b749bfef Binary files /dev/null and b/packages/celest_auth/example/web/icons/Icon-192.png differ diff --git a/packages/celest_auth/example/web/icons/Icon-512.png b/packages/celest_auth/example/web/icons/Icon-512.png new file mode 100644 index 00000000..88cfd48d Binary files /dev/null and b/packages/celest_auth/example/web/icons/Icon-512.png differ diff --git a/packages/celest_auth/example/web/icons/Icon-maskable-192.png b/packages/celest_auth/example/web/icons/Icon-maskable-192.png new file mode 100644 index 00000000..eb9b4d76 Binary files /dev/null and b/packages/celest_auth/example/web/icons/Icon-maskable-192.png differ diff --git a/packages/celest_auth/example/web/icons/Icon-maskable-512.png b/packages/celest_auth/example/web/icons/Icon-maskable-512.png new file mode 100644 index 00000000..d69c5669 Binary files /dev/null and b/packages/celest_auth/example/web/icons/Icon-maskable-512.png differ diff --git a/packages/celest_auth/example/web/index.html b/packages/celest_auth/example/web/index.html new file mode 100644 index 00000000..9d9cf25e --- /dev/null +++ b/packages/celest_auth/example/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + celest_auth_example + + + + + + + + + + diff --git a/packages/celest_auth/example/web/manifest.json b/packages/celest_auth/example/web/manifest.json new file mode 100644 index 00000000..7ee7c96d --- /dev/null +++ b/packages/celest_auth/example/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "celest_auth_example", + "short_name": "celest_auth_example", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/packages/celest_auth/example/windows/.gitignore b/packages/celest_auth/example/windows/.gitignore new file mode 100644 index 00000000..d492d0d9 --- /dev/null +++ b/packages/celest_auth/example/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/packages/celest_auth/example/windows/CMakeLists.txt b/packages/celest_auth/example/windows/CMakeLists.txt new file mode 100644 index 00000000..bdd62d56 --- /dev/null +++ b/packages/celest_auth/example/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(celest_auth_example LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "celest_auth_example") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/packages/celest_auth/example/windows/flutter/CMakeLists.txt b/packages/celest_auth/example/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000..903f4899 --- /dev/null +++ b/packages/celest_auth/example/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.cc b/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..8b6d4680 --- /dev/null +++ b/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.h b/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/packages/celest_auth/example/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/celest_auth/example/windows/flutter/generated_plugins.cmake b/packages/celest_auth/example/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..3ad69c61 --- /dev/null +++ b/packages/celest_auth/example/windows/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/packages/celest_auth/example/windows/runner/CMakeLists.txt b/packages/celest_auth/example/windows/runner/CMakeLists.txt new file mode 100644 index 00000000..394917c0 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/packages/celest_auth/example/windows/runner/Runner.rc b/packages/celest_auth/example/windows/runner/Runner.rc new file mode 100644 index 00000000..e813d4e5 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "dev.celest" "\0" + VALUE "FileDescription", "celest_auth_example" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "celest_auth_example" "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 dev.celest. All rights reserved." "\0" + VALUE "OriginalFilename", "celest_auth_example.exe" "\0" + VALUE "ProductName", "celest_auth_example" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/packages/celest_auth/example/windows/runner/flutter_window.cpp b/packages/celest_auth/example/windows/runner/flutter_window.cpp new file mode 100644 index 00000000..955ee303 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/packages/celest_auth/example/windows/runner/flutter_window.h b/packages/celest_auth/example/windows/runner/flutter_window.h new file mode 100644 index 00000000..6da0652f --- /dev/null +++ b/packages/celest_auth/example/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/packages/celest_auth/example/windows/runner/main.cpp b/packages/celest_auth/example/windows/runner/main.cpp new file mode 100644 index 00000000..3eccd1ca --- /dev/null +++ b/packages/celest_auth/example/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"celest_auth_example", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/packages/celest_auth/example/windows/runner/resource.h b/packages/celest_auth/example/windows/runner/resource.h new file mode 100644 index 00000000..66a65d1e --- /dev/null +++ b/packages/celest_auth/example/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/packages/celest_auth/example/windows/runner/resources/app_icon.ico b/packages/celest_auth/example/windows/runner/resources/app_icon.ico new file mode 100644 index 00000000..c04e20ca Binary files /dev/null and b/packages/celest_auth/example/windows/runner/resources/app_icon.ico differ diff --git a/packages/celest_auth/example/windows/runner/runner.exe.manifest b/packages/celest_auth/example/windows/runner/runner.exe.manifest new file mode 100644 index 00000000..a42ea768 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/packages/celest_auth/example/windows/runner/utils.cpp b/packages/celest_auth/example/windows/runner/utils.cpp new file mode 100644 index 00000000..b2b08734 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length <= 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/packages/celest_auth/example/windows/runner/utils.h b/packages/celest_auth/example/windows/runner/utils.h new file mode 100644 index 00000000..3879d547 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/packages/celest_auth/example/windows/runner/win32_window.cpp b/packages/celest_auth/example/windows/runner/win32_window.cpp new file mode 100644 index 00000000..60608d0f --- /dev/null +++ b/packages/celest_auth/example/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/packages/celest_auth/example/windows/runner/win32_window.h b/packages/celest_auth/example/windows/runner/win32_window.h new file mode 100644 index 00000000..e901dde6 --- /dev/null +++ b/packages/celest_auth/example/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/packages/celest_auth/ffigen.darwin.yaml b/packages/celest_auth/ffigen.darwin.yaml new file mode 100644 index 00000000..2f5458db --- /dev/null +++ b/packages/celest_auth/ffigen.darwin.yaml @@ -0,0 +1,34 @@ +name: CelestAuthDarwin +description: | + Bindings for CelestAuth on iOS/macOS. + + Regenerate bindings with `dart run ffigen --config=ffigen.darwin.yaml`. +language: "objc" +output: + bindings: "lib/src/native/darwin/celest_auth.ffi.dart" +headers: + entry-points: + - "example/build/macos/Build/Products/Release/celest_auth/celest_auth.framework/Headers/celest_auth-Swift.h" + include-directives: + - "example/build/macos/Build/Products/Release/celest_auth/celest_auth.framework/Headers/celest_auth-Swift.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h" +import: + symbol-files: + - "package:celest_auth/src/native/darwin/foundation.yaml" +preamble: | + // ignore_for_file: type=lint + // ignore_for_file: return_of_invalid_type + // ignore_for_file: unnecessary_non_null_assertion +comments: + style: any + length: full + +compiler-opts-automatic: + macos: + include-c-standard-library: true +exclude-all-by-default: true +objc-interfaces: + include: + - CelestAuth + module: + CelestAuth: celest_auth diff --git a/packages/celest_auth/ffigen.foundation.yaml b/packages/celest_auth/ffigen.foundation.yaml new file mode 100644 index 00000000..97604b55 --- /dev/null +++ b/packages/celest_auth/ffigen.foundation.yaml @@ -0,0 +1,38 @@ +name: Foundation +description: | + Bindings for Foundation on macOS/iOS. + + Regenerate bindings with `dart run ffigen --config=ffigen.foundation.yaml`. +language: "objc" +output: + bindings: "lib/src/native/darwin/foundation.ffi.dart" + symbol-file: + output: "package:celest_auth/src/native/darwin/foundation.yaml" + import-path: "package:celest_auth/src/native/darwin/foundation.ffi.dart" +headers: + entry-points: + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURL.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSError.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSZone.h" + include-directives: + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURL.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSError.h" + - "/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSZone.h" +preamble: | + // ignore_for_file: type=lint + // ignore_for_file: return_of_invalid_type + // ignore_for_file: unnecessary_non_null_assertion +comments: + style: any + length: full + +exclude-all-by-default: true +objc-interfaces: + include: + - NS.* +structs: + rename: + "_(.*)": "$1" diff --git a/packages/celest_auth/jnigen.yaml b/packages/celest_auth/jnigen.yaml new file mode 100644 index 00000000..93eed7b2 --- /dev/null +++ b/packages/celest_auth/jnigen.yaml @@ -0,0 +1,60 @@ +# Regenerate bindings with `dart run jnigen --config jnigen.yaml`. + +summarizer: + backend: asm + +android_sdk_config: + add_gradle_deps: true + android_example: "example/" + +suspend_fun_to_async: true + +output: + bindings_type: dart_only + dart: + path: "lib/src/native/android/jni_bindings.ffi.dart" + structure: single_file + +classes: + - dev.celest.celest_auth.CelestAuth + + # Core Android/Java types + - android.app.Activity + - android.content.Context + - android.os.CancellationSignal + - java.lang.Runnable + - java.lang.Exception + - java.lang.Throwable + + # Passkey types + - androidx.credentials.CreateCredentialRequest + - androidx.credentials.CreateCredentialResponse + - androidx.credentials.CreatePublicKeyCredentialRequest + - androidx.credentials.CreatePublicKeyCredentialResponse + - androidx.credentials.Credential + - androidx.credentials.CredentialManager + - androidx.credentials.CredentialManagerCallback + - androidx.credentials.GetCredentialRequest + - androidx.credentials.GetCredentialResponse + - androidx.credentials.GetPublicKeyCredentialOption + - androidx.credentials.PublicKeyCredential + - androidx.credentials.exceptions.CreateCredentialCancellationException + - androidx.credentials.exceptions.CreateCredentialException + - androidx.credentials.exceptions.GetCredentialCancellationException + - androidx.credentials.exceptions.GetCredentialException + - androidx.credentials.exceptions.NoCredentialException + - androidx.credentials.exceptions.CreateCredentialInterruptedException + - androidx.credentials.exceptions.CreateCredentialProviderConfigurationException + - androidx.credentials.exceptions.CreateCredentialUnknownException + - androidx.credentials.exceptions.CreateCredentialCustomException + - androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialDomException + - androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException + - androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialDomException + - com.google.android.gms.fido.Fido + - com.google.android.gms.fido.fido2.Fido2ApiClient + - com.google.android.gms.tasks.Task + - com.google.android.gms.tasks.OnSuccessListener + - com.google.android.gms.tasks.OnFailureListener + +enable_experiment: + - "interface_implementation" diff --git a/packages/celest_auth/lib/celest_auth.dart b/packages/celest_auth/lib/celest_auth.dart new file mode 100644 index 00000000..25333f3f --- /dev/null +++ b/packages/celest_auth/lib/celest_auth.dart @@ -0,0 +1,4 @@ +library; + +export 'src/auth.dart' show Auth; +export 'src/state/auth_state.dart'; diff --git a/packages/celest_auth/lib/src/auth.dart b/packages/celest_auth/lib/src/auth.dart new file mode 100644 index 00000000..f03203b0 --- /dev/null +++ b/packages/celest_auth/lib/src/auth.dart @@ -0,0 +1,21 @@ +import 'dart:async'; + +import 'package:celest_auth/celest_auth.dart'; + +/// Coordinates and delegates to the various [AuthFlow] to orchestrate +/// authentication activities. +/// +/// Generated Celest clients extend this class and mix in the various +/// [AuthFlow]s supported by the backend. +abstract interface class Auth { + /// **NOTE**: Must be called before any other getters or methods are accessed. + /// + /// Initializes Celest Auth, returning the initial [AuthState]. + Future init(); + + /// Changes to the authentication state over time. + Stream get authStateChanges; + + /// Signs out the current user, if any. + void signOut(); +} diff --git a/packages/celest_auth/lib/src/auth_impl.dart b/packages/celest_auth/lib/src/auth_impl.dart new file mode 100644 index 00000000..690a8792 --- /dev/null +++ b/packages/celest_auth/lib/src/auth_impl.dart @@ -0,0 +1,104 @@ +import 'dart:async'; + +import 'package:celest_auth/celest_auth.dart'; +import 'package:celest_auth/src/flows/auth_flow.dart'; +import 'package:celest_auth/src/platform/auth_platform.dart'; +import 'package:celest_core/_internal.dart'; +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/auth/auth_client.dart'; +import 'package:stream_transform/stream_transform.dart'; + +export 'flows/email_flow.dart'; + +final class AuthImpl implements Auth { + AuthImpl( + this.celest, { + required this.secureStorage, + LocalStorage? localStorage, + }) : localStorage = localStorage ?? LocalStorage(); + + AuthState? _authState; + + @override + Stream get authStateChanges { + final stream = _authStateController.stream; + if (_authState case final currentState?) { + return stream.startWith(currentState); + } + return stream; + } + + final StreamController _authStateController = + StreamController.broadcast(); + + late final StreamSubscription _authStateSubscription; + StreamSubscription? _authFlowSubscription; + + @override + Future init() { + return _init ??= Future.sync(() async { + _authStateSubscription = + _authStateController.stream.listen((state) => _authState = state); + AuthState initialState; + try { + final user = await protocol.userInfo(); + initialState = Authenticated(user); + _authStateController.add(initialState); + } on UnauthorizedException { + initialState = const Unauthenticated(); + signOut(); + } + return initialState; + }); + } + + Future? _init; + + Future requestFlow() async { + final authState = _authState ?? await init(); + switch (authState) { + case AuthFlowInProgress(): + throw Exception('Auth flow already in progress'); + case Authenticated(): + throw Exception( + 'User is already authenticated. Sign out before continuing.', + ); + case Unauthenticated(): + unawaited(_authFlowSubscription?.cancel()); + final previousState = authState; + final controller = StreamController( + sync: true, + onCancel: () => _authStateController.add(previousState), + ); + _authFlowSubscription = controller.stream.listen( + (state) => _authStateController.add(state), + onError: (error, stackTrace) { + // TODO(dnys1) + }, + onDone: () => _authFlowSubscription = null, + cancelOnError: true, + ); + return AuthFlowController(controller.sink); + } + } + + @override + void signOut() { + localStorage.delete('userId'); + secureStorage.delete('cork'); + _authStateController.add(const Unauthenticated()); + } + + final CelestBase celest; + final LocalStorage localStorage; + final SecureStorage secureStorage; + + late final AuthClient protocol = AuthClient(celest); + late final AuthPlatform platform = AuthPlatform(protocol: protocol); + + Future close() async { + await _authStateSubscription.cancel(); + await _authFlowSubscription?.cancel(); + await _authStateController.close(); + } +} diff --git a/packages/celest_auth/lib/src/flows/auth_flow.dart b/packages/celest_auth/lib/src/flows/auth_flow.dart new file mode 100644 index 00000000..88a4a2bc --- /dev/null +++ b/packages/celest_auth/lib/src/flows/auth_flow.dart @@ -0,0 +1,44 @@ +@internal +library; + +import 'dart:async'; + +import 'package:celest_auth/src/state/auth_state.dart'; +import 'package:meta/meta.dart'; + +/// Base type for all authentication flows. +abstract interface class AuthFlow { + void cancel(); +} + +final class AuthFlowController { + AuthFlowController(this._sink); + + final StreamSink _sink; + var _isClosed = false; + + Future capture( + Future Function() action, + ) async { + try { + final result = await action(); + if (!_isClosed) { + _sink.add(result); + } + return result; + } on Object catch (e, st) { + if (!_isClosed) { + _sink.addError(e, st); + } + rethrow; + } + } + + void cancel() { + if (_isClosed) { + return; + } + _isClosed = true; + _sink.close(); + } +} diff --git a/packages/celest_auth/lib/src/flows/email_flow.dart b/packages/celest_auth/lib/src/flows/email_flow.dart new file mode 100644 index 00000000..17f4266a --- /dev/null +++ b/packages/celest_auth/lib/src/flows/email_flow.dart @@ -0,0 +1,126 @@ +import 'dart:async'; + +import 'package:celest_auth/src/auth_impl.dart'; +import 'package:celest_auth/src/flows/auth_flow.dart'; +import 'package:celest_auth/src/state/auth_state.dart'; +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/auth/auth_protocol.dart'; +import 'package:celest_core/src/auth/otp/otp_types.dart'; +import 'package:state_notifier/state_notifier.dart'; + +extension type Email(AuthImpl _hub) { + Future signIn({ + required String email, + }) async { + final flowController = await _hub.requestFlow(); + final flow = EmailFlow._(_hub, flowController); + return flow._signIn(email: email); + } +} + +final class EmailFlow implements AuthFlow { + EmailFlow._(this._hub, this._flowController); + + final AuthImpl _hub; + final AuthFlowController _flowController; + + EmailProtocol get _protocol => _hub.protocol.email; + + Future _signIn({ + required String email, + }) { + return _flowController.capture(() async { + final parameters = await _protocol.sendOtp( + request: OtpSendRequest(email: email), + ); + return _EmailNeedsVerification( + flow: this, + email: email, + parameters: parameters, + ); + }); + } + + Future _verifyOtp({ + required String email, + required String otp, + }) { + return _flowController.capture(() async { + final user = await _protocol.verifyOtp( + verification: OtpVerifyRequest(email: email, otp: otp), + ); + _hub.secureStorage.write('cork', user.cork); + _hub.localStorage.write('userId', user.user.userId); + return Authenticated(user.user); + }); + } + + @override + void cancel() => _flowController.cancel(); +} + +final class _EmailNeedsVerification extends EmailNeedsVerification { + _EmailNeedsVerification({ + required EmailFlow flow, + required super.email, + required OtpParameters parameters, + }) : _parameters = parameters, + _flow = flow { + _resendCountdown = + Stream.periodic(const Duration(seconds: 1)).listen((_) { + final resendIn = canResendIn; + _resendEligible.setState(resendIn == Duration.zero, resendIn); + }); + } + + final EmailFlow _flow; + OtpParameters _parameters; + + late final _ResendEligibleNotifier _resendEligible = + _ResendEligibleNotifier(canResendIn); + StreamSubscription? _resendCountdown; + + StateNotifier<(bool, Duration)> get canResend => _resendEligible; + Duration get canResendIn { + final resendIn = _parameters.nextResend.difference(DateTime.now()); + return resendIn.isNegative ? Duration.zero : resendIn; + } + + @override + Future resend() async { + _resendCountdown?.pause(); + _resendEligible.setState(false); + try { + _parameters = await _flow._protocol.resendOtp( + request: OtpSendRequest(email: email), + ); + } finally { + _resendCountdown?.resume(); + _resendEligible.setState(canResendIn == Duration.zero, canResendIn); + } + } + + @override + Future verifyOtp(String otp) async { + final authenticated = await _flow._verifyOtp(email: email, otp: otp); + _close(); + return authenticated.user; + } + + void _close() { + _resendEligible.dispose(); + _resendCountdown?.cancel(); + _resendCountdown = null; + } + + @override + void cancel() => _flow.cancel(); +} + +final class _ResendEligibleNotifier extends StateNotifier<(bool, Duration)> { + _ResendEligibleNotifier(Duration canResendIn) : super((false, canResendIn)); + + void setState(bool state, [Duration? canResendIn]) { + this.state = (state, canResendIn ?? this.state.$2); + } +} diff --git a/packages/celest_auth/lib/src/flows/passkey_flow.dart b/packages/celest_auth/lib/src/flows/passkey_flow.dart new file mode 100644 index 00000000..53d4f905 --- /dev/null +++ b/packages/celest_auth/lib/src/flows/passkey_flow.dart @@ -0,0 +1,42 @@ +import 'package:celest_auth/src/auth_impl.dart'; +import 'package:celest_auth/src/flows/auth_flow.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_exception_impl.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform.dart'; +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/auth/auth_protocol.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; + +final class PasskeyFlow implements AuthFlow { + PasskeyFlow(this._hub); + + final AuthImpl _hub; + final PasskeyPlatform _platform = PasskeyPlatform(); + late final PasskeyProtocol _protocol = _hub.protocol.passkeys; + + Future authenticate({ + required String email, + String? name, + }) async { + if (!await _platform.isSupported) { + throw const PasskeyUnsupportedException(); + } + final options = await _protocol.authenticate( + request: PasskeyRequest( + username: email, + displayName: name, + ), + ); + final credential = await switch (options) { + final PasskeyRegistrationOptions options => _platform.register(options), + final PasskeyAuthenticationOptions options => + _platform.authenticate(options), + }; + final user = await _protocol.verify(credential: credential); + _hub.secureStorage.write('cork', user.cork); + return user.user; + } + + /// Cancels the in-progress passkey operation, if any. + @override + void cancel() => _platform.cancel(); +} diff --git a/packages/celest_auth/lib/src/native/android/jni_bindings.ffi.dart b/packages/celest_auth/lib/src/native/android/jni_bindings.ffi.dart new file mode 100644 index 00000000..57584b30 --- /dev/null +++ b/packages/celest_auth/lib/src/native/android/jni_bindings.ffi.dart @@ -0,0 +1,14367 @@ +// Autogenerated by jnigen. DO NOT EDIT! + +// ignore_for_file: annotate_overrides +// ignore_for_file: camel_case_extensions +// ignore_for_file: camel_case_types +// ignore_for_file: constant_identifier_names +// ignore_for_file: file_names +// ignore_for_file: lines_longer_than_80_chars +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: non_constant_identifier_names +// ignore_for_file: overridden_fields +// ignore_for_file: unnecessary_cast +// ignore_for_file: unused_element +// ignore_for_file: unused_field +// ignore_for_file: unused_import +// ignore_for_file: unused_local_variable +// ignore_for_file: unused_shown_name + +import "dart:isolate" show ReceivePort; +import "dart:ffi" as ffi; +import "package:jni/internal_helpers_for_jnigen.dart"; +import "package:jni/jni.dart" as jni; + +/// from: dev.celest.celest_auth.CelestAuth +class CelestAuth extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CelestAuth.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"dev/celest/celest_auth/CelestAuth"); + + /// The type which includes information such as the signature of this class. + static const type = $CelestAuthType(); + static final _id_new0 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Landroid/app/Activity;)V"); + + /// from: public void (android.app.Activity activity) + /// The returned object must be released after use, by calling the [release] method. + factory CelestAuth( + Activity activity, + ) { + return CelestAuth.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new0, [activity.reference]).object); + } + + static final _id_register = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"register", + r"(Ljava/lang/String;Landroidx/credentials/CredentialManagerCallback;)Landroid/os/CancellationSignal;"); + + /// from: public final android.os.CancellationSignal register(java.lang.String string, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + /// The returned object must be released after use, by calling the [release] method. + CancellationSignal register( + jni.JString string, + CredentialManagerCallback + credentialManagerCallback, + ) { + return const $CancellationSignalType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_register, jni.JniCallType.objectType, + [string.reference, credentialManagerCallback.reference]).object); + } + + static final _id_authenticate = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"authenticate", + r"(Ljava/lang/String;Landroidx/credentials/CredentialManagerCallback;)Landroid/os/CancellationSignal;"); + + /// from: public final android.os.CancellationSignal authenticate(java.lang.String string, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + /// The returned object must be released after use, by calling the [release] method. + CancellationSignal authenticate( + jni.JString string, + CredentialManagerCallback + credentialManagerCallback, + ) { + return const $CancellationSignalType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_authenticate, + jni.JniCallType.objectType, + [string.reference, credentialManagerCallback.reference]).object); + } +} + +final class $CelestAuthType extends jni.JObjType { + const $CelestAuthType(); + + @override + String get signature => r"Ldev/celest/celest_auth/CelestAuth;"; + + @override + CelestAuth fromRef(jni.JObjectPtr ref) => CelestAuth.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CelestAuthType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CelestAuthType) && other is $CelestAuthType; + } +} + +/// from: android.app.Activity$ScreenCaptureCallback +class Activity_ScreenCaptureCallback extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Activity_ScreenCaptureCallback.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"android/app/Activity$ScreenCaptureCallback"); + + /// The type which includes information such as the signature of this class. + static const type = $Activity_ScreenCaptureCallbackType(); + static final _id_onScreenCaptured = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onScreenCaptured", r"()V"); + + /// from: public abstract void onScreenCaptured() + void onScreenCaptured() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onScreenCaptured, jni.JniCallType.voidType, []).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"onScreenCaptured()V") { + _$impls[$p]!.onScreenCaptured(); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory Activity_ScreenCaptureCallback.implement( + $Activity_ScreenCaptureCallbackImpl $impl, + ) { + final $p = ReceivePort(); + final $x = Activity_ScreenCaptureCallback.fromRef( + ProtectedJniExtensions.newPortProxy( + r"android.app.Activity$ScreenCaptureCallback", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $Activity_ScreenCaptureCallbackImpl { + factory $Activity_ScreenCaptureCallbackImpl({ + required void Function() onScreenCaptured, + }) = _$Activity_ScreenCaptureCallbackImpl; + + void onScreenCaptured(); +} + +class _$Activity_ScreenCaptureCallbackImpl + implements $Activity_ScreenCaptureCallbackImpl { + _$Activity_ScreenCaptureCallbackImpl({ + required void Function() onScreenCaptured, + }) : _onScreenCaptured = onScreenCaptured; + + final void Function() _onScreenCaptured; + + void onScreenCaptured() { + return _onScreenCaptured(); + } +} + +final class $Activity_ScreenCaptureCallbackType + extends jni.JObjType { + const $Activity_ScreenCaptureCallbackType(); + + @override + String get signature => r"Landroid/app/Activity$ScreenCaptureCallback;"; + + @override + Activity_ScreenCaptureCallback fromRef(jni.JObjectPtr ref) => + Activity_ScreenCaptureCallback.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($Activity_ScreenCaptureCallbackType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($Activity_ScreenCaptureCallbackType) && + other is $Activity_ScreenCaptureCallbackType; + } +} + +/// from: android.app.Activity +class Activity extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Activity.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"android/app/Activity"); + + /// The type which includes information such as the signature of this class. + static const type = $ActivityType(); + + /// from: static public final int DEFAULT_KEYS_DIALER + static const DEFAULT_KEYS_DIALER = 1; + + /// from: static public final int DEFAULT_KEYS_DISABLE + static const DEFAULT_KEYS_DISABLE = 0; + + /// from: static public final int DEFAULT_KEYS_SEARCH_GLOBAL + static const DEFAULT_KEYS_SEARCH_GLOBAL = 4; + + /// from: static public final int DEFAULT_KEYS_SEARCH_LOCAL + static const DEFAULT_KEYS_SEARCH_LOCAL = 3; + + /// from: static public final int DEFAULT_KEYS_SHORTCUT + static const DEFAULT_KEYS_SHORTCUT = 2; + + static final _id_FOCUSED_STATE_SET = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"FOCUSED_STATE_SET", + r"[I", + ); + + /// from: static protected final int[] FOCUSED_STATE_SET + /// The returned object must be released after use, by calling the [release] method. + static jni.JArray get FOCUSED_STATE_SET => + const jni.JArrayType(jni.jintType()).fromRef(jni.Jni.accessors + .getStaticField(_class.reference, _id_FOCUSED_STATE_SET, + jni.JniCallType.objectType) + .object); + + /// from: static public final int FULLSCREEN_MODE_REQUEST_ENTER + static const FULLSCREEN_MODE_REQUEST_ENTER = 1; + + /// from: static public final int FULLSCREEN_MODE_REQUEST_EXIT + static const FULLSCREEN_MODE_REQUEST_EXIT = 0; + + /// from: static public final int OVERRIDE_TRANSITION_CLOSE + static const OVERRIDE_TRANSITION_CLOSE = 1; + + /// from: static public final int OVERRIDE_TRANSITION_OPEN + static const OVERRIDE_TRANSITION_OPEN = 0; + + /// from: static public final int RESULT_CANCELED + static const RESULT_CANCELED = 0; + + /// from: static public final int RESULT_FIRST_USER + static const RESULT_FIRST_USER = 1; + + /// from: static public final int RESULT_OK + static const RESULT_OK = -1; + + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory Activity() { + return Activity.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_getIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getIntent", r"()Landroid/content/Intent;"); + + /// from: public android.content.Intent getIntent() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getIntent() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getIntent, jni.JniCallType.objectType, []).object); + } + + static final _id_setIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setIntent", r"(Landroid/content/Intent;)V"); + + /// from: public void setIntent(android.content.Intent intent) + void setIntent( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setIntent, + jni.JniCallType.voidType, [intent.reference]).check(); + } + + static final _id_setLocusContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setLocusContext", + r"(Landroid/content/LocusId;Landroid/os/Bundle;)V"); + + /// from: public void setLocusContext(android.content.LocusId locusId, android.os.Bundle bundle) + void setLocusContext( + jni.JObject locusId, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setLocusContext, + jni.JniCallType.voidType, + [locusId.reference, bundle.reference]).check(); + } + + static final _id_getApplication = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getApplication", r"()Landroid/app/Application;"); + + /// from: public final android.app.Application getApplication() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getApplication() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getApplication, jni.JniCallType.objectType, []).object); + } + + static final _id_isChild = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isChild", r"()Z"); + + /// from: public final boolean isChild() + bool isChild() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isChild, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getParent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getParent", r"()Landroid/app/Activity;"); + + /// from: public final android.app.Activity getParent() + /// The returned object must be released after use, by calling the [release] method. + Activity getParent() { + return const $ActivityType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getParent, jni.JniCallType.objectType, []).object); + } + + static final _id_getWindowManager = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getWindowManager", r"()Landroid/view/WindowManager;"); + + /// from: public android.view.WindowManager getWindowManager() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getWindowManager() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getWindowManager, + jni.JniCallType.objectType, []).object); + } + + static final _id_getWindow = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getWindow", r"()Landroid/view/Window;"); + + /// from: public android.view.Window getWindow() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getWindow() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getWindow, jni.JniCallType.objectType, []).object); + } + + static final _id_getLoaderManager = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getLoaderManager", r"()Landroid/app/LoaderManager;"); + + /// from: public android.app.LoaderManager getLoaderManager() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getLoaderManager() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLoaderManager, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCurrentFocus = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getCurrentFocus", r"()Landroid/view/View;"); + + /// from: public android.view.View getCurrentFocus() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCurrentFocus() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCurrentFocus, jni.JniCallType.objectType, []).object); + } + + static final _id_attachBaseContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"attachBaseContext", r"(Landroid/content/Context;)V"); + + /// from: protected void attachBaseContext(android.content.Context context) + void attachBaseContext( + Context context, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_attachBaseContext, + jni.JniCallType.voidType, + [context.reference]).check(); + } + + static final _id_registerActivityLifecycleCallbacks = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"registerActivityLifecycleCallbacks", + r"(Landroid/app/Application$ActivityLifecycleCallbacks;)V"); + + /// from: public void registerActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks activityLifecycleCallbacks) + void registerActivityLifecycleCallbacks( + jni.JObject activityLifecycleCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerActivityLifecycleCallbacks, + jni.JniCallType.voidType, + [activityLifecycleCallbacks.reference]).check(); + } + + static final _id_unregisterActivityLifecycleCallbacks = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"unregisterActivityLifecycleCallbacks", + r"(Landroid/app/Application$ActivityLifecycleCallbacks;)V"); + + /// from: public void unregisterActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks activityLifecycleCallbacks) + void unregisterActivityLifecycleCallbacks( + jni.JObject activityLifecycleCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterActivityLifecycleCallbacks, + jni.JniCallType.voidType, + [activityLifecycleCallbacks.reference]).check(); + } + + static final _id_registerComponentCallbacks = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerComponentCallbacks", + r"(Landroid/content/ComponentCallbacks;)V"); + + /// from: public void registerComponentCallbacks(android.content.ComponentCallbacks componentCallbacks) + void registerComponentCallbacks( + jni.JObject componentCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerComponentCallbacks, + jni.JniCallType.voidType, + [componentCallbacks.reference]).check(); + } + + static final _id_unregisterComponentCallbacks = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"unregisterComponentCallbacks", + r"(Landroid/content/ComponentCallbacks;)V"); + + /// from: public void unregisterComponentCallbacks(android.content.ComponentCallbacks componentCallbacks) + void unregisterComponentCallbacks( + jni.JObject componentCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterComponentCallbacks, + jni.JniCallType.voidType, + [componentCallbacks.reference]).check(); + } + + static final _id_onCreate = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onCreate", r"(Landroid/os/Bundle;)V"); + + /// from: protected void onCreate(android.os.Bundle bundle) + void onCreate( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onCreate, + jni.JniCallType.voidType, [bundle.reference]).check(); + } + + static final _id_getSplashScreen = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getSplashScreen", r"()Landroid/window/SplashScreen;"); + + /// from: public final android.window.SplashScreen getSplashScreen() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getSplashScreen() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getSplashScreen, jni.JniCallType.objectType, []).object); + } + + static final _id_onCreate1 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"onCreate", r"(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V"); + + /// from: public void onCreate(android.os.Bundle bundle, android.os.PersistableBundle persistableBundle) + void onCreate1( + jni.JObject bundle, + jni.JObject persistableBundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreate1, + jni.JniCallType.voidType, + [bundle.reference, persistableBundle.reference]).check(); + } + + static final _id_onRestoreInstanceState = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onRestoreInstanceState", r"(Landroid/os/Bundle;)V"); + + /// from: protected void onRestoreInstanceState(android.os.Bundle bundle) + void onRestoreInstanceState( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onRestoreInstanceState, + jni.JniCallType.voidType, + [bundle.reference]).check(); + } + + static final _id_onRestoreInstanceState1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onRestoreInstanceState", + r"(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V"); + + /// from: public void onRestoreInstanceState(android.os.Bundle bundle, android.os.PersistableBundle persistableBundle) + void onRestoreInstanceState1( + jni.JObject bundle, + jni.JObject persistableBundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onRestoreInstanceState1, + jni.JniCallType.voidType, + [bundle.reference, persistableBundle.reference]).check(); + } + + static final _id_onPostCreate = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onPostCreate", r"(Landroid/os/Bundle;)V"); + + /// from: protected void onPostCreate(android.os.Bundle bundle) + void onPostCreate( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onPostCreate, + jni.JniCallType.voidType, [bundle.reference]).check(); + } + + static final _id_onPostCreate1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onPostCreate", + r"(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V"); + + /// from: public void onPostCreate(android.os.Bundle bundle, android.os.PersistableBundle persistableBundle) + void onPostCreate1( + jni.JObject bundle, + jni.JObject persistableBundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPostCreate1, + jni.JniCallType.voidType, + [bundle.reference, persistableBundle.reference]).check(); + } + + static final _id_onStart = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onStart", r"()V"); + + /// from: protected void onStart() + void onStart() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onStart, jni.JniCallType.voidType, []).check(); + } + + static final _id_onRestart = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onRestart", r"()V"); + + /// from: protected void onRestart() + void onRestart() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onRestart, jni.JniCallType.voidType, []).check(); + } + + static final _id_onStateNotSaved = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onStateNotSaved", r"()V"); + + /// from: public void onStateNotSaved() + void onStateNotSaved() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onStateNotSaved, jni.JniCallType.voidType, []).check(); + } + + static final _id_onResume = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onResume", r"()V"); + + /// from: protected void onResume() + void onResume() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onResume, jni.JniCallType.voidType, []).check(); + } + + static final _id_onPostResume = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onPostResume", r"()V"); + + /// from: protected void onPostResume() + void onPostResume() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onPostResume, jni.JniCallType.voidType, []).check(); + } + + static final _id_onTopResumedActivityChanged = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onTopResumedActivityChanged", r"(Z)V"); + + /// from: public void onTopResumedActivityChanged(boolean z) + void onTopResumedActivityChanged( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onTopResumedActivityChanged, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_isVoiceInteraction = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isVoiceInteraction", r"()Z"); + + /// from: public boolean isVoiceInteraction() + bool isVoiceInteraction() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isVoiceInteraction, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isVoiceInteractionRoot = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isVoiceInteractionRoot", r"()Z"); + + /// from: public boolean isVoiceInteractionRoot() + bool isVoiceInteractionRoot() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isVoiceInteractionRoot, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getVoiceInteractor = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getVoiceInteractor", + r"()Landroid/app/VoiceInteractor;"); + + /// from: public android.app.VoiceInteractor getVoiceInteractor() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getVoiceInteractor() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getVoiceInteractor, + jni.JniCallType.objectType, []).object); + } + + static final _id_isLocalVoiceInteractionSupported = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"isLocalVoiceInteractionSupported", r"()Z"); + + /// from: public boolean isLocalVoiceInteractionSupported() + bool isLocalVoiceInteractionSupported() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_isLocalVoiceInteractionSupported, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_startLocalVoiceInteraction = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startLocalVoiceInteraction", + r"(Landroid/os/Bundle;)V"); + + /// from: public void startLocalVoiceInteraction(android.os.Bundle bundle) + void startLocalVoiceInteraction( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startLocalVoiceInteraction, + jni.JniCallType.voidType, + [bundle.reference]).check(); + } + + static final _id_onLocalVoiceInteractionStarted = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"onLocalVoiceInteractionStarted", r"()V"); + + /// from: public void onLocalVoiceInteractionStarted() + void onLocalVoiceInteractionStarted() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onLocalVoiceInteractionStarted, + jni.JniCallType.voidType, []).check(); + } + + static final _id_onLocalVoiceInteractionStopped = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"onLocalVoiceInteractionStopped", r"()V"); + + /// from: public void onLocalVoiceInteractionStopped() + void onLocalVoiceInteractionStopped() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onLocalVoiceInteractionStopped, + jni.JniCallType.voidType, []).check(); + } + + static final _id_stopLocalVoiceInteraction = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"stopLocalVoiceInteraction", r"()V"); + + /// from: public void stopLocalVoiceInteraction() + void stopLocalVoiceInteraction() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_stopLocalVoiceInteraction, jni.JniCallType.voidType, []).check(); + } + + static final _id_onNewIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onNewIntent", r"(Landroid/content/Intent;)V"); + + /// from: protected void onNewIntent(android.content.Intent intent) + void onNewIntent( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onNewIntent, + jni.JniCallType.voidType, [intent.reference]).check(); + } + + static final _id_onSaveInstanceState = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onSaveInstanceState", r"(Landroid/os/Bundle;)V"); + + /// from: protected void onSaveInstanceState(android.os.Bundle bundle) + void onSaveInstanceState( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onSaveInstanceState, + jni.JniCallType.voidType, + [bundle.reference]).check(); + } + + static final _id_onSaveInstanceState1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onSaveInstanceState", + r"(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V"); + + /// from: public void onSaveInstanceState(android.os.Bundle bundle, android.os.PersistableBundle persistableBundle) + void onSaveInstanceState1( + jni.JObject bundle, + jni.JObject persistableBundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onSaveInstanceState1, + jni.JniCallType.voidType, + [bundle.reference, persistableBundle.reference]).check(); + } + + static final _id_onPause = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onPause", r"()V"); + + /// from: protected void onPause() + void onPause() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onPause, jni.JniCallType.voidType, []).check(); + } + + static final _id_onUserLeaveHint = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onUserLeaveHint", r"()V"); + + /// from: protected void onUserLeaveHint() + void onUserLeaveHint() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onUserLeaveHint, jni.JniCallType.voidType, []).check(); + } + + static final _id_onCreateThumbnail = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onCreateThumbnail", + r"(Landroid/graphics/Bitmap;Landroid/graphics/Canvas;)Z"); + + /// from: public boolean onCreateThumbnail(android.graphics.Bitmap bitmap, android.graphics.Canvas canvas) + bool onCreateThumbnail( + jni.JObject bitmap, + jni.JObject canvas, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateThumbnail, + jni.JniCallType.booleanType, + [bitmap.reference, canvas.reference]).boolean; + } + + static final _id_onCreateDescription = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onCreateDescription", r"()Ljava/lang/CharSequence;"); + + /// from: public java.lang.CharSequence onCreateDescription() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreateDescription() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateDescription, + jni.JniCallType.objectType, []).object); + } + + static final _id_onProvideAssistData = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onProvideAssistData", r"(Landroid/os/Bundle;)V"); + + /// from: public void onProvideAssistData(android.os.Bundle bundle) + void onProvideAssistData( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onProvideAssistData, + jni.JniCallType.voidType, + [bundle.reference]).check(); + } + + static final _id_onProvideAssistContent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onProvideAssistContent", + r"(Landroid/app/assist/AssistContent;)V"); + + /// from: public void onProvideAssistContent(android.app.assist.AssistContent assistContent) + void onProvideAssistContent( + jni.JObject assistContent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onProvideAssistContent, + jni.JniCallType.voidType, + [assistContent.reference]).check(); + } + + static final _id_onGetDirectActions = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onGetDirectActions", + r"(Landroid/os/CancellationSignal;Ljava/util/function/Consumer;)V"); + + /// from: public void onGetDirectActions(android.os.CancellationSignal cancellationSignal, java.util.function.Consumer consumer) + void onGetDirectActions( + CancellationSignal cancellationSignal, + jni.JObject consumer, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onGetDirectActions, + jni.JniCallType.voidType, + [cancellationSignal.reference, consumer.reference]).check(); + } + + static final _id_onPerformDirectAction = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onPerformDirectAction", + r"(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;Ljava/util/function/Consumer;)V"); + + /// from: public void onPerformDirectAction(java.lang.String string, android.os.Bundle bundle, android.os.CancellationSignal cancellationSignal, java.util.function.Consumer consumer) + void onPerformDirectAction( + jni.JString string, + jni.JObject bundle, + CancellationSignal cancellationSignal, + jni.JObject consumer, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onPerformDirectAction, jni.JniCallType.voidType, [ + string.reference, + bundle.reference, + cancellationSignal.reference, + consumer.reference + ]).check(); + } + + static final _id_requestShowKeyboardShortcuts = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"requestShowKeyboardShortcuts", r"()V"); + + /// from: public final void requestShowKeyboardShortcuts() + void requestShowKeyboardShortcuts() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_requestShowKeyboardShortcuts, jni.JniCallType.voidType, []).check(); + } + + static final _id_dismissKeyboardShortcutsHelper = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"dismissKeyboardShortcutsHelper", r"()V"); + + /// from: public final void dismissKeyboardShortcutsHelper() + void dismissKeyboardShortcutsHelper() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dismissKeyboardShortcutsHelper, + jni.JniCallType.voidType, []).check(); + } + + static final _id_onProvideKeyboardShortcuts = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onProvideKeyboardShortcuts", + r"(Ljava/util/List;Landroid/view/Menu;I)V"); + + /// from: public void onProvideKeyboardShortcuts(java.util.List list, android.view.Menu menu, int i) + void onProvideKeyboardShortcuts( + jni.JList list, + jni.JObject menu, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onProvideKeyboardShortcuts, + jni.JniCallType.voidType, + [list.reference, menu.reference, jni.JValueInt(i)]).check(); + } + + static final _id_showAssist = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"showAssist", r"(Landroid/os/Bundle;)Z"); + + /// from: public boolean showAssist(android.os.Bundle bundle) + bool showAssist( + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_showAssist, + jni.JniCallType.booleanType, [bundle.reference]).boolean; + } + + static final _id_onStop = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onStop", r"()V"); + + /// from: protected void onStop() + void onStop() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onStop, jni.JniCallType.voidType, []).check(); + } + + static final _id_onDestroy = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onDestroy", r"()V"); + + /// from: protected void onDestroy() + void onDestroy() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onDestroy, jni.JniCallType.voidType, []).check(); + } + + static final _id_reportFullyDrawn = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"reportFullyDrawn", r"()V"); + + /// from: public void reportFullyDrawn() + void reportFullyDrawn() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_reportFullyDrawn, jni.JniCallType.voidType, []).check(); + } + + static final _id_onMultiWindowModeChanged = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onMultiWindowModeChanged", + r"(ZLandroid/content/res/Configuration;)V"); + + /// from: public void onMultiWindowModeChanged(boolean z, android.content.res.Configuration configuration) + void onMultiWindowModeChanged( + bool z, + jni.JObject configuration, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onMultiWindowModeChanged, + jni.JniCallType.voidType, + [z ? 1 : 0, configuration.reference]).check(); + } + + static final _id_onMultiWindowModeChanged1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onMultiWindowModeChanged", r"(Z)V"); + + /// from: public void onMultiWindowModeChanged(boolean z) + void onMultiWindowModeChanged1( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onMultiWindowModeChanged1, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_isInMultiWindowMode = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isInMultiWindowMode", r"()Z"); + + /// from: public boolean isInMultiWindowMode() + bool isInMultiWindowMode() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isInMultiWindowMode, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_onPictureInPictureModeChanged = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onPictureInPictureModeChanged", + r"(ZLandroid/content/res/Configuration;)V"); + + /// from: public void onPictureInPictureModeChanged(boolean z, android.content.res.Configuration configuration) + void onPictureInPictureModeChanged( + bool z, + jni.JObject configuration, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPictureInPictureModeChanged, + jni.JniCallType.voidType, + [z ? 1 : 0, configuration.reference]).check(); + } + + static final _id_onPictureInPictureUiStateChanged = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onPictureInPictureUiStateChanged", + r"(Landroid/app/PictureInPictureUiState;)V"); + + /// from: public void onPictureInPictureUiStateChanged(android.app.PictureInPictureUiState pictureInPictureUiState) + void onPictureInPictureUiStateChanged( + jni.JObject pictureInPictureUiState, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPictureInPictureUiStateChanged, + jni.JniCallType.voidType, + [pictureInPictureUiState.reference]).check(); + } + + static final _id_onPictureInPictureModeChanged1 = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"onPictureInPictureModeChanged", r"(Z)V"); + + /// from: public void onPictureInPictureModeChanged(boolean z) + void onPictureInPictureModeChanged1( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPictureInPictureModeChanged1, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_isInPictureInPictureMode = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isInPictureInPictureMode", r"()Z"); + + /// from: public boolean isInPictureInPictureMode() + bool isInPictureInPictureMode() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isInPictureInPictureMode, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_enterPictureInPictureMode = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"enterPictureInPictureMode", r"()V"); + + /// from: public void enterPictureInPictureMode() + void enterPictureInPictureMode() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_enterPictureInPictureMode, jni.JniCallType.voidType, []).check(); + } + + static final _id_enterPictureInPictureMode1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"enterPictureInPictureMode", + r"(Landroid/app/PictureInPictureParams;)Z"); + + /// from: public boolean enterPictureInPictureMode(android.app.PictureInPictureParams pictureInPictureParams) + bool enterPictureInPictureMode1( + jni.JObject pictureInPictureParams, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_enterPictureInPictureMode1, + jni.JniCallType.booleanType, + [pictureInPictureParams.reference]).boolean; + } + + static final _id_setPictureInPictureParams = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setPictureInPictureParams", + r"(Landroid/app/PictureInPictureParams;)V"); + + /// from: public void setPictureInPictureParams(android.app.PictureInPictureParams pictureInPictureParams) + void setPictureInPictureParams( + jni.JObject pictureInPictureParams, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setPictureInPictureParams, + jni.JniCallType.voidType, + [pictureInPictureParams.reference]).check(); + } + + static final _id_getMaxNumPictureInPictureActions = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"getMaxNumPictureInPictureActions", r"()I"); + + /// from: public int getMaxNumPictureInPictureActions() + int getMaxNumPictureInPictureActions() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getMaxNumPictureInPictureActions, + jni.JniCallType.intType, []).integer; + } + + static final _id_onPictureInPictureRequested = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onPictureInPictureRequested", r"()Z"); + + /// from: public boolean onPictureInPictureRequested() + bool onPictureInPictureRequested() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPictureInPictureRequested, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_requestFullscreenMode = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"requestFullscreenMode", + r"(ILandroid/os/OutcomeReceiver;)V"); + + /// from: public void requestFullscreenMode(int i, android.os.OutcomeReceiver outcomeReceiver) + void requestFullscreenMode( + int i, + jni.JObject outcomeReceiver, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requestFullscreenMode, + jni.JniCallType.voidType, + [jni.JValueInt(i), outcomeReceiver.reference]).check(); + } + + static final _id_setShouldDockBigOverlays = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setShouldDockBigOverlays", r"(Z)V"); + + /// from: public void setShouldDockBigOverlays(boolean z) + void setShouldDockBigOverlays( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setShouldDockBigOverlays, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_shouldDockBigOverlays = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"shouldDockBigOverlays", r"()Z"); + + /// from: public boolean shouldDockBigOverlays() + bool shouldDockBigOverlays() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_shouldDockBigOverlays, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_onConfigurationChanged = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onConfigurationChanged", + r"(Landroid/content/res/Configuration;)V"); + + /// from: public void onConfigurationChanged(android.content.res.Configuration configuration) + void onConfigurationChanged( + jni.JObject configuration, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onConfigurationChanged, + jni.JniCallType.voidType, + [configuration.reference]).check(); + } + + static final _id_getChangingConfigurations = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getChangingConfigurations", r"()I"); + + /// from: public int getChangingConfigurations() + int getChangingConfigurations() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_getChangingConfigurations, jni.JniCallType.intType, []).integer; + } + + static final _id_getLastNonConfigurationInstance = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getLastNonConfigurationInstance", + r"()Ljava/lang/Object;"); + + /// from: public java.lang.Object getLastNonConfigurationInstance() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getLastNonConfigurationInstance() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLastNonConfigurationInstance, + jni.JniCallType.objectType, []).object); + } + + static final _id_onRetainNonConfigurationInstance = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onRetainNonConfigurationInstance", + r"()Ljava/lang/Object;"); + + /// from: public java.lang.Object onRetainNonConfigurationInstance() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onRetainNonConfigurationInstance() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onRetainNonConfigurationInstance, + jni.JniCallType.objectType, []).object); + } + + static final _id_onLowMemory = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onLowMemory", r"()V"); + + /// from: public void onLowMemory() + void onLowMemory() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onLowMemory, jni.JniCallType.voidType, []).check(); + } + + static final _id_onTrimMemory = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onTrimMemory", r"(I)V"); + + /// from: public void onTrimMemory(int i) + void onTrimMemory( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onTrimMemory, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_getFragmentManager = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getFragmentManager", + r"()Landroid/app/FragmentManager;"); + + /// from: public android.app.FragmentManager getFragmentManager() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getFragmentManager() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getFragmentManager, + jni.JniCallType.objectType, []).object); + } + + static final _id_onAttachFragment = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onAttachFragment", r"(Landroid/app/Fragment;)V"); + + /// from: public void onAttachFragment(android.app.Fragment fragment) + void onAttachFragment( + jni.JObject fragment, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onAttachFragment, + jni.JniCallType.voidType, [fragment.reference]).check(); + } + + static final _id_managedQuery = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"managedQuery", + r"(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"); + + /// from: public final android.database.Cursor managedQuery(android.net.Uri uri, java.lang.String[] strings, java.lang.String string, java.lang.String[] strings1, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject managedQuery( + jni.JObject uri, + jni.JArray strings, + jni.JString string, + jni.JArray strings1, + jni.JString string1, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_managedQuery, jni.JniCallType.objectType, [ + uri.reference, + strings.reference, + string.reference, + strings1.reference, + string1.reference + ]).object); + } + + static final _id_startManagingCursor = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startManagingCursor", + r"(Landroid/database/Cursor;)V"); + + /// from: public void startManagingCursor(android.database.Cursor cursor) + void startManagingCursor( + jni.JObject cursor, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startManagingCursor, + jni.JniCallType.voidType, + [cursor.reference]).check(); + } + + static final _id_stopManagingCursor = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"stopManagingCursor", r"(Landroid/database/Cursor;)V"); + + /// from: public void stopManagingCursor(android.database.Cursor cursor) + void stopManagingCursor( + jni.JObject cursor, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_stopManagingCursor, + jni.JniCallType.voidType, + [cursor.reference]).check(); + } + + static final _id_findViewById = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"findViewById", r"(I)Landroid/view/View;"); + + /// from: public T findViewById(int i) + /// The returned object must be released after use, by calling the [release] method. + $T findViewById<$T extends jni.JObject>( + int i, { + required jni.JObjType<$T> T, + }) { + return T.fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_findViewById, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_requireViewById = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"requireViewById", r"(I)Landroid/view/View;"); + + /// from: public final T requireViewById(int i) + /// The returned object must be released after use, by calling the [release] method. + $T requireViewById<$T extends jni.JObject>( + int i, { + required jni.JObjType<$T> T, + }) { + return T.fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requireViewById, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_getActionBar = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getActionBar", r"()Landroid/app/ActionBar;"); + + /// from: public android.app.ActionBar getActionBar() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getActionBar() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getActionBar, jni.JniCallType.objectType, []).object); + } + + static final _id_setActionBar = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setActionBar", r"(Landroid/widget/Toolbar;)V"); + + /// from: public void setActionBar(android.widget.Toolbar toolbar) + void setActionBar( + jni.JObject toolbar, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setActionBar, + jni.JniCallType.voidType, [toolbar.reference]).check(); + } + + static final _id_setContentView = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setContentView", r"(I)V"); + + /// from: public void setContentView(int i) + void setContentView( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setContentView, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_setContentView1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setContentView", r"(Landroid/view/View;)V"); + + /// from: public void setContentView(android.view.View view) + void setContentView1( + jni.JObject view, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setContentView1, + jni.JniCallType.voidType, [view.reference]).check(); + } + + static final _id_setContentView2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setContentView", + r"(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"); + + /// from: public void setContentView(android.view.View view, android.view.ViewGroup$LayoutParams layoutParams) + void setContentView2( + jni.JObject view, + jni.JObject layoutParams, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setContentView2, + jni.JniCallType.voidType, + [view.reference, layoutParams.reference]).check(); + } + + static final _id_addContentView = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addContentView", + r"(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"); + + /// from: public void addContentView(android.view.View view, android.view.ViewGroup$LayoutParams layoutParams) + void addContentView( + jni.JObject view, + jni.JObject layoutParams, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addContentView, + jni.JniCallType.voidType, + [view.reference, layoutParams.reference]).check(); + } + + static final _id_getContentTransitionManager = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getContentTransitionManager", + r"()Landroid/transition/TransitionManager;"); + + /// from: public android.transition.TransitionManager getContentTransitionManager() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getContentTransitionManager() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getContentTransitionManager, + jni.JniCallType.objectType, []).object); + } + + static final _id_setContentTransitionManager = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setContentTransitionManager", + r"(Landroid/transition/TransitionManager;)V"); + + /// from: public void setContentTransitionManager(android.transition.TransitionManager transitionManager) + void setContentTransitionManager( + jni.JObject transitionManager, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setContentTransitionManager, + jni.JniCallType.voidType, + [transitionManager.reference]).check(); + } + + static final _id_getContentScene = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getContentScene", r"()Landroid/transition/Scene;"); + + /// from: public android.transition.Scene getContentScene() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getContentScene() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getContentScene, jni.JniCallType.objectType, []).object); + } + + static final _id_setFinishOnTouchOutside = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setFinishOnTouchOutside", r"(Z)V"); + + /// from: public void setFinishOnTouchOutside(boolean z) + void setFinishOnTouchOutside( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setFinishOnTouchOutside, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setDefaultKeyMode = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setDefaultKeyMode", r"(I)V"); + + /// from: public final void setDefaultKeyMode(int i) + void setDefaultKeyMode( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setDefaultKeyMode, + jni.JniCallType.voidType, + [jni.JValueInt(i)]).check(); + } + + static final _id_onKeyDown = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onKeyDown", r"(ILandroid/view/KeyEvent;)Z"); + + /// from: public boolean onKeyDown(int i, android.view.KeyEvent keyEvent) + bool onKeyDown( + int i, + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onKeyDown, + jni.JniCallType.booleanType, + [jni.JValueInt(i), keyEvent.reference]).boolean; + } + + static final _id_onKeyLongPress = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onKeyLongPress", r"(ILandroid/view/KeyEvent;)Z"); + + /// from: public boolean onKeyLongPress(int i, android.view.KeyEvent keyEvent) + bool onKeyLongPress( + int i, + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onKeyLongPress, + jni.JniCallType.booleanType, + [jni.JValueInt(i), keyEvent.reference]).boolean; + } + + static final _id_onKeyUp = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onKeyUp", r"(ILandroid/view/KeyEvent;)Z"); + + /// from: public boolean onKeyUp(int i, android.view.KeyEvent keyEvent) + bool onKeyUp( + int i, + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onKeyUp, + jni.JniCallType.booleanType, + [jni.JValueInt(i), keyEvent.reference]).boolean; + } + + static final _id_onKeyMultiple = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onKeyMultiple", r"(IILandroid/view/KeyEvent;)Z"); + + /// from: public boolean onKeyMultiple(int i, int i1, android.view.KeyEvent keyEvent) + bool onKeyMultiple( + int i, + int i1, + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onKeyMultiple, + jni.JniCallType.booleanType, + [jni.JValueInt(i), jni.JValueInt(i1), keyEvent.reference]).boolean; + } + + static final _id_onBackPressed = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onBackPressed", r"()V"); + + /// from: public void onBackPressed() + void onBackPressed() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onBackPressed, jni.JniCallType.voidType, []).check(); + } + + static final _id_onKeyShortcut = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onKeyShortcut", r"(ILandroid/view/KeyEvent;)Z"); + + /// from: public boolean onKeyShortcut(int i, android.view.KeyEvent keyEvent) + bool onKeyShortcut( + int i, + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onKeyShortcut, + jni.JniCallType.booleanType, + [jni.JValueInt(i), keyEvent.reference]).boolean; + } + + static final _id_onTouchEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onTouchEvent", r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean onTouchEvent(android.view.MotionEvent motionEvent) + bool onTouchEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onTouchEvent, + jni.JniCallType.booleanType, [motionEvent.reference]).boolean; + } + + static final _id_onTrackballEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onTrackballEvent", r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean onTrackballEvent(android.view.MotionEvent motionEvent) + bool onTrackballEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onTrackballEvent, + jni.JniCallType.booleanType, [motionEvent.reference]).boolean; + } + + static final _id_onGenericMotionEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onGenericMotionEvent", + r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean onGenericMotionEvent(android.view.MotionEvent motionEvent) + bool onGenericMotionEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onGenericMotionEvent, + jni.JniCallType.booleanType, + [motionEvent.reference]).boolean; + } + + static final _id_onUserInteraction = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onUserInteraction", r"()V"); + + /// from: public void onUserInteraction() + void onUserInteraction() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onUserInteraction, jni.JniCallType.voidType, []).check(); + } + + static final _id_onWindowAttributesChanged = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onWindowAttributesChanged", + r"(Landroid/view/WindowManager$LayoutParams;)V"); + + /// from: public void onWindowAttributesChanged(android.view.WindowManager$LayoutParams layoutParams) + void onWindowAttributesChanged( + jni.JObject layoutParams, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onWindowAttributesChanged, + jni.JniCallType.voidType, + [layoutParams.reference]).check(); + } + + static final _id_onContentChanged = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onContentChanged", r"()V"); + + /// from: public void onContentChanged() + void onContentChanged() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onContentChanged, jni.JniCallType.voidType, []).check(); + } + + static final _id_onWindowFocusChanged = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onWindowFocusChanged", r"(Z)V"); + + /// from: public void onWindowFocusChanged(boolean z) + void onWindowFocusChanged( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onWindowFocusChanged, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_onAttachedToWindow = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onAttachedToWindow", r"()V"); + + /// from: public void onAttachedToWindow() + void onAttachedToWindow() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_onAttachedToWindow, jni.JniCallType.voidType, []).check(); + } + + static final _id_onDetachedFromWindow = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onDetachedFromWindow", r"()V"); + + /// from: public void onDetachedFromWindow() + void onDetachedFromWindow() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_onDetachedFromWindow, jni.JniCallType.voidType, []).check(); + } + + static final _id_hasWindowFocus = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"hasWindowFocus", r"()Z"); + + /// from: public boolean hasWindowFocus() + bool hasWindowFocus() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_hasWindowFocus, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_dispatchKeyEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"dispatchKeyEvent", r"(Landroid/view/KeyEvent;)Z"); + + /// from: public boolean dispatchKeyEvent(android.view.KeyEvent keyEvent) + bool dispatchKeyEvent( + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_dispatchKeyEvent, + jni.JniCallType.booleanType, [keyEvent.reference]).boolean; + } + + static final _id_dispatchKeyShortcutEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"dispatchKeyShortcutEvent", + r"(Landroid/view/KeyEvent;)Z"); + + /// from: public boolean dispatchKeyShortcutEvent(android.view.KeyEvent keyEvent) + bool dispatchKeyShortcutEvent( + jni.JObject keyEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dispatchKeyShortcutEvent, + jni.JniCallType.booleanType, + [keyEvent.reference]).boolean; + } + + static final _id_dispatchTouchEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"dispatchTouchEvent", + r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean dispatchTouchEvent(android.view.MotionEvent motionEvent) + bool dispatchTouchEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dispatchTouchEvent, + jni.JniCallType.booleanType, + [motionEvent.reference]).boolean; + } + + static final _id_dispatchTrackballEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"dispatchTrackballEvent", + r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean dispatchTrackballEvent(android.view.MotionEvent motionEvent) + bool dispatchTrackballEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dispatchTrackballEvent, + jni.JniCallType.booleanType, + [motionEvent.reference]).boolean; + } + + static final _id_dispatchGenericMotionEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"dispatchGenericMotionEvent", + r"(Landroid/view/MotionEvent;)Z"); + + /// from: public boolean dispatchGenericMotionEvent(android.view.MotionEvent motionEvent) + bool dispatchGenericMotionEvent( + jni.JObject motionEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dispatchGenericMotionEvent, + jni.JniCallType.booleanType, + [motionEvent.reference]).boolean; + } + + static final _id_dispatchPopulateAccessibilityEvent = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"dispatchPopulateAccessibilityEvent", + r"(Landroid/view/accessibility/AccessibilityEvent;)Z"); + + /// from: public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent accessibilityEvent) + bool dispatchPopulateAccessibilityEvent( + jni.JObject accessibilityEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_dispatchPopulateAccessibilityEvent, + jni.JniCallType.booleanType, + [accessibilityEvent.reference]).boolean; + } + + static final _id_onCreatePanelView = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onCreatePanelView", r"(I)Landroid/view/View;"); + + /// from: public android.view.View onCreatePanelView(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreatePanelView( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreatePanelView, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_onCreatePanelMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onCreatePanelMenu", r"(ILandroid/view/Menu;)Z"); + + /// from: public boolean onCreatePanelMenu(int i, android.view.Menu menu) + bool onCreatePanelMenu( + int i, + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreatePanelMenu, + jni.JniCallType.booleanType, + [jni.JValueInt(i), menu.reference]).boolean; + } + + static final _id_onPreparePanel = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onPreparePanel", + r"(ILandroid/view/View;Landroid/view/Menu;)Z"); + + /// from: public boolean onPreparePanel(int i, android.view.View view, android.view.Menu menu) + bool onPreparePanel( + int i, + jni.JObject view, + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPreparePanel, + jni.JniCallType.booleanType, + [jni.JValueInt(i), view.reference, menu.reference]).boolean; + } + + static final _id_onMenuOpened = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onMenuOpened", r"(ILandroid/view/Menu;)Z"); + + /// from: public boolean onMenuOpened(int i, android.view.Menu menu) + bool onMenuOpened( + int i, + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onMenuOpened, + jni.JniCallType.booleanType, + [jni.JValueInt(i), menu.reference]).boolean; + } + + static final _id_onMenuItemSelected = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onMenuItemSelected", r"(ILandroid/view/MenuItem;)Z"); + + /// from: public boolean onMenuItemSelected(int i, android.view.MenuItem menuItem) + bool onMenuItemSelected( + int i, + jni.JObject menuItem, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onMenuItemSelected, + jni.JniCallType.booleanType, + [jni.JValueInt(i), menuItem.reference]).boolean; + } + + static final _id_onPanelClosed = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onPanelClosed", r"(ILandroid/view/Menu;)V"); + + /// from: public void onPanelClosed(int i, android.view.Menu menu) + void onPanelClosed( + int i, + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onPanelClosed, + jni.JniCallType.voidType, [jni.JValueInt(i), menu.reference]).check(); + } + + static final _id_invalidateOptionsMenu = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"invalidateOptionsMenu", r"()V"); + + /// from: public void invalidateOptionsMenu() + void invalidateOptionsMenu() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_invalidateOptionsMenu, jni.JniCallType.voidType, []).check(); + } + + static final _id_onCreateOptionsMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onCreateOptionsMenu", r"(Landroid/view/Menu;)Z"); + + /// from: public boolean onCreateOptionsMenu(android.view.Menu menu) + bool onCreateOptionsMenu( + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateOptionsMenu, + jni.JniCallType.booleanType, + [menu.reference]).boolean; + } + + static final _id_onPrepareOptionsMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onPrepareOptionsMenu", r"(Landroid/view/Menu;)Z"); + + /// from: public boolean onPrepareOptionsMenu(android.view.Menu menu) + bool onPrepareOptionsMenu( + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPrepareOptionsMenu, + jni.JniCallType.booleanType, + [menu.reference]).boolean; + } + + static final _id_onOptionsItemSelected = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onOptionsItemSelected", + r"(Landroid/view/MenuItem;)Z"); + + /// from: public boolean onOptionsItemSelected(android.view.MenuItem menuItem) + bool onOptionsItemSelected( + jni.JObject menuItem, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onOptionsItemSelected, + jni.JniCallType.booleanType, + [menuItem.reference]).boolean; + } + + static final _id_onNavigateUp = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onNavigateUp", r"()Z"); + + /// from: public boolean onNavigateUp() + bool onNavigateUp() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onNavigateUp, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_onNavigateUpFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onNavigateUpFromChild", r"(Landroid/app/Activity;)Z"); + + /// from: public boolean onNavigateUpFromChild(android.app.Activity activity) + bool onNavigateUpFromChild( + Activity activity, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onNavigateUpFromChild, + jni.JniCallType.booleanType, + [activity.reference]).boolean; + } + + static final _id_onCreateNavigateUpTaskStack = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onCreateNavigateUpTaskStack", + r"(Landroid/app/TaskStackBuilder;)V"); + + /// from: public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder taskStackBuilder) + void onCreateNavigateUpTaskStack( + jni.JObject taskStackBuilder, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateNavigateUpTaskStack, + jni.JniCallType.voidType, + [taskStackBuilder.reference]).check(); + } + + static final _id_onPrepareNavigateUpTaskStack = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onPrepareNavigateUpTaskStack", + r"(Landroid/app/TaskStackBuilder;)V"); + + /// from: public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder taskStackBuilder) + void onPrepareNavigateUpTaskStack( + jni.JObject taskStackBuilder, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPrepareNavigateUpTaskStack, + jni.JniCallType.voidType, + [taskStackBuilder.reference]).check(); + } + + static final _id_onOptionsMenuClosed = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onOptionsMenuClosed", r"(Landroid/view/Menu;)V"); + + /// from: public void onOptionsMenuClosed(android.view.Menu menu) + void onOptionsMenuClosed( + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onOptionsMenuClosed, + jni.JniCallType.voidType, + [menu.reference]).check(); + } + + static final _id_openOptionsMenu = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"openOptionsMenu", r"()V"); + + /// from: public void openOptionsMenu() + void openOptionsMenu() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_openOptionsMenu, jni.JniCallType.voidType, []).check(); + } + + static final _id_closeOptionsMenu = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"closeOptionsMenu", r"()V"); + + /// from: public void closeOptionsMenu() + void closeOptionsMenu() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_closeOptionsMenu, jni.JniCallType.voidType, []).check(); + } + + static final _id_onCreateContextMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onCreateContextMenu", + r"(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V"); + + /// from: public void onCreateContextMenu(android.view.ContextMenu contextMenu, android.view.View view, android.view.ContextMenu$ContextMenuInfo contextMenuInfo) + void onCreateContextMenu( + jni.JObject contextMenu, + jni.JObject view, + jni.JObject contextMenuInfo, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onCreateContextMenu, jni.JniCallType.voidType, [ + contextMenu.reference, + view.reference, + contextMenuInfo.reference + ]).check(); + } + + static final _id_registerForContextMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"registerForContextMenu", r"(Landroid/view/View;)V"); + + /// from: public void registerForContextMenu(android.view.View view) + void registerForContextMenu( + jni.JObject view, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerForContextMenu, + jni.JniCallType.voidType, + [view.reference]).check(); + } + + static final _id_unregisterForContextMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"unregisterForContextMenu", r"(Landroid/view/View;)V"); + + /// from: public void unregisterForContextMenu(android.view.View view) + void unregisterForContextMenu( + jni.JObject view, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterForContextMenu, + jni.JniCallType.voidType, + [view.reference]).check(); + } + + static final _id_openContextMenu = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"openContextMenu", r"(Landroid/view/View;)V"); + + /// from: public void openContextMenu(android.view.View view) + void openContextMenu( + jni.JObject view, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_openContextMenu, + jni.JniCallType.voidType, [view.reference]).check(); + } + + static final _id_closeContextMenu = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"closeContextMenu", r"()V"); + + /// from: public void closeContextMenu() + void closeContextMenu() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_closeContextMenu, jni.JniCallType.voidType, []).check(); + } + + static final _id_onContextItemSelected = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onContextItemSelected", + r"(Landroid/view/MenuItem;)Z"); + + /// from: public boolean onContextItemSelected(android.view.MenuItem menuItem) + bool onContextItemSelected( + jni.JObject menuItem, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onContextItemSelected, + jni.JniCallType.booleanType, + [menuItem.reference]).boolean; + } + + static final _id_onContextMenuClosed = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onContextMenuClosed", r"(Landroid/view/Menu;)V"); + + /// from: public void onContextMenuClosed(android.view.Menu menu) + void onContextMenuClosed( + jni.JObject menu, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onContextMenuClosed, + jni.JniCallType.voidType, + [menu.reference]).check(); + } + + static final _id_onCreateDialog = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onCreateDialog", r"(I)Landroid/app/Dialog;"); + + /// from: protected android.app.Dialog onCreateDialog(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreateDialog( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateDialog, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_onCreateDialog1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onCreateDialog", + r"(ILandroid/os/Bundle;)Landroid/app/Dialog;"); + + /// from: protected android.app.Dialog onCreateDialog(int i, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreateDialog1( + int i, + jni.JObject bundle, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateDialog1, + jni.JniCallType.objectType, + [jni.JValueInt(i), bundle.reference]).object); + } + + static final _id_onPrepareDialog = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onPrepareDialog", r"(ILandroid/app/Dialog;)V"); + + /// from: protected void onPrepareDialog(int i, android.app.Dialog dialog) + void onPrepareDialog( + int i, + jni.JObject dialog, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onPrepareDialog, + jni.JniCallType.voidType, [jni.JValueInt(i), dialog.reference]).check(); + } + + static final _id_onPrepareDialog1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onPrepareDialog", + r"(ILandroid/app/Dialog;Landroid/os/Bundle;)V"); + + /// from: protected void onPrepareDialog(int i, android.app.Dialog dialog, android.os.Bundle bundle) + void onPrepareDialog1( + int i, + jni.JObject dialog, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onPrepareDialog1, + jni.JniCallType.voidType, + [jni.JValueInt(i), dialog.reference, bundle.reference]).check(); + } + + static final _id_showDialog = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"showDialog", r"(I)V"); + + /// from: public final void showDialog(int i) + void showDialog( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_showDialog, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_showDialog1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"showDialog", r"(ILandroid/os/Bundle;)Z"); + + /// from: public final boolean showDialog(int i, android.os.Bundle bundle) + bool showDialog1( + int i, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_showDialog1, + jni.JniCallType.booleanType, + [jni.JValueInt(i), bundle.reference]).boolean; + } + + static final _id_dismissDialog = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"dismissDialog", r"(I)V"); + + /// from: public final void dismissDialog(int i) + void dismissDialog( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_dismissDialog, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_removeDialog = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"removeDialog", r"(I)V"); + + /// from: public final void removeDialog(int i) + void removeDialog( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_removeDialog, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_onSearchRequested = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onSearchRequested", r"(Landroid/view/SearchEvent;)Z"); + + /// from: public boolean onSearchRequested(android.view.SearchEvent searchEvent) + bool onSearchRequested( + jni.JObject searchEvent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onSearchRequested, + jni.JniCallType.booleanType, + [searchEvent.reference]).boolean; + } + + static final _id_onSearchRequested1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onSearchRequested", r"()Z"); + + /// from: public boolean onSearchRequested() + bool onSearchRequested1() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_onSearchRequested1, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getSearchEvent = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getSearchEvent", r"()Landroid/view/SearchEvent;"); + + /// from: public final android.view.SearchEvent getSearchEvent() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getSearchEvent() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getSearchEvent, jni.JniCallType.objectType, []).object); + } + + static final _id_startSearch = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startSearch", + r"(Ljava/lang/String;ZLandroid/os/Bundle;Z)V"); + + /// from: public void startSearch(java.lang.String string, boolean z, android.os.Bundle bundle, boolean z1) + void startSearch( + jni.JString string, + bool z, + jni.JObject bundle, + bool z1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startSearch, + jni.JniCallType.voidType, + [string.reference, z ? 1 : 0, bundle.reference, z1 ? 1 : 0]).check(); + } + + static final _id_triggerSearch = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"triggerSearch", + r"(Ljava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void triggerSearch(java.lang.String string, android.os.Bundle bundle) + void triggerSearch( + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_triggerSearch, + jni.JniCallType.voidType, [string.reference, bundle.reference]).check(); + } + + static final _id_takeKeyEvents = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"takeKeyEvents", r"(Z)V"); + + /// from: public void takeKeyEvents(boolean z) + void takeKeyEvents( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_takeKeyEvents, + jni.JniCallType.voidType, [z ? 1 : 0]).check(); + } + + static final _id_requestWindowFeature = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"requestWindowFeature", r"(I)Z"); + + /// from: public final boolean requestWindowFeature(int i) + bool requestWindowFeature( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requestWindowFeature, + jni.JniCallType.booleanType, + [jni.JValueInt(i)]).boolean; + } + + static final _id_setFeatureDrawableResource = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setFeatureDrawableResource", r"(II)V"); + + /// from: public final void setFeatureDrawableResource(int i, int i1) + void setFeatureDrawableResource( + int i, + int i1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setFeatureDrawableResource, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1)]).check(); + } + + static final _id_setFeatureDrawableUri = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setFeatureDrawableUri", r"(ILandroid/net/Uri;)V"); + + /// from: public final void setFeatureDrawableUri(int i, android.net.Uri uri) + void setFeatureDrawableUri( + int i, + jni.JObject uri, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setFeatureDrawableUri, + jni.JniCallType.voidType, + [jni.JValueInt(i), uri.reference]).check(); + } + + static final _id_setFeatureDrawable = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setFeatureDrawable", + r"(ILandroid/graphics/drawable/Drawable;)V"); + + /// from: public final void setFeatureDrawable(int i, android.graphics.drawable.Drawable drawable) + void setFeatureDrawable( + int i, + jni.JObject drawable, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setFeatureDrawable, + jni.JniCallType.voidType, + [jni.JValueInt(i), drawable.reference]).check(); + } + + static final _id_setFeatureDrawableAlpha = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setFeatureDrawableAlpha", r"(II)V"); + + /// from: public final void setFeatureDrawableAlpha(int i, int i1) + void setFeatureDrawableAlpha( + int i, + int i1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setFeatureDrawableAlpha, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1)]).check(); + } + + static final _id_getLayoutInflater = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getLayoutInflater", + r"()Landroid/view/LayoutInflater;"); + + /// from: public android.view.LayoutInflater getLayoutInflater() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getLayoutInflater() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLayoutInflater, + jni.JniCallType.objectType, []).object); + } + + static final _id_getMenuInflater = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getMenuInflater", r"()Landroid/view/MenuInflater;"); + + /// from: public android.view.MenuInflater getMenuInflater() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getMenuInflater() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getMenuInflater, jni.JniCallType.objectType, []).object); + } + + static final _id_setTheme = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"setTheme", r"(I)V"); + + /// from: public void setTheme(int i) + void setTheme( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTheme, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_onApplyThemeResource = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onApplyThemeResource", + r"(Landroid/content/res/Resources$Theme;IZ)V"); + + /// from: protected void onApplyThemeResource(android.content.res.Resources$Theme theme, int i, boolean z) + void onApplyThemeResource( + jni.JObject theme, + int i, + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onApplyThemeResource, + jni.JniCallType.voidType, + [theme.reference, jni.JValueInt(i), z ? 1 : 0]).check(); + } + + static final _id_requestPermissions = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"requestPermissions", r"([Ljava/lang/String;I)V"); + + /// from: public final void requestPermissions(java.lang.String[] strings, int i) + void requestPermissions( + jni.JArray strings, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requestPermissions, + jni.JniCallType.voidType, + [strings.reference, jni.JValueInt(i)]).check(); + } + + static final _id_onRequestPermissionsResult = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onRequestPermissionsResult", + r"(I[Ljava/lang/String;[I)V"); + + /// from: public void onRequestPermissionsResult(int i, java.lang.String[] strings, int[] is) + void onRequestPermissionsResult( + int i, + jni.JArray strings, + jni.JArray is0, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onRequestPermissionsResult, + jni.JniCallType.voidType, + [jni.JValueInt(i), strings.reference, is0.reference]).check(); + } + + static final _id_shouldShowRequestPermissionRationale = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"shouldShowRequestPermissionRationale", + r"(Ljava/lang/String;)Z"); + + /// from: public boolean shouldShowRequestPermissionRationale(java.lang.String string) + bool shouldShowRequestPermissionRationale( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_shouldShowRequestPermissionRationale, + jni.JniCallType.booleanType, + [string.reference]).boolean; + } + + static final _id_startActivityForResult = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityForResult", + r"(Landroid/content/Intent;I)V"); + + /// from: public void startActivityForResult(android.content.Intent intent, int i) + void startActivityForResult( + jni.JObject intent, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityForResult, + jni.JniCallType.voidType, + [intent.reference, jni.JValueInt(i)]).check(); + } + + static final _id_startActivityForResult1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityForResult", + r"(Landroid/content/Intent;ILandroid/os/Bundle;)V"); + + /// from: public void startActivityForResult(android.content.Intent intent, int i, android.os.Bundle bundle) + void startActivityForResult1( + jni.JObject intent, + int i, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityForResult1, + jni.JniCallType.voidType, + [intent.reference, jni.JValueInt(i), bundle.reference]).check(); + } + + static final _id_isActivityTransitionRunning = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isActivityTransitionRunning", r"()Z"); + + /// from: public boolean isActivityTransitionRunning() + bool isActivityTransitionRunning() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_isActivityTransitionRunning, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_startIntentSenderForResult = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSenderForResult", + r"(Landroid/content/IntentSender;ILandroid/content/Intent;III)V"); + + /// from: public void startIntentSenderForResult(android.content.IntentSender intentSender, int i, android.content.Intent intent, int i1, int i2, int i3) + void startIntentSenderForResult( + jni.JObject intentSender, + int i, + jni.JObject intent, + int i1, + int i2, + int i3, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSenderForResult, jni.JniCallType.voidType, [ + intentSender.reference, + jni.JValueInt(i), + intent.reference, + jni.JValueInt(i1), + jni.JValueInt(i2), + jni.JValueInt(i3) + ]).check(); + } + + static final _id_startIntentSenderForResult1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSenderForResult", + r"(Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V"); + + /// from: public void startIntentSenderForResult(android.content.IntentSender intentSender, int i, android.content.Intent intent, int i1, int i2, int i3, android.os.Bundle bundle) + void startIntentSenderForResult1( + jni.JObject intentSender, + int i, + jni.JObject intent, + int i1, + int i2, + int i3, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSenderForResult1, jni.JniCallType.voidType, [ + intentSender.reference, + jni.JValueInt(i), + intent.reference, + jni.JValueInt(i1), + jni.JValueInt(i2), + jni.JValueInt(i3), + bundle.reference + ]).check(); + } + + static final _id_startActivity = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"startActivity", r"(Landroid/content/Intent;)V"); + + /// from: public void startActivity(android.content.Intent intent) + void startActivity( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivity, + jni.JniCallType.voidType, [intent.reference]).check(); + } + + static final _id_startActivity1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivity", + r"(Landroid/content/Intent;Landroid/os/Bundle;)V"); + + /// from: public void startActivity(android.content.Intent intent, android.os.Bundle bundle) + void startActivity1( + jni.JObject intent, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivity1, + jni.JniCallType.voidType, [intent.reference, bundle.reference]).check(); + } + + static final _id_startActivities = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"startActivities", r"([Landroid/content/Intent;)V"); + + /// from: public void startActivities(android.content.Intent[] intents) + void startActivities( + jni.JArray intents, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivities, + jni.JniCallType.voidType, [intents.reference]).check(); + } + + static final _id_startActivities1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivities", + r"([Landroid/content/Intent;Landroid/os/Bundle;)V"); + + /// from: public void startActivities(android.content.Intent[] intents, android.os.Bundle bundle) + void startActivities1( + jni.JArray intents, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivities1, + jni.JniCallType.voidType, + [intents.reference, bundle.reference]).check(); + } + + static final _id_startIntentSender = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSender", + r"(Landroid/content/IntentSender;Landroid/content/Intent;III)V"); + + /// from: public void startIntentSender(android.content.IntentSender intentSender, android.content.Intent intent, int i, int i1, int i2) + void startIntentSender( + jni.JObject intentSender, + jni.JObject intent, + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSender, jni.JniCallType.voidType, [ + intentSender.reference, + intent.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2) + ]).check(); + } + + static final _id_startIntentSender1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSender", + r"(Landroid/content/IntentSender;Landroid/content/Intent;IIILandroid/os/Bundle;)V"); + + /// from: public void startIntentSender(android.content.IntentSender intentSender, android.content.Intent intent, int i, int i1, int i2, android.os.Bundle bundle) + void startIntentSender1( + jni.JObject intentSender, + jni.JObject intent, + int i, + int i1, + int i2, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSender1, jni.JniCallType.voidType, [ + intentSender.reference, + intent.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2), + bundle.reference + ]).check(); + } + + static final _id_startActivityIfNeeded = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityIfNeeded", + r"(Landroid/content/Intent;I)Z"); + + /// from: public boolean startActivityIfNeeded(android.content.Intent intent, int i) + bool startActivityIfNeeded( + jni.JObject intent, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityIfNeeded, + jni.JniCallType.booleanType, + [intent.reference, jni.JValueInt(i)]).boolean; + } + + static final _id_startActivityIfNeeded1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityIfNeeded", + r"(Landroid/content/Intent;ILandroid/os/Bundle;)Z"); + + /// from: public boolean startActivityIfNeeded(android.content.Intent intent, int i, android.os.Bundle bundle) + bool startActivityIfNeeded1( + jni.JObject intent, + int i, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityIfNeeded1, + jni.JniCallType.booleanType, + [intent.reference, jni.JValueInt(i), bundle.reference]).boolean; + } + + static final _id_startNextMatchingActivity = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startNextMatchingActivity", + r"(Landroid/content/Intent;)Z"); + + /// from: public boolean startNextMatchingActivity(android.content.Intent intent) + bool startNextMatchingActivity( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startNextMatchingActivity, + jni.JniCallType.booleanType, + [intent.reference]).boolean; + } + + static final _id_startNextMatchingActivity1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startNextMatchingActivity", + r"(Landroid/content/Intent;Landroid/os/Bundle;)Z"); + + /// from: public boolean startNextMatchingActivity(android.content.Intent intent, android.os.Bundle bundle) + bool startNextMatchingActivity1( + jni.JObject intent, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startNextMatchingActivity1, + jni.JniCallType.booleanType, + [intent.reference, bundle.reference]).boolean; + } + + static final _id_startActivityFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityFromChild", + r"(Landroid/app/Activity;Landroid/content/Intent;I)V"); + + /// from: public void startActivityFromChild(android.app.Activity activity, android.content.Intent intent, int i) + void startActivityFromChild( + Activity activity, + jni.JObject intent, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityFromChild, + jni.JniCallType.voidType, + [activity.reference, intent.reference, jni.JValueInt(i)]).check(); + } + + static final _id_startActivityFromChild1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityFromChild", + r"(Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)V"); + + /// from: public void startActivityFromChild(android.app.Activity activity, android.content.Intent intent, int i, android.os.Bundle bundle) + void startActivityFromChild1( + Activity activity, + jni.JObject intent, + int i, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startActivityFromChild1, jni.JniCallType.voidType, [ + activity.reference, + intent.reference, + jni.JValueInt(i), + bundle.reference + ]).check(); + } + + static final _id_startActivityFromFragment = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityFromFragment", + r"(Landroid/app/Fragment;Landroid/content/Intent;I)V"); + + /// from: public void startActivityFromFragment(android.app.Fragment fragment, android.content.Intent intent, int i) + void startActivityFromFragment( + jni.JObject fragment, + jni.JObject intent, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivityFromFragment, + jni.JniCallType.voidType, + [fragment.reference, intent.reference, jni.JValueInt(i)]).check(); + } + + static final _id_startActivityFromFragment1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivityFromFragment", + r"(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)V"); + + /// from: public void startActivityFromFragment(android.app.Fragment fragment, android.content.Intent intent, int i, android.os.Bundle bundle) + void startActivityFromFragment1( + jni.JObject fragment, + jni.JObject intent, + int i, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startActivityFromFragment1, jni.JniCallType.voidType, [ + fragment.reference, + intent.reference, + jni.JValueInt(i), + bundle.reference + ]).check(); + } + + static final _id_startIntentSenderFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSenderFromChild", + r"(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;III)V"); + + /// from: public void startIntentSenderFromChild(android.app.Activity activity, android.content.IntentSender intentSender, int i, android.content.Intent intent, int i1, int i2, int i3) + void startIntentSenderFromChild( + Activity activity, + jni.JObject intentSender, + int i, + jni.JObject intent, + int i1, + int i2, + int i3, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSenderFromChild, jni.JniCallType.voidType, [ + activity.reference, + intentSender.reference, + jni.JValueInt(i), + intent.reference, + jni.JValueInt(i1), + jni.JValueInt(i2), + jni.JValueInt(i3) + ]).check(); + } + + static final _id_startIntentSenderFromChild1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSenderFromChild", + r"(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V"); + + /// from: public void startIntentSenderFromChild(android.app.Activity activity, android.content.IntentSender intentSender, int i, android.content.Intent intent, int i1, int i2, int i3, android.os.Bundle bundle) + void startIntentSenderFromChild1( + Activity activity, + jni.JObject intentSender, + int i, + jni.JObject intent, + int i1, + int i2, + int i3, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSenderFromChild1, jni.JniCallType.voidType, [ + activity.reference, + intentSender.reference, + jni.JValueInt(i), + intent.reference, + jni.JValueInt(i1), + jni.JValueInt(i2), + jni.JValueInt(i3), + bundle.reference + ]).check(); + } + + static final _id_overrideActivityTransition = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"overrideActivityTransition", r"(III)V"); + + /// from: public void overrideActivityTransition(int i, int i1, int i2) + void overrideActivityTransition( + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_overrideActivityTransition, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1), jni.JValueInt(i2)]).check(); + } + + static final _id_overrideActivityTransition1 = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"overrideActivityTransition", r"(IIII)V"); + + /// from: public void overrideActivityTransition(int i, int i1, int i2, int i3) + void overrideActivityTransition1( + int i, + int i1, + int i2, + int i3, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_overrideActivityTransition1, jni.JniCallType.voidType, [ + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2), + jni.JValueInt(i3) + ]).check(); + } + + static final _id_clearOverrideActivityTransition = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"clearOverrideActivityTransition", r"(I)V"); + + /// from: public void clearOverrideActivityTransition(int i) + void clearOverrideActivityTransition( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_clearOverrideActivityTransition, + jni.JniCallType.voidType, + [jni.JValueInt(i)]).check(); + } + + static final _id_overridePendingTransition = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"overridePendingTransition", r"(II)V"); + + /// from: public void overridePendingTransition(int i, int i1) + void overridePendingTransition( + int i, + int i1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_overridePendingTransition, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1)]).check(); + } + + static final _id_overridePendingTransition1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"overridePendingTransition", r"(III)V"); + + /// from: public void overridePendingTransition(int i, int i1, int i2) + void overridePendingTransition1( + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_overridePendingTransition1, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1), jni.JValueInt(i2)]).check(); + } + + static final _id_setResult = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"setResult", r"(I)V"); + + /// from: public final void setResult(int i) + void setResult( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setResult, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_setResult1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setResult", r"(ILandroid/content/Intent;)V"); + + /// from: public final void setResult(int i, android.content.Intent intent) + void setResult1( + int i, + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setResult1, + jni.JniCallType.voidType, [jni.JValueInt(i), intent.reference]).check(); + } + + static final _id_getReferrer = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getReferrer", r"()Landroid/net/Uri;"); + + /// from: public android.net.Uri getReferrer() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getReferrer() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getReferrer, jni.JniCallType.objectType, []).object); + } + + static final _id_onProvideReferrer = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onProvideReferrer", r"()Landroid/net/Uri;"); + + /// from: public android.net.Uri onProvideReferrer() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onProvideReferrer() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onProvideReferrer, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCallingPackage = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getCallingPackage", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getCallingPackage() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getCallingPackage() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getCallingPackage, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCallingActivity = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCallingActivity", + r"()Landroid/content/ComponentName;"); + + /// from: public android.content.ComponentName getCallingActivity() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCallingActivity() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getCallingActivity, + jni.JniCallType.objectType, []).object); + } + + static final _id_getLaunchedFromUid = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getLaunchedFromUid", r"()I"); + + /// from: public int getLaunchedFromUid() + int getLaunchedFromUid() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getLaunchedFromUid, jni.JniCallType.intType, []).integer; + } + + static final _id_getLaunchedFromPackage = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getLaunchedFromPackage", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getLaunchedFromPackage() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getLaunchedFromPackage() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLaunchedFromPackage, + jni.JniCallType.objectType, []).object); + } + + static final _id_setVisible = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"setVisible", r"(Z)V"); + + /// from: public void setVisible(boolean z) + void setVisible( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setVisible, + jni.JniCallType.voidType, [z ? 1 : 0]).check(); + } + + static final _id_isFinishing = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isFinishing", r"()Z"); + + /// from: public boolean isFinishing() + bool isFinishing() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isFinishing, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isDestroyed = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isDestroyed", r"()Z"); + + /// from: public boolean isDestroyed() + bool isDestroyed() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isDestroyed, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isChangingConfigurations = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isChangingConfigurations", r"()Z"); + + /// from: public boolean isChangingConfigurations() + bool isChangingConfigurations() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isChangingConfigurations, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_recreate = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"recreate", r"()V"); + + /// from: public void recreate() + void recreate() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_recreate, jni.JniCallType.voidType, []).check(); + } + + static final _id_finish = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"finish", r"()V"); + + /// from: public void finish() + void finish() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_finish, jni.JniCallType.voidType, []).check(); + } + + static final _id_finishAffinity = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"finishAffinity", r"()V"); + + /// from: public void finishAffinity() + void finishAffinity() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_finishAffinity, jni.JniCallType.voidType, []).check(); + } + + static final _id_finishFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"finishFromChild", r"(Landroid/app/Activity;)V"); + + /// from: public void finishFromChild(android.app.Activity activity) + void finishFromChild( + Activity activity, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_finishFromChild, + jni.JniCallType.voidType, [activity.reference]).check(); + } + + static final _id_finishAfterTransition = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"finishAfterTransition", r"()V"); + + /// from: public void finishAfterTransition() + void finishAfterTransition() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_finishAfterTransition, jni.JniCallType.voidType, []).check(); + } + + static final _id_finishActivity = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"finishActivity", r"(I)V"); + + /// from: public void finishActivity(int i) + void finishActivity( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_finishActivity, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_finishActivityFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"finishActivityFromChild", + r"(Landroid/app/Activity;I)V"); + + /// from: public void finishActivityFromChild(android.app.Activity activity, int i) + void finishActivityFromChild( + Activity activity, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_finishActivityFromChild, + jni.JniCallType.voidType, + [activity.reference, jni.JValueInt(i)]).check(); + } + + static final _id_finishAndRemoveTask = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"finishAndRemoveTask", r"()V"); + + /// from: public void finishAndRemoveTask() + void finishAndRemoveTask() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_finishAndRemoveTask, jni.JniCallType.voidType, []).check(); + } + + static final _id_releaseInstance = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"releaseInstance", r"()Z"); + + /// from: public boolean releaseInstance() + bool releaseInstance() { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_releaseInstance, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_onActivityResult = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onActivityResult", r"(IILandroid/content/Intent;)V"); + + /// from: protected void onActivityResult(int i, int i1, android.content.Intent intent) + void onActivityResult( + int i, + int i1, + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onActivityResult, + jni.JniCallType.voidType, + [jni.JValueInt(i), jni.JValueInt(i1), intent.reference]).check(); + } + + static final _id_onActivityReenter = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onActivityReenter", r"(ILandroid/content/Intent;)V"); + + /// from: public void onActivityReenter(int i, android.content.Intent intent) + void onActivityReenter( + int i, + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onActivityReenter, + jni.JniCallType.voidType, + [jni.JValueInt(i), intent.reference]).check(); + } + + static final _id_createPendingResult = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createPendingResult", + r"(ILandroid/content/Intent;I)Landroid/app/PendingIntent;"); + + /// from: public android.app.PendingIntent createPendingResult(int i, android.content.Intent intent, int i1) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject createPendingResult( + int i, + jni.JObject intent, + int i1, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createPendingResult, + jni.JniCallType.objectType, + [jni.JValueInt(i), intent.reference, jni.JValueInt(i1)]).object); + } + + static final _id_setRequestedOrientation = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setRequestedOrientation", r"(I)V"); + + /// from: public void setRequestedOrientation(int i) + void setRequestedOrientation( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setRequestedOrientation, + jni.JniCallType.voidType, + [jni.JValueInt(i)]).check(); + } + + static final _id_getRequestedOrientation = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getRequestedOrientation", r"()I"); + + /// from: public int getRequestedOrientation() + int getRequestedOrientation() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_getRequestedOrientation, jni.JniCallType.intType, []).integer; + } + + static final _id_getTaskId = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"getTaskId", r"()I"); + + /// from: public int getTaskId() + int getTaskId() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getTaskId, jni.JniCallType.intType, []).integer; + } + + static final _id_isTaskRoot = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isTaskRoot", r"()Z"); + + /// from: public boolean isTaskRoot() + bool isTaskRoot() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isTaskRoot, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_moveTaskToBack = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"moveTaskToBack", r"(Z)Z"); + + /// from: public boolean moveTaskToBack(boolean z) + bool moveTaskToBack( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_moveTaskToBack, + jni.JniCallType.booleanType, [z ? 1 : 0]).boolean; + } + + static final _id_getLocalClassName = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getLocalClassName", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getLocalClassName() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getLocalClassName() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLocalClassName, + jni.JniCallType.objectType, []).object); + } + + static final _id_getComponentName = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getComponentName", + r"()Landroid/content/ComponentName;"); + + /// from: public android.content.ComponentName getComponentName() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getComponentName() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getComponentName, + jni.JniCallType.objectType, []).object); + } + + static final _id_getPreferences = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getPreferences", + r"(I)Landroid/content/SharedPreferences;"); + + /// from: public android.content.SharedPreferences getPreferences(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getPreferences( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPreferences, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_isLaunchedFromBubble = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isLaunchedFromBubble", r"()Z"); + + /// from: public boolean isLaunchedFromBubble() + bool isLaunchedFromBubble() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isLaunchedFromBubble, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getSystemService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSystemService", + r"(Ljava/lang/String;)Ljava/lang/Object;"); + + /// from: public java.lang.Object getSystemService(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getSystemService( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getSystemService, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_setTitle = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setTitle", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void setTitle(java.lang.CharSequence charSequence) + void setTitle( + jni.JObject charSequence, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTitle, + jni.JniCallType.voidType, [charSequence.reference]).check(); + } + + static final _id_setTitle1 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"setTitle", r"(I)V"); + + /// from: public void setTitle(int i) + void setTitle1( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTitle1, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_setTitleColor = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setTitleColor", r"(I)V"); + + /// from: public void setTitleColor(int i) + void setTitleColor( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTitleColor, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_getTitle = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getTitle", r"()Ljava/lang/CharSequence;"); + + /// from: public final java.lang.CharSequence getTitle() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getTitle() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getTitle, jni.JniCallType.objectType, []).object); + } + + static final _id_getTitleColor = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getTitleColor", r"()I"); + + /// from: public final int getTitleColor() + int getTitleColor() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getTitleColor, jni.JniCallType.intType, []).integer; + } + + static final _id_onTitleChanged = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onTitleChanged", r"(Ljava/lang/CharSequence;I)V"); + + /// from: protected void onTitleChanged(java.lang.CharSequence charSequence, int i) + void onTitleChanged( + jni.JObject charSequence, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onTitleChanged, + jni.JniCallType.voidType, + [charSequence.reference, jni.JValueInt(i)]).check(); + } + + static final _id_onChildTitleChanged = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onChildTitleChanged", + r"(Landroid/app/Activity;Ljava/lang/CharSequence;)V"); + + /// from: protected void onChildTitleChanged(android.app.Activity activity, java.lang.CharSequence charSequence) + void onChildTitleChanged( + Activity activity, + jni.JObject charSequence, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onChildTitleChanged, + jni.JniCallType.voidType, + [activity.reference, charSequence.reference]).check(); + } + + static final _id_setTaskDescription = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setTaskDescription", + r"(Landroid/app/ActivityManager$TaskDescription;)V"); + + /// from: public void setTaskDescription(android.app.ActivityManager$TaskDescription taskDescription) + void setTaskDescription( + jni.JObject taskDescription, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setTaskDescription, + jni.JniCallType.voidType, + [taskDescription.reference]).check(); + } + + static final _id_setProgressBarVisibility = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setProgressBarVisibility", r"(Z)V"); + + /// from: public final void setProgressBarVisibility(boolean z) + void setProgressBarVisibility( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setProgressBarVisibility, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setProgressBarIndeterminateVisibility = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"setProgressBarIndeterminateVisibility", r"(Z)V"); + + /// from: public final void setProgressBarIndeterminateVisibility(boolean z) + void setProgressBarIndeterminateVisibility( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setProgressBarIndeterminateVisibility, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setProgressBarIndeterminate = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setProgressBarIndeterminate", r"(Z)V"); + + /// from: public final void setProgressBarIndeterminate(boolean z) + void setProgressBarIndeterminate( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setProgressBarIndeterminate, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setProgress = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setProgress", r"(I)V"); + + /// from: public final void setProgress(int i) + void setProgress( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setProgress, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_setSecondaryProgress = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setSecondaryProgress", r"(I)V"); + + /// from: public final void setSecondaryProgress(int i) + void setSecondaryProgress( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setSecondaryProgress, + jni.JniCallType.voidType, + [jni.JValueInt(i)]).check(); + } + + static final _id_setVolumeControlStream = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setVolumeControlStream", r"(I)V"); + + /// from: public final void setVolumeControlStream(int i) + void setVolumeControlStream( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setVolumeControlStream, + jni.JniCallType.voidType, + [jni.JValueInt(i)]).check(); + } + + static final _id_getVolumeControlStream = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getVolumeControlStream", r"()I"); + + /// from: public final int getVolumeControlStream() + int getVolumeControlStream() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_getVolumeControlStream, jni.JniCallType.intType, []).integer; + } + + static final _id_setMediaController = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setMediaController", + r"(Landroid/media/session/MediaController;)V"); + + /// from: public final void setMediaController(android.media.session.MediaController mediaController) + void setMediaController( + jni.JObject mediaController, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setMediaController, + jni.JniCallType.voidType, + [mediaController.reference]).check(); + } + + static final _id_getMediaController = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getMediaController", + r"()Landroid/media/session/MediaController;"); + + /// from: public final android.media.session.MediaController getMediaController() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getMediaController() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getMediaController, + jni.JniCallType.objectType, []).object); + } + + static final _id_runOnUiThread = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"runOnUiThread", r"(Ljava/lang/Runnable;)V"); + + /// from: public final void runOnUiThread(java.lang.Runnable runnable) + void runOnUiThread( + Runnable runnable, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_runOnUiThread, + jni.JniCallType.voidType, [runnable.reference]).check(); + } + + static final _id_onCreateView = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onCreateView", + r"(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;"); + + /// from: public android.view.View onCreateView(java.lang.String string, android.content.Context context, android.util.AttributeSet attributeSet) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreateView( + jni.JString string, + Context context, + jni.JObject attributeSet, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onCreateView, + jni.JniCallType.objectType, + [string.reference, context.reference, attributeSet.reference]).object); + } + + static final _id_onCreateView1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onCreateView", + r"(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;"); + + /// from: public android.view.View onCreateView(android.view.View view, java.lang.String string, android.content.Context context, android.util.AttributeSet attributeSet) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onCreateView1( + jni.JObject view, + jni.JString string, + Context context, + jni.JObject attributeSet, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_onCreateView1, jni.JniCallType.objectType, [ + view.reference, + string.reference, + context.reference, + attributeSet.reference + ]).object); + } + + static final _id_dump = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"dump", + r"(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"); + + /// from: public void dump(java.lang.String string, java.io.FileDescriptor fileDescriptor, java.io.PrintWriter printWriter, java.lang.String[] strings) + void dump( + jni.JString string, + jni.JObject fileDescriptor, + jni.JObject printWriter, + jni.JArray strings, + ) { + return jni.Jni.accessors + .callMethodWithArgs(reference, _id_dump, jni.JniCallType.voidType, [ + string.reference, + fileDescriptor.reference, + printWriter.reference, + strings.reference + ]).check(); + } + + static final _id_isImmersive = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isImmersive", r"()Z"); + + /// from: public boolean isImmersive() + bool isImmersive() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isImmersive, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_setTranslucent = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setTranslucent", r"(Z)Z"); + + /// from: public boolean setTranslucent(boolean z) + bool setTranslucent( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTranslucent, + jni.JniCallType.booleanType, [z ? 1 : 0]).boolean; + } + + static final _id_requestVisibleBehind = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"requestVisibleBehind", r"(Z)Z"); + + /// from: public boolean requestVisibleBehind(boolean z) + bool requestVisibleBehind( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requestVisibleBehind, + jni.JniCallType.booleanType, + [z ? 1 : 0]).boolean; + } + + static final _id_onVisibleBehindCanceled = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onVisibleBehindCanceled", r"()V"); + + /// from: public void onVisibleBehindCanceled() + void onVisibleBehindCanceled() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_onVisibleBehindCanceled, jni.JniCallType.voidType, []).check(); + } + + static final _id_onEnterAnimationComplete = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onEnterAnimationComplete", r"()V"); + + /// from: public void onEnterAnimationComplete() + void onEnterAnimationComplete() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_onEnterAnimationComplete, jni.JniCallType.voidType, []).check(); + } + + static final _id_setImmersive = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setImmersive", r"(Z)V"); + + /// from: public void setImmersive(boolean z) + void setImmersive( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setImmersive, + jni.JniCallType.voidType, [z ? 1 : 0]).check(); + } + + static final _id_setVrModeEnabled = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setVrModeEnabled", + r"(ZLandroid/content/ComponentName;)V"); + + /// from: public void setVrModeEnabled(boolean z, android.content.ComponentName componentName) + void setVrModeEnabled( + bool z, + jni.JObject componentName, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setVrModeEnabled, + jni.JniCallType.voidType, [z ? 1 : 0, componentName.reference]).check(); + } + + static final _id_startActionMode = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActionMode", + r"(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;"); + + /// from: public android.view.ActionMode startActionMode(android.view.ActionMode$Callback callback) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject startActionMode( + jni.JObject callback, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActionMode, + jni.JniCallType.objectType, + [callback.reference]).object); + } + + static final _id_startActionMode1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActionMode", + r"(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;"); + + /// from: public android.view.ActionMode startActionMode(android.view.ActionMode$Callback callback, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject startActionMode1( + jni.JObject callback, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActionMode1, + jni.JniCallType.objectType, + [callback.reference, jni.JValueInt(i)]).object); + } + + static final _id_onWindowStartingActionMode = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onWindowStartingActionMode", + r"(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;"); + + /// from: public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback callback) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onWindowStartingActionMode( + jni.JObject callback, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onWindowStartingActionMode, + jni.JniCallType.objectType, + [callback.reference]).object); + } + + static final _id_onWindowStartingActionMode1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onWindowStartingActionMode", + r"(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;"); + + /// from: public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback callback, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject onWindowStartingActionMode1( + jni.JObject callback, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onWindowStartingActionMode1, + jni.JniCallType.objectType, + [callback.reference, jni.JValueInt(i)]).object); + } + + static final _id_onActionModeStarted = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onActionModeStarted", + r"(Landroid/view/ActionMode;)V"); + + /// from: public void onActionModeStarted(android.view.ActionMode actionMode) + void onActionModeStarted( + jni.JObject actionMode, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onActionModeStarted, + jni.JniCallType.voidType, + [actionMode.reference]).check(); + } + + static final _id_onActionModeFinished = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onActionModeFinished", + r"(Landroid/view/ActionMode;)V"); + + /// from: public void onActionModeFinished(android.view.ActionMode actionMode) + void onActionModeFinished( + jni.JObject actionMode, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_onActionModeFinished, + jni.JniCallType.voidType, + [actionMode.reference]).check(); + } + + static final _id_shouldUpRecreateTask = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"shouldUpRecreateTask", + r"(Landroid/content/Intent;)Z"); + + /// from: public boolean shouldUpRecreateTask(android.content.Intent intent) + bool shouldUpRecreateTask( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_shouldUpRecreateTask, + jni.JniCallType.booleanType, + [intent.reference]).boolean; + } + + static final _id_navigateUpTo = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"navigateUpTo", r"(Landroid/content/Intent;)Z"); + + /// from: public boolean navigateUpTo(android.content.Intent intent) + bool navigateUpTo( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_navigateUpTo, + jni.JniCallType.booleanType, [intent.reference]).boolean; + } + + static final _id_navigateUpToFromChild = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"navigateUpToFromChild", + r"(Landroid/app/Activity;Landroid/content/Intent;)Z"); + + /// from: public boolean navigateUpToFromChild(android.app.Activity activity, android.content.Intent intent) + bool navigateUpToFromChild( + Activity activity, + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_navigateUpToFromChild, + jni.JniCallType.booleanType, + [activity.reference, intent.reference]).boolean; + } + + static final _id_getParentActivityIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getParentActivityIntent", + r"()Landroid/content/Intent;"); + + /// from: public android.content.Intent getParentActivityIntent() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getParentActivityIntent() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getParentActivityIntent, + jni.JniCallType.objectType, []).object); + } + + static final _id_setEnterSharedElementCallback = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setEnterSharedElementCallback", + r"(Landroid/app/SharedElementCallback;)V"); + + /// from: public void setEnterSharedElementCallback(android.app.SharedElementCallback sharedElementCallback) + void setEnterSharedElementCallback( + jni.JObject sharedElementCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setEnterSharedElementCallback, + jni.JniCallType.voidType, + [sharedElementCallback.reference]).check(); + } + + static final _id_setExitSharedElementCallback = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setExitSharedElementCallback", + r"(Landroid/app/SharedElementCallback;)V"); + + /// from: public void setExitSharedElementCallback(android.app.SharedElementCallback sharedElementCallback) + void setExitSharedElementCallback( + jni.JObject sharedElementCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setExitSharedElementCallback, + jni.JniCallType.voidType, + [sharedElementCallback.reference]).check(); + } + + static final _id_postponeEnterTransition = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"postponeEnterTransition", r"()V"); + + /// from: public void postponeEnterTransition() + void postponeEnterTransition() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_postponeEnterTransition, jni.JniCallType.voidType, []).check(); + } + + static final _id_startPostponedEnterTransition = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"startPostponedEnterTransition", r"()V"); + + /// from: public void startPostponedEnterTransition() + void startPostponedEnterTransition() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startPostponedEnterTransition, + jni.JniCallType.voidType, []).check(); + } + + static final _id_requestDragAndDropPermissions = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"requestDragAndDropPermissions", + r"(Landroid/view/DragEvent;)Landroid/view/DragAndDropPermissions;"); + + /// from: public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent dragEvent) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject requestDragAndDropPermissions( + jni.JObject dragEvent, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_requestDragAndDropPermissions, + jni.JniCallType.objectType, + [dragEvent.reference]).object); + } + + static final _id_startLockTask = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"startLockTask", r"()V"); + + /// from: public void startLockTask() + void startLockTask() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startLockTask, jni.JniCallType.voidType, []).check(); + } + + static final _id_stopLockTask = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"stopLockTask", r"()V"); + + /// from: public void stopLockTask() + void stopLockTask() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_stopLockTask, jni.JniCallType.voidType, []).check(); + } + + static final _id_showLockTaskEscapeMessage = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"showLockTaskEscapeMessage", r"()V"); + + /// from: public void showLockTaskEscapeMessage() + void showLockTaskEscapeMessage() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_showLockTaskEscapeMessage, jni.JniCallType.voidType, []).check(); + } + + static final _id_setRecentsScreenshotEnabled = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setRecentsScreenshotEnabled", r"(Z)V"); + + /// from: public void setRecentsScreenshotEnabled(boolean z) + void setRecentsScreenshotEnabled( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setRecentsScreenshotEnabled, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setShowWhenLocked = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setShowWhenLocked", r"(Z)V"); + + /// from: public void setShowWhenLocked(boolean z) + void setShowWhenLocked( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_setShowWhenLocked, jni.JniCallType.voidType, [z ? 1 : 0]).check(); + } + + static final _id_setInheritShowWhenLocked = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setInheritShowWhenLocked", r"(Z)V"); + + /// from: public void setInheritShowWhenLocked(boolean z) + void setInheritShowWhenLocked( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setInheritShowWhenLocked, + jni.JniCallType.voidType, + [z ? 1 : 0]).check(); + } + + static final _id_setTurnScreenOn = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setTurnScreenOn", r"(Z)V"); + + /// from: public void setTurnScreenOn(boolean z) + void setTurnScreenOn( + bool z, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTurnScreenOn, + jni.JniCallType.voidType, [z ? 1 : 0]).check(); + } + + static final _id_getOnBackInvokedDispatcher = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getOnBackInvokedDispatcher", + r"()Landroid/window/OnBackInvokedDispatcher;"); + + /// from: public android.window.OnBackInvokedDispatcher getOnBackInvokedDispatcher() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getOnBackInvokedDispatcher() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getOnBackInvokedDispatcher, + jni.JniCallType.objectType, []).object); + } + + static final _id_registerScreenCaptureCallback = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerScreenCaptureCallback", + r"(Ljava/util/concurrent/Executor;Landroid/app/Activity$ScreenCaptureCallback;)V"); + + /// from: public void registerScreenCaptureCallback(java.util.concurrent.Executor executor, android.app.Activity$ScreenCaptureCallback screenCaptureCallback) + void registerScreenCaptureCallback( + jni.JObject executor, + Activity_ScreenCaptureCallback screenCaptureCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerScreenCaptureCallback, + jni.JniCallType.voidType, + [executor.reference, screenCaptureCallback.reference]).check(); + } + + static final _id_unregisterScreenCaptureCallback = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"unregisterScreenCaptureCallback", + r"(Landroid/app/Activity$ScreenCaptureCallback;)V"); + + /// from: public void unregisterScreenCaptureCallback(android.app.Activity$ScreenCaptureCallback screenCaptureCallback) + void unregisterScreenCaptureCallback( + Activity_ScreenCaptureCallback screenCaptureCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterScreenCaptureCallback, + jni.JniCallType.voidType, + [screenCaptureCallback.reference]).check(); + } +} + +final class $ActivityType extends jni.JObjType { + const $ActivityType(); + + @override + String get signature => r"Landroid/app/Activity;"; + + @override + Activity fromRef(jni.JObjectPtr ref) => Activity.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($ActivityType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($ActivityType) && other is $ActivityType; + } +} + +/// from: android.content.Context$BindServiceFlags +class Context_BindServiceFlags extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Context_BindServiceFlags.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"android/content/Context$BindServiceFlags"); + + /// The type which includes information such as the signature of this class. + static const type = $Context_BindServiceFlagsType(); + static final _id_of = jni.Jni.accessors.getStaticMethodIDOf(_class.reference, + r"of", r"(J)Landroid/content/Context$BindServiceFlags;"); + + /// from: static public android.content.Context$BindServiceFlags of(long j) + /// The returned object must be released after use, by calling the [release] method. + static Context_BindServiceFlags of( + int j, + ) { + return const $Context_BindServiceFlagsType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, _id_of, jni.JniCallType.objectType, [j]).object); + } +} + +final class $Context_BindServiceFlagsType + extends jni.JObjType { + const $Context_BindServiceFlagsType(); + + @override + String get signature => r"Landroid/content/Context$BindServiceFlags;"; + + @override + Context_BindServiceFlags fromRef(jni.JObjectPtr ref) => + Context_BindServiceFlags.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($Context_BindServiceFlagsType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($Context_BindServiceFlagsType) && + other is $Context_BindServiceFlagsType; + } +} + +/// from: android.content.Context +class Context extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Context.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"android/content/Context"); + + /// The type which includes information such as the signature of this class. + static const type = $ContextType(); + + /// from: static public final java.lang.String ACCESSIBILITY_SERVICE + static const ACCESSIBILITY_SERVICE = r"""accessibility"""; + + /// from: static public final java.lang.String ACCOUNT_SERVICE + static const ACCOUNT_SERVICE = r"""account"""; + + /// from: static public final java.lang.String ACTIVITY_SERVICE + static const ACTIVITY_SERVICE = r"""activity"""; + + /// from: static public final java.lang.String ALARM_SERVICE + static const ALARM_SERVICE = r"""alarm"""; + + /// from: static public final java.lang.String APPWIDGET_SERVICE + static const APPWIDGET_SERVICE = r"""appwidget"""; + + /// from: static public final java.lang.String APP_OPS_SERVICE + static const APP_OPS_SERVICE = r"""appops"""; + + /// from: static public final java.lang.String APP_SEARCH_SERVICE + static const APP_SEARCH_SERVICE = r"""app_search"""; + + /// from: static public final java.lang.String AUDIO_SERVICE + static const AUDIO_SERVICE = r"""audio"""; + + /// from: static public final java.lang.String BATTERY_SERVICE + static const BATTERY_SERVICE = r"""batterymanager"""; + + /// from: static public final int BIND_ABOVE_CLIENT + static const BIND_ABOVE_CLIENT = 8; + + /// from: static public final int BIND_ADJUST_WITH_ACTIVITY + static const BIND_ADJUST_WITH_ACTIVITY = 128; + + /// from: static public final int BIND_ALLOW_ACTIVITY_STARTS + static const BIND_ALLOW_ACTIVITY_STARTS = 512; + + /// from: static public final int BIND_ALLOW_OOM_MANAGEMENT + static const BIND_ALLOW_OOM_MANAGEMENT = 16; + + /// from: static public final int BIND_AUTO_CREATE + static const BIND_AUTO_CREATE = 1; + + /// from: static public final int BIND_DEBUG_UNBIND + static const BIND_DEBUG_UNBIND = 2; + + /// from: static public final int BIND_EXTERNAL_SERVICE + static const BIND_EXTERNAL_SERVICE = -2147483648; + + /// from: static public final long BIND_EXTERNAL_SERVICE_LONG + static const BIND_EXTERNAL_SERVICE_LONG = 4611686018427387904; + + /// from: static public final int BIND_IMPORTANT + static const BIND_IMPORTANT = 64; + + /// from: static public final int BIND_INCLUDE_CAPABILITIES + static const BIND_INCLUDE_CAPABILITIES = 4096; + + /// from: static public final int BIND_NOT_FOREGROUND + static const BIND_NOT_FOREGROUND = 4; + + /// from: static public final int BIND_NOT_PERCEPTIBLE + static const BIND_NOT_PERCEPTIBLE = 256; + + /// from: static public final int BIND_SHARED_ISOLATED_PROCESS + static const BIND_SHARED_ISOLATED_PROCESS = 8192; + + /// from: static public final int BIND_WAIVE_PRIORITY + static const BIND_WAIVE_PRIORITY = 32; + + /// from: static public final java.lang.String BIOMETRIC_SERVICE + static const BIOMETRIC_SERVICE = r"""biometric"""; + + /// from: static public final java.lang.String BLOB_STORE_SERVICE + static const BLOB_STORE_SERVICE = r"""blob_store"""; + + /// from: static public final java.lang.String BLUETOOTH_SERVICE + static const BLUETOOTH_SERVICE = r"""bluetooth"""; + + /// from: static public final java.lang.String BUGREPORT_SERVICE + static const BUGREPORT_SERVICE = r"""bugreport"""; + + /// from: static public final java.lang.String CAMERA_SERVICE + static const CAMERA_SERVICE = r"""camera"""; + + /// from: static public final java.lang.String CAPTIONING_SERVICE + static const CAPTIONING_SERVICE = r"""captioning"""; + + /// from: static public final java.lang.String CARRIER_CONFIG_SERVICE + static const CARRIER_CONFIG_SERVICE = r"""carrier_config"""; + + /// from: static public final java.lang.String CLIPBOARD_SERVICE + static const CLIPBOARD_SERVICE = r"""clipboard"""; + + /// from: static public final java.lang.String COMPANION_DEVICE_SERVICE + static const COMPANION_DEVICE_SERVICE = r"""companiondevice"""; + + /// from: static public final java.lang.String CONNECTIVITY_DIAGNOSTICS_SERVICE + static const CONNECTIVITY_DIAGNOSTICS_SERVICE = + r"""connectivity_diagnostics"""; + + /// from: static public final java.lang.String CONNECTIVITY_SERVICE + static const CONNECTIVITY_SERVICE = r"""connectivity"""; + + /// from: static public final java.lang.String CONSUMER_IR_SERVICE + static const CONSUMER_IR_SERVICE = r"""consumer_ir"""; + + /// from: static public final int CONTEXT_IGNORE_SECURITY + static const CONTEXT_IGNORE_SECURITY = 2; + + /// from: static public final int CONTEXT_INCLUDE_CODE + static const CONTEXT_INCLUDE_CODE = 1; + + /// from: static public final int CONTEXT_RESTRICTED + static const CONTEXT_RESTRICTED = 4; + + /// from: static public final java.lang.String CREDENTIAL_SERVICE + static const CREDENTIAL_SERVICE = r"""credential"""; + + /// from: static public final java.lang.String CROSS_PROFILE_APPS_SERVICE + static const CROSS_PROFILE_APPS_SERVICE = r"""crossprofileapps"""; + + /// from: static public final int DEVICE_ID_DEFAULT + static const DEVICE_ID_DEFAULT = 0; + + /// from: static public final int DEVICE_ID_INVALID + static const DEVICE_ID_INVALID = -1; + + /// from: static public final java.lang.String DEVICE_LOCK_SERVICE + static const DEVICE_LOCK_SERVICE = r"""device_lock"""; + + /// from: static public final java.lang.String DEVICE_POLICY_SERVICE + static const DEVICE_POLICY_SERVICE = r"""device_policy"""; + + /// from: static public final java.lang.String DISPLAY_HASH_SERVICE + static const DISPLAY_HASH_SERVICE = r"""display_hash"""; + + /// from: static public final java.lang.String DISPLAY_SERVICE + static const DISPLAY_SERVICE = r"""display"""; + + /// from: static public final java.lang.String DOMAIN_VERIFICATION_SERVICE + static const DOMAIN_VERIFICATION_SERVICE = r"""domain_verification"""; + + /// from: static public final java.lang.String DOWNLOAD_SERVICE + static const DOWNLOAD_SERVICE = r"""download"""; + + /// from: static public final java.lang.String DROPBOX_SERVICE + static const DROPBOX_SERVICE = r"""dropbox"""; + + /// from: static public final java.lang.String EUICC_SERVICE + static const EUICC_SERVICE = r"""euicc"""; + + /// from: static public final java.lang.String FILE_INTEGRITY_SERVICE + static const FILE_INTEGRITY_SERVICE = r"""file_integrity"""; + + /// from: static public final java.lang.String FINGERPRINT_SERVICE + static const FINGERPRINT_SERVICE = r"""fingerprint"""; + + /// from: static public final java.lang.String GAME_SERVICE + static const GAME_SERVICE = r"""game"""; + + /// from: static public final java.lang.String GRAMMATICAL_INFLECTION_SERVICE + static const GRAMMATICAL_INFLECTION_SERVICE = r"""grammatical_inflection"""; + + /// from: static public final java.lang.String HARDWARE_PROPERTIES_SERVICE + static const HARDWARE_PROPERTIES_SERVICE = r"""hardware_properties"""; + + /// from: static public final java.lang.String HEALTHCONNECT_SERVICE + static const HEALTHCONNECT_SERVICE = r"""healthconnect"""; + + /// from: static public final java.lang.String INPUT_METHOD_SERVICE + static const INPUT_METHOD_SERVICE = r"""input_method"""; + + /// from: static public final java.lang.String INPUT_SERVICE + static const INPUT_SERVICE = r"""input"""; + + /// from: static public final java.lang.String IPSEC_SERVICE + static const IPSEC_SERVICE = r"""ipsec"""; + + /// from: static public final java.lang.String JOB_SCHEDULER_SERVICE + static const JOB_SCHEDULER_SERVICE = r"""jobscheduler"""; + + /// from: static public final java.lang.String KEYGUARD_SERVICE + static const KEYGUARD_SERVICE = r"""keyguard"""; + + /// from: static public final java.lang.String LAUNCHER_APPS_SERVICE + static const LAUNCHER_APPS_SERVICE = r"""launcherapps"""; + + /// from: static public final java.lang.String LAYOUT_INFLATER_SERVICE + static const LAYOUT_INFLATER_SERVICE = r"""layout_inflater"""; + + /// from: static public final java.lang.String LOCALE_SERVICE + static const LOCALE_SERVICE = r"""locale"""; + + /// from: static public final java.lang.String LOCATION_SERVICE + static const LOCATION_SERVICE = r"""location"""; + + /// from: static public final java.lang.String MEDIA_COMMUNICATION_SERVICE + static const MEDIA_COMMUNICATION_SERVICE = r"""media_communication"""; + + /// from: static public final java.lang.String MEDIA_METRICS_SERVICE + static const MEDIA_METRICS_SERVICE = r"""media_metrics"""; + + /// from: static public final java.lang.String MEDIA_PROJECTION_SERVICE + static const MEDIA_PROJECTION_SERVICE = r"""media_projection"""; + + /// from: static public final java.lang.String MEDIA_ROUTER_SERVICE + static const MEDIA_ROUTER_SERVICE = r"""media_router"""; + + /// from: static public final java.lang.String MEDIA_SESSION_SERVICE + static const MEDIA_SESSION_SERVICE = r"""media_session"""; + + /// from: static public final java.lang.String MIDI_SERVICE + static const MIDI_SERVICE = r"""midi"""; + + /// from: static public final int MODE_APPEND + static const MODE_APPEND = 32768; + + /// from: static public final int MODE_ENABLE_WRITE_AHEAD_LOGGING + static const MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; + + /// from: static public final int MODE_MULTI_PROCESS + static const MODE_MULTI_PROCESS = 4; + + /// from: static public final int MODE_NO_LOCALIZED_COLLATORS + static const MODE_NO_LOCALIZED_COLLATORS = 16; + + /// from: static public final int MODE_PRIVATE + static const MODE_PRIVATE = 0; + + /// from: static public final int MODE_WORLD_READABLE + static const MODE_WORLD_READABLE = 1; + + /// from: static public final int MODE_WORLD_WRITEABLE + static const MODE_WORLD_WRITEABLE = 2; + + /// from: static public final java.lang.String NETWORK_STATS_SERVICE + static const NETWORK_STATS_SERVICE = r"""netstats"""; + + /// from: static public final java.lang.String NFC_SERVICE + static const NFC_SERVICE = r"""nfc"""; + + /// from: static public final java.lang.String NOTIFICATION_SERVICE + static const NOTIFICATION_SERVICE = r"""notification"""; + + /// from: static public final java.lang.String NSD_SERVICE + static const NSD_SERVICE = r"""servicediscovery"""; + + /// from: static public final java.lang.String OVERLAY_SERVICE + static const OVERLAY_SERVICE = r"""overlay"""; + + /// from: static public final java.lang.String PEOPLE_SERVICE + static const PEOPLE_SERVICE = r"""people"""; + + /// from: static public final java.lang.String PERFORMANCE_HINT_SERVICE + static const PERFORMANCE_HINT_SERVICE = r"""performance_hint"""; + + /// from: static public final java.lang.String POWER_SERVICE + static const POWER_SERVICE = r"""power"""; + + /// from: static public final java.lang.String PRINT_SERVICE + static const PRINT_SERVICE = r"""print"""; + + /// from: static public final int RECEIVER_EXPORTED + static const RECEIVER_EXPORTED = 2; + + /// from: static public final int RECEIVER_NOT_EXPORTED + static const RECEIVER_NOT_EXPORTED = 4; + + /// from: static public final int RECEIVER_VISIBLE_TO_INSTANT_APPS + static const RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; + + /// from: static public final java.lang.String RESTRICTIONS_SERVICE + static const RESTRICTIONS_SERVICE = r"""restrictions"""; + + /// from: static public final java.lang.String ROLE_SERVICE + static const ROLE_SERVICE = r"""role"""; + + /// from: static public final java.lang.String SEARCH_SERVICE + static const SEARCH_SERVICE = r"""search"""; + + /// from: static public final java.lang.String SENSOR_SERVICE + static const SENSOR_SERVICE = r"""sensor"""; + + /// from: static public final java.lang.String SHORTCUT_SERVICE + static const SHORTCUT_SERVICE = r"""shortcut"""; + + /// from: static public final java.lang.String STATUS_BAR_SERVICE + static const STATUS_BAR_SERVICE = r"""statusbar"""; + + /// from: static public final java.lang.String STORAGE_SERVICE + static const STORAGE_SERVICE = r"""storage"""; + + /// from: static public final java.lang.String STORAGE_STATS_SERVICE + static const STORAGE_STATS_SERVICE = r"""storagestats"""; + + /// from: static public final java.lang.String SYSTEM_HEALTH_SERVICE + static const SYSTEM_HEALTH_SERVICE = r"""systemhealth"""; + + /// from: static public final java.lang.String TELECOM_SERVICE + static const TELECOM_SERVICE = r"""telecom"""; + + /// from: static public final java.lang.String TELEPHONY_IMS_SERVICE + static const TELEPHONY_IMS_SERVICE = r"""telephony_ims"""; + + /// from: static public final java.lang.String TELEPHONY_SERVICE + static const TELEPHONY_SERVICE = r"""phone"""; + + /// from: static public final java.lang.String TELEPHONY_SUBSCRIPTION_SERVICE + static const TELEPHONY_SUBSCRIPTION_SERVICE = + r"""telephony_subscription_service"""; + + /// from: static public final java.lang.String TEXT_CLASSIFICATION_SERVICE + static const TEXT_CLASSIFICATION_SERVICE = r"""textclassification"""; + + /// from: static public final java.lang.String TEXT_SERVICES_MANAGER_SERVICE + static const TEXT_SERVICES_MANAGER_SERVICE = r"""textservices"""; + + /// from: static public final java.lang.String TV_INPUT_SERVICE + static const TV_INPUT_SERVICE = r"""tv_input"""; + + /// from: static public final java.lang.String TV_INTERACTIVE_APP_SERVICE + static const TV_INTERACTIVE_APP_SERVICE = r"""tv_interactive_app"""; + + /// from: static public final java.lang.String UI_MODE_SERVICE + static const UI_MODE_SERVICE = r"""uimode"""; + + /// from: static public final java.lang.String USAGE_STATS_SERVICE + static const USAGE_STATS_SERVICE = r"""usagestats"""; + + /// from: static public final java.lang.String USB_SERVICE + static const USB_SERVICE = r"""usb"""; + + /// from: static public final java.lang.String USER_SERVICE + static const USER_SERVICE = r"""user"""; + + /// from: static public final java.lang.String VIBRATOR_MANAGER_SERVICE + static const VIBRATOR_MANAGER_SERVICE = r"""vibrator_manager"""; + + /// from: static public final java.lang.String VIBRATOR_SERVICE + static const VIBRATOR_SERVICE = r"""vibrator"""; + + /// from: static public final java.lang.String VIRTUAL_DEVICE_SERVICE + static const VIRTUAL_DEVICE_SERVICE = r"""virtualdevice"""; + + /// from: static public final java.lang.String VPN_MANAGEMENT_SERVICE + static const VPN_MANAGEMENT_SERVICE = r"""vpn_management"""; + + /// from: static public final java.lang.String WALLPAPER_SERVICE + static const WALLPAPER_SERVICE = r"""wallpaper"""; + + /// from: static public final java.lang.String WIFI_AWARE_SERVICE + static const WIFI_AWARE_SERVICE = r"""wifiaware"""; + + /// from: static public final java.lang.String WIFI_P2P_SERVICE + static const WIFI_P2P_SERVICE = r"""wifip2p"""; + + /// from: static public final java.lang.String WIFI_RTT_RANGING_SERVICE + static const WIFI_RTT_RANGING_SERVICE = r"""wifirtt"""; + + /// from: static public final java.lang.String WIFI_SERVICE + static const WIFI_SERVICE = r"""wifi"""; + + /// from: static public final java.lang.String WINDOW_SERVICE + static const WINDOW_SERVICE = r"""window"""; + + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory Context() { + return Context.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_getAssets = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getAssets", r"()Landroid/content/res/AssetManager;"); + + /// from: public abstract android.content.res.AssetManager getAssets() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getAssets() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getAssets, jni.JniCallType.objectType, []).object); + } + + static final _id_getResources = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getResources", r"()Landroid/content/res/Resources;"); + + /// from: public abstract android.content.res.Resources getResources() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getResources() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getResources, jni.JniCallType.objectType, []).object); + } + + static final _id_getPackageManager = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getPackageManager", + r"()Landroid/content/pm/PackageManager;"); + + /// from: public abstract android.content.pm.PackageManager getPackageManager() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getPackageManager() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPackageManager, + jni.JniCallType.objectType, []).object); + } + + static final _id_getContentResolver = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getContentResolver", + r"()Landroid/content/ContentResolver;"); + + /// from: public abstract android.content.ContentResolver getContentResolver() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getContentResolver() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getContentResolver, + jni.JniCallType.objectType, []).object); + } + + static final _id_getMainLooper = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getMainLooper", r"()Landroid/os/Looper;"); + + /// from: public abstract android.os.Looper getMainLooper() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getMainLooper() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getMainLooper, jni.JniCallType.objectType, []).object); + } + + static final _id_getMainExecutor = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getMainExecutor", + r"()Ljava/util/concurrent/Executor;"); + + /// from: public java.util.concurrent.Executor getMainExecutor() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getMainExecutor() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getMainExecutor, jni.JniCallType.objectType, []).object); + } + + static final _id_getApplicationContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getApplicationContext", + r"()Landroid/content/Context;"); + + /// from: public abstract android.content.Context getApplicationContext() + /// The returned object must be released after use, by calling the [release] method. + Context getApplicationContext() { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getApplicationContext, + jni.JniCallType.objectType, []).object); + } + + static final _id_registerComponentCallbacks = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerComponentCallbacks", + r"(Landroid/content/ComponentCallbacks;)V"); + + /// from: public void registerComponentCallbacks(android.content.ComponentCallbacks componentCallbacks) + void registerComponentCallbacks( + jni.JObject componentCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerComponentCallbacks, + jni.JniCallType.voidType, + [componentCallbacks.reference]).check(); + } + + static final _id_unregisterComponentCallbacks = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"unregisterComponentCallbacks", + r"(Landroid/content/ComponentCallbacks;)V"); + + /// from: public void unregisterComponentCallbacks(android.content.ComponentCallbacks componentCallbacks) + void unregisterComponentCallbacks( + jni.JObject componentCallbacks, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterComponentCallbacks, + jni.JniCallType.voidType, + [componentCallbacks.reference]).check(); + } + + static final _id_getText = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getText", r"(I)Ljava/lang/CharSequence;"); + + /// from: public final java.lang.CharSequence getText(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getText( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getText, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_getString = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getString", r"(I)Ljava/lang/String;"); + + /// from: public final java.lang.String getString(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JString getString( + int i, + ) { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getString, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_getString1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getString", + r"(I[Ljava/lang/Object;)Ljava/lang/String;"); + + /// from: public final java.lang.String getString(int i, java.lang.Object[] objects) + /// The returned object must be released after use, by calling the [release] method. + jni.JString getString1( + int i, + jni.JArray objects, + ) { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getString1, + jni.JniCallType.objectType, + [jni.JValueInt(i), objects.reference]).object); + } + + static final _id_getColor = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"getColor", r"(I)I"); + + /// from: public final int getColor(int i) + int getColor( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_getColor, + jni.JniCallType.intType, [jni.JValueInt(i)]).integer; + } + + static final _id_getDrawable = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getDrawable", + r"(I)Landroid/graphics/drawable/Drawable;"); + + /// from: public final android.graphics.drawable.Drawable getDrawable(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDrawable( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getDrawable, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_getColorStateList = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getColorStateList", + r"(I)Landroid/content/res/ColorStateList;"); + + /// from: public final android.content.res.ColorStateList getColorStateList(int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getColorStateList( + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getColorStateList, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_setTheme = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"setTheme", r"(I)V"); + + /// from: public abstract void setTheme(int i) + void setTheme( + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setTheme, + jni.JniCallType.voidType, [jni.JValueInt(i)]).check(); + } + + static final _id_getTheme = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"getTheme", r"()Landroid/content/res/Resources$Theme;"); + + /// from: public abstract android.content.res.Resources$Theme getTheme() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getTheme() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getTheme, jni.JniCallType.objectType, []).object); + } + + static final _id_obtainStyledAttributes = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"obtainStyledAttributes", + r"([I)Landroid/content/res/TypedArray;"); + + /// from: public final android.content.res.TypedArray obtainStyledAttributes(int[] is) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject obtainStyledAttributes( + jni.JArray is0, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_obtainStyledAttributes, + jni.JniCallType.objectType, + [is0.reference]).object); + } + + static final _id_obtainStyledAttributes1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"obtainStyledAttributes", + r"(I[I)Landroid/content/res/TypedArray;"); + + /// from: public final android.content.res.TypedArray obtainStyledAttributes(int i, int[] is) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject obtainStyledAttributes1( + int i, + jni.JArray is0, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_obtainStyledAttributes1, + jni.JniCallType.objectType, + [jni.JValueInt(i), is0.reference]).object); + } + + static final _id_obtainStyledAttributes2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"obtainStyledAttributes", + r"(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;"); + + /// from: public final android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet attributeSet, int[] is) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject obtainStyledAttributes2( + jni.JObject attributeSet, + jni.JArray is0, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_obtainStyledAttributes2, + jni.JniCallType.objectType, + [attributeSet.reference, is0.reference]).object); + } + + static final _id_obtainStyledAttributes3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"obtainStyledAttributes", + r"(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;"); + + /// from: public final android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet attributeSet, int[] is, int i, int i1) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject obtainStyledAttributes3( + jni.JObject attributeSet, + jni.JArray is0, + int i, + int i1, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_obtainStyledAttributes3, jni.JniCallType.objectType, [ + attributeSet.reference, + is0.reference, + jni.JValueInt(i), + jni.JValueInt(i1) + ]).object); + } + + static final _id_getClassLoader = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getClassLoader", r"()Ljava/lang/ClassLoader;"); + + /// from: public abstract java.lang.ClassLoader getClassLoader() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getClassLoader() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getClassLoader, jni.JniCallType.objectType, []).object); + } + + static final _id_getPackageName = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getPackageName", r"()Ljava/lang/String;"); + + /// from: public abstract java.lang.String getPackageName() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getPackageName() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getPackageName, jni.JniCallType.objectType, []).object); + } + + static final _id_getOpPackageName = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getOpPackageName", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getOpPackageName() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getOpPackageName() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getOpPackageName, + jni.JniCallType.objectType, []).object); + } + + static final _id_getAttributionTag = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getAttributionTag", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getAttributionTag() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getAttributionTag() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getAttributionTag, + jni.JniCallType.objectType, []).object); + } + + static final _id_getAttributionSource = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getAttributionSource", + r"()Landroid/content/AttributionSource;"); + + /// from: public android.content.AttributionSource getAttributionSource() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getAttributionSource() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getAttributionSource, + jni.JniCallType.objectType, []).object); + } + + static final _id_getParams = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getParams", r"()Landroid/content/ContextParams;"); + + /// from: public android.content.ContextParams getParams() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getParams() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getParams, jni.JniCallType.objectType, []).object); + } + + static final _id_getApplicationInfo = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getApplicationInfo", + r"()Landroid/content/pm/ApplicationInfo;"); + + /// from: public abstract android.content.pm.ApplicationInfo getApplicationInfo() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getApplicationInfo() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getApplicationInfo, + jni.JniCallType.objectType, []).object); + } + + static final _id_getPackageResourcePath = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getPackageResourcePath", r"()Ljava/lang/String;"); + + /// from: public abstract java.lang.String getPackageResourcePath() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getPackageResourcePath() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPackageResourcePath, + jni.JniCallType.objectType, []).object); + } + + static final _id_getPackageCodePath = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getPackageCodePath", r"()Ljava/lang/String;"); + + /// from: public abstract java.lang.String getPackageCodePath() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getPackageCodePath() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPackageCodePath, + jni.JniCallType.objectType, []).object); + } + + static final _id_getSharedPreferences = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSharedPreferences", + r"(Ljava/lang/String;I)Landroid/content/SharedPreferences;"); + + /// from: public abstract android.content.SharedPreferences getSharedPreferences(java.lang.String string, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getSharedPreferences( + jni.JString string, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getSharedPreferences, + jni.JniCallType.objectType, + [string.reference, jni.JValueInt(i)]).object); + } + + static final _id_moveSharedPreferencesFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"moveSharedPreferencesFrom", + r"(Landroid/content/Context;Ljava/lang/String;)Z"); + + /// from: public abstract boolean moveSharedPreferencesFrom(android.content.Context context, java.lang.String string) + bool moveSharedPreferencesFrom( + Context context, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_moveSharedPreferencesFrom, + jni.JniCallType.booleanType, + [context.reference, string.reference]).boolean; + } + + static final _id_deleteSharedPreferences = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"deleteSharedPreferences", r"(Ljava/lang/String;)Z"); + + /// from: public abstract boolean deleteSharedPreferences(java.lang.String string) + bool deleteSharedPreferences( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_deleteSharedPreferences, + jni.JniCallType.booleanType, + [string.reference]).boolean; + } + + static final _id_openFileInput = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"openFileInput", + r"(Ljava/lang/String;)Ljava/io/FileInputStream;"); + + /// from: public abstract java.io.FileInputStream openFileInput(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject openFileInput( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_openFileInput, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_openFileOutput = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"openFileOutput", + r"(Ljava/lang/String;I)Ljava/io/FileOutputStream;"); + + /// from: public abstract java.io.FileOutputStream openFileOutput(java.lang.String string, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject openFileOutput( + jni.JString string, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_openFileOutput, + jni.JniCallType.objectType, + [string.reference, jni.JValueInt(i)]).object); + } + + static final _id_deleteFile = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"deleteFile", r"(Ljava/lang/String;)Z"); + + /// from: public abstract boolean deleteFile(java.lang.String string) + bool deleteFile( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_deleteFile, + jni.JniCallType.booleanType, [string.reference]).boolean; + } + + static final _id_getFileStreamPath = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getFileStreamPath", + r"(Ljava/lang/String;)Ljava/io/File;"); + + /// from: public abstract java.io.File getFileStreamPath(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getFileStreamPath( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getFileStreamPath, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_getDataDir = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getDataDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getDataDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDataDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getDataDir, jni.JniCallType.objectType, []).object); + } + + static final _id_getFilesDir = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getFilesDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getFilesDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getFilesDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getFilesDir, jni.JniCallType.objectType, []).object); + } + + static final _id_getNoBackupFilesDir = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getNoBackupFilesDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getNoBackupFilesDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getNoBackupFilesDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getNoBackupFilesDir, + jni.JniCallType.objectType, []).object); + } + + static final _id_getExternalFilesDir = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getExternalFilesDir", + r"(Ljava/lang/String;)Ljava/io/File;"); + + /// from: public abstract java.io.File getExternalFilesDir(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getExternalFilesDir( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getExternalFilesDir, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_getExternalFilesDirs = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getExternalFilesDirs", + r"(Ljava/lang/String;)[Ljava/io/File;"); + + /// from: public abstract java.io.File[] getExternalFilesDirs(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getExternalFilesDirs( + jni.JString string, + ) { + return const jni.JArrayType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getExternalFilesDirs, + jni.JniCallType.objectType, [string.reference]).object); + } + + static final _id_getObbDir = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getObbDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getObbDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getObbDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getObbDir, jni.JniCallType.objectType, []).object); + } + + static final _id_getObbDirs = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getObbDirs", r"()[Ljava/io/File;"); + + /// from: public abstract java.io.File[] getObbDirs() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getObbDirs() { + return const jni.JArrayType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, _id_getObbDirs, jni.JniCallType.objectType, []).object); + } + + static final _id_getCacheDir = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getCacheDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getCacheDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCacheDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCacheDir, jni.JniCallType.objectType, []).object); + } + + static final _id_getCodeCacheDir = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getCodeCacheDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getCodeCacheDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCodeCacheDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCodeCacheDir, jni.JniCallType.objectType, []).object); + } + + static final _id_getExternalCacheDir = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getExternalCacheDir", r"()Ljava/io/File;"); + + /// from: public abstract java.io.File getExternalCacheDir() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getExternalCacheDir() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getExternalCacheDir, + jni.JniCallType.objectType, []).object); + } + + static final _id_getExternalCacheDirs = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getExternalCacheDirs", r"()[Ljava/io/File;"); + + /// from: public abstract java.io.File[] getExternalCacheDirs() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getExternalCacheDirs() { + return const jni.JArrayType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getExternalCacheDirs, + jni.JniCallType.objectType, []).object); + } + + static final _id_getExternalMediaDirs = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getExternalMediaDirs", r"()[Ljava/io/File;"); + + /// from: public abstract java.io.File[] getExternalMediaDirs() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getExternalMediaDirs() { + return const jni.JArrayType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getExternalMediaDirs, + jni.JniCallType.objectType, []).object); + } + + static final _id_fileList = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"fileList", r"()[Ljava/lang/String;"); + + /// from: public abstract java.lang.String[] fileList() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray fileList() { + return const jni.JArrayType(jni.JStringType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, _id_fileList, jni.JniCallType.objectType, []).object); + } + + static final _id_getDir = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getDir", r"(Ljava/lang/String;I)Ljava/io/File;"); + + /// from: public abstract java.io.File getDir(java.lang.String string, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDir( + jni.JString string, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getDir, + jni.JniCallType.objectType, + [string.reference, jni.JValueInt(i)]).object); + } + + static final _id_openOrCreateDatabase = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"openOrCreateDatabase", + r"(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;"); + + /// from: public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String string, int i, android.database.sqlite.SQLiteDatabase$CursorFactory cursorFactory) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject openOrCreateDatabase( + jni.JString string, + int i, + jni.JObject cursorFactory, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_openOrCreateDatabase, + jni.JniCallType.objectType, + [string.reference, jni.JValueInt(i), cursorFactory.reference]).object); + } + + static final _id_openOrCreateDatabase1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"openOrCreateDatabase", + r"(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;"); + + /// from: public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String string, int i, android.database.sqlite.SQLiteDatabase$CursorFactory cursorFactory, android.database.DatabaseErrorHandler databaseErrorHandler) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject openOrCreateDatabase1( + jni.JString string, + int i, + jni.JObject cursorFactory, + jni.JObject databaseErrorHandler, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_openOrCreateDatabase1, jni.JniCallType.objectType, [ + string.reference, + jni.JValueInt(i), + cursorFactory.reference, + databaseErrorHandler.reference + ]).object); + } + + static final _id_moveDatabaseFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"moveDatabaseFrom", + r"(Landroid/content/Context;Ljava/lang/String;)Z"); + + /// from: public abstract boolean moveDatabaseFrom(android.content.Context context, java.lang.String string) + bool moveDatabaseFrom( + Context context, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_moveDatabaseFrom, + jni.JniCallType.booleanType, + [context.reference, string.reference]).boolean; + } + + static final _id_deleteDatabase = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"deleteDatabase", r"(Ljava/lang/String;)Z"); + + /// from: public abstract boolean deleteDatabase(java.lang.String string) + bool deleteDatabase( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_deleteDatabase, + jni.JniCallType.booleanType, [string.reference]).boolean; + } + + static final _id_getDatabasePath = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getDatabasePath", + r"(Ljava/lang/String;)Ljava/io/File;"); + + /// from: public abstract java.io.File getDatabasePath(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDatabasePath( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getDatabasePath, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_databaseList = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"databaseList", r"()[Ljava/lang/String;"); + + /// from: public abstract java.lang.String[] databaseList() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray databaseList() { + return const jni.JArrayType(jni.JStringType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_databaseList, + jni.JniCallType.objectType, []).object); + } + + static final _id_getWallpaper = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getWallpaper", + r"()Landroid/graphics/drawable/Drawable;"); + + /// from: public abstract android.graphics.drawable.Drawable getWallpaper() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getWallpaper() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getWallpaper, jni.JniCallType.objectType, []).object); + } + + static final _id_peekWallpaper = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"peekWallpaper", + r"()Landroid/graphics/drawable/Drawable;"); + + /// from: public abstract android.graphics.drawable.Drawable peekWallpaper() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject peekWallpaper() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_peekWallpaper, jni.JniCallType.objectType, []).object); + } + + static final _id_getWallpaperDesiredMinimumWidth = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"getWallpaperDesiredMinimumWidth", r"()I"); + + /// from: public abstract int getWallpaperDesiredMinimumWidth() + int getWallpaperDesiredMinimumWidth() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getWallpaperDesiredMinimumWidth, + jni.JniCallType.intType, []).integer; + } + + static final _id_getWallpaperDesiredMinimumHeight = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"getWallpaperDesiredMinimumHeight", r"()I"); + + /// from: public abstract int getWallpaperDesiredMinimumHeight() + int getWallpaperDesiredMinimumHeight() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getWallpaperDesiredMinimumHeight, + jni.JniCallType.intType, []).integer; + } + + static final _id_setWallpaper = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setWallpaper", r"(Landroid/graphics/Bitmap;)V"); + + /// from: public abstract void setWallpaper(android.graphics.Bitmap bitmap) + void setWallpaper( + jni.JObject bitmap, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setWallpaper, + jni.JniCallType.voidType, [bitmap.reference]).check(); + } + + static final _id_setWallpaper1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setWallpaper", r"(Ljava/io/InputStream;)V"); + + /// from: public abstract void setWallpaper(java.io.InputStream inputStream) + void setWallpaper1( + jni.JObject inputStream, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setWallpaper1, + jni.JniCallType.voidType, [inputStream.reference]).check(); + } + + static final _id_clearWallpaper = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"clearWallpaper", r"()V"); + + /// from: public abstract void clearWallpaper() + void clearWallpaper() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_clearWallpaper, jni.JniCallType.voidType, []).check(); + } + + static final _id_startActivity = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"startActivity", r"(Landroid/content/Intent;)V"); + + /// from: public abstract void startActivity(android.content.Intent intent) + void startActivity( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivity, + jni.JniCallType.voidType, [intent.reference]).check(); + } + + static final _id_startActivity1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivity", + r"(Landroid/content/Intent;Landroid/os/Bundle;)V"); + + /// from: public abstract void startActivity(android.content.Intent intent, android.os.Bundle bundle) + void startActivity1( + jni.JObject intent, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivity1, + jni.JniCallType.voidType, [intent.reference, bundle.reference]).check(); + } + + static final _id_startActivities = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"startActivities", r"([Landroid/content/Intent;)V"); + + /// from: public abstract void startActivities(android.content.Intent[] intents) + void startActivities( + jni.JArray intents, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_startActivities, + jni.JniCallType.voidType, [intents.reference]).check(); + } + + static final _id_startActivities1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startActivities", + r"([Landroid/content/Intent;Landroid/os/Bundle;)V"); + + /// from: public abstract void startActivities(android.content.Intent[] intents, android.os.Bundle bundle) + void startActivities1( + jni.JArray intents, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startActivities1, + jni.JniCallType.voidType, + [intents.reference, bundle.reference]).check(); + } + + static final _id_startIntentSender = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSender", + r"(Landroid/content/IntentSender;Landroid/content/Intent;III)V"); + + /// from: public abstract void startIntentSender(android.content.IntentSender intentSender, android.content.Intent intent, int i, int i1, int i2) + void startIntentSender( + jni.JObject intentSender, + jni.JObject intent, + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSender, jni.JniCallType.voidType, [ + intentSender.reference, + intent.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2) + ]).check(); + } + + static final _id_startIntentSender1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startIntentSender", + r"(Landroid/content/IntentSender;Landroid/content/Intent;IIILandroid/os/Bundle;)V"); + + /// from: public abstract void startIntentSender(android.content.IntentSender intentSender, android.content.Intent intent, int i, int i1, int i2, android.os.Bundle bundle) + void startIntentSender1( + jni.JObject intentSender, + jni.JObject intent, + int i, + int i1, + int i2, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_startIntentSender1, jni.JniCallType.voidType, [ + intentSender.reference, + intent.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2), + bundle.reference + ]).check(); + } + + static final _id_sendBroadcast = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"sendBroadcast", r"(Landroid/content/Intent;)V"); + + /// from: public abstract void sendBroadcast(android.content.Intent intent) + void sendBroadcast( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_sendBroadcast, + jni.JniCallType.voidType, [intent.reference]).check(); + } + + static final _id_sendBroadcast1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;)V"); + + /// from: public abstract void sendBroadcast(android.content.Intent intent, java.lang.String string) + void sendBroadcast1( + jni.JObject intent, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_sendBroadcast1, + jni.JniCallType.voidType, [intent.reference, string.reference]).check(); + } + + static final _id_sendBroadcastWithMultiplePermissions = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"sendBroadcastWithMultiplePermissions", + r"(Landroid/content/Intent;[Ljava/lang/String;)V"); + + /// from: public void sendBroadcastWithMultiplePermissions(android.content.Intent intent, java.lang.String[] strings) + void sendBroadcastWithMultiplePermissions( + jni.JObject intent, + jni.JArray strings, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendBroadcastWithMultiplePermissions, + jni.JniCallType.voidType, + [intent.reference, strings.reference]).check(); + } + + static final _id_sendBroadcast2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void sendBroadcast(android.content.Intent intent, java.lang.String string, android.os.Bundle bundle) + void sendBroadcast2( + jni.JObject intent, + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendBroadcast2, + jni.JniCallType.voidType, + [intent.reference, string.reference, bundle.reference]).check(); + } + + static final _id_sendOrderedBroadcast = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;)V"); + + /// from: public abstract void sendOrderedBroadcast(android.content.Intent intent, java.lang.String string) + void sendOrderedBroadcast( + jni.JObject intent, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendOrderedBroadcast, + jni.JniCallType.voidType, + [intent.reference, string.reference]).check(); + } + + static final _id_sendOrderedBroadcast1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void sendOrderedBroadcast(android.content.Intent intent, java.lang.String string, android.os.Bundle bundle) + void sendOrderedBroadcast1( + jni.JObject intent, + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendOrderedBroadcast1, + jni.JniCallType.voidType, + [intent.reference, string.reference, bundle.reference]).check(); + } + + static final _id_sendOrderedBroadcast2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public abstract void sendOrderedBroadcast(android.content.Intent intent, java.lang.String string, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string1, android.os.Bundle bundle) + void sendOrderedBroadcast2( + jni.JObject intent, + jni.JString string, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string1, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_sendOrderedBroadcast2, jni.JniCallType.voidType, [ + intent.reference, + string.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string1.reference, + bundle.reference + ]).check(); + } + + static final _id_sendOrderedBroadcast3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void sendOrderedBroadcast(android.content.Intent intent, java.lang.String string, android.os.Bundle bundle, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string1, android.os.Bundle bundle1) + void sendOrderedBroadcast3( + jni.JObject intent, + jni.JString string, + jni.JObject bundle, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string1, + jni.JObject bundle1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_sendOrderedBroadcast3, jni.JniCallType.voidType, [ + intent.reference, + string.reference, + bundle.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string1.reference, + bundle1.reference + ]).check(); + } + + static final _id_sendBroadcastAsUser = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;)V"); + + /// from: public abstract void sendBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle) + void sendBroadcastAsUser( + jni.JObject intent, + jni.JObject userHandle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendBroadcastAsUser, + jni.JniCallType.voidType, + [intent.reference, userHandle.reference]).check(); + } + + static final _id_sendBroadcastAsUser1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V"); + + /// from: public abstract void sendBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle, java.lang.String string) + void sendBroadcastAsUser1( + jni.JObject intent, + jni.JObject userHandle, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendBroadcastAsUser1, + jni.JniCallType.voidType, + [intent.reference, userHandle.reference, string.reference]).check(); + } + + static final _id_sendOrderedBroadcastAsUser = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public abstract void sendOrderedBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle, java.lang.String string, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string1, android.os.Bundle bundle) + void sendOrderedBroadcastAsUser( + jni.JObject intent, + jni.JObject userHandle, + jni.JString string, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string1, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_sendOrderedBroadcastAsUser, jni.JniCallType.voidType, [ + intent.reference, + userHandle.reference, + string.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string1.reference, + bundle.reference + ]).check(); + } + + static final _id_sendOrderedBroadcast4 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendOrderedBroadcast", + r"(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void sendOrderedBroadcast(android.content.Intent intent, java.lang.String string, java.lang.String string1, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string2, android.os.Bundle bundle) + void sendOrderedBroadcast4( + jni.JObject intent, + jni.JString string, + jni.JString string1, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string2, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_sendOrderedBroadcast4, jni.JniCallType.voidType, [ + intent.reference, + string.reference, + string1.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string2.reference, + bundle.reference + ]).check(); + } + + static final _id_sendStickyBroadcast = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"sendStickyBroadcast", r"(Landroid/content/Intent;)V"); + + /// from: public abstract void sendStickyBroadcast(android.content.Intent intent) + void sendStickyBroadcast( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendStickyBroadcast, + jni.JniCallType.voidType, + [intent.reference]).check(); + } + + static final _id_sendStickyBroadcast1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendStickyBroadcast", + r"(Landroid/content/Intent;Landroid/os/Bundle;)V"); + + /// from: public void sendStickyBroadcast(android.content.Intent intent, android.os.Bundle bundle) + void sendStickyBroadcast1( + jni.JObject intent, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendStickyBroadcast1, + jni.JniCallType.voidType, + [intent.reference, bundle.reference]).check(); + } + + static final _id_sendStickyOrderedBroadcast = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendStickyOrderedBroadcast", + r"(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public abstract void sendStickyOrderedBroadcast(android.content.Intent intent, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string, android.os.Bundle bundle) + void sendStickyOrderedBroadcast( + jni.JObject intent, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_sendStickyOrderedBroadcast, jni.JniCallType.voidType, [ + intent.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string.reference, + bundle.reference + ]).check(); + } + + static final _id_removeStickyBroadcast = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"removeStickyBroadcast", + r"(Landroid/content/Intent;)V"); + + /// from: public abstract void removeStickyBroadcast(android.content.Intent intent) + void removeStickyBroadcast( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_removeStickyBroadcast, + jni.JniCallType.voidType, + [intent.reference]).check(); + } + + static final _id_sendStickyBroadcastAsUser = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"sendStickyBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;)V"); + + /// from: public abstract void sendStickyBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle) + void sendStickyBroadcastAsUser( + jni.JObject intent, + jni.JObject userHandle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_sendStickyBroadcastAsUser, + jni.JniCallType.voidType, + [intent.reference, userHandle.reference]).check(); + } + + static final _id_sendStickyOrderedBroadcastAsUser = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"sendStickyOrderedBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public abstract void sendStickyOrderedBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle, android.content.BroadcastReceiver broadcastReceiver, android.os.Handler handler, int i, java.lang.String string, android.os.Bundle bundle) + void sendStickyOrderedBroadcastAsUser( + jni.JObject intent, + jni.JObject userHandle, + jni.JObject broadcastReceiver, + jni.JObject handler, + int i, + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_sendStickyOrderedBroadcastAsUser, jni.JniCallType.voidType, [ + intent.reference, + userHandle.reference, + broadcastReceiver.reference, + handler.reference, + jni.JValueInt(i), + string.reference, + bundle.reference + ]).check(); + } + + static final _id_removeStickyBroadcastAsUser = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"removeStickyBroadcastAsUser", + r"(Landroid/content/Intent;Landroid/os/UserHandle;)V"); + + /// from: public abstract void removeStickyBroadcastAsUser(android.content.Intent intent, android.os.UserHandle userHandle) + void removeStickyBroadcastAsUser( + jni.JObject intent, + jni.JObject userHandle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_removeStickyBroadcastAsUser, + jni.JniCallType.voidType, + [intent.reference, userHandle.reference]).check(); + } + + static final _id_registerReceiver = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerReceiver", + r"(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;"); + + /// from: public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver broadcastReceiver, android.content.IntentFilter intentFilter) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject registerReceiver( + jni.JObject broadcastReceiver, + jni.JObject intentFilter, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerReceiver, + jni.JniCallType.objectType, + [broadcastReceiver.reference, intentFilter.reference]).object); + } + + static final _id_registerReceiver1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerReceiver", + r"(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;"); + + /// from: public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver broadcastReceiver, android.content.IntentFilter intentFilter, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject registerReceiver1( + jni.JObject broadcastReceiver, + jni.JObject intentFilter, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_registerReceiver1, jni.JniCallType.objectType, [ + broadcastReceiver.reference, + intentFilter.reference, + jni.JValueInt(i) + ]).object); + } + + static final _id_registerReceiver2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerReceiver", + r"(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;"); + + /// from: public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver broadcastReceiver, android.content.IntentFilter intentFilter, java.lang.String string, android.os.Handler handler) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject registerReceiver2( + jni.JObject broadcastReceiver, + jni.JObject intentFilter, + jni.JString string, + jni.JObject handler, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_registerReceiver2, jni.JniCallType.objectType, [ + broadcastReceiver.reference, + intentFilter.reference, + string.reference, + handler.reference + ]).object); + } + + static final _id_registerReceiver3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"registerReceiver", + r"(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;I)Landroid/content/Intent;"); + + /// from: public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver broadcastReceiver, android.content.IntentFilter intentFilter, java.lang.String string, android.os.Handler handler, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject registerReceiver3( + jni.JObject broadcastReceiver, + jni.JObject intentFilter, + jni.JString string, + jni.JObject handler, + int i, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_registerReceiver3, jni.JniCallType.objectType, [ + broadcastReceiver.reference, + intentFilter.reference, + string.reference, + handler.reference, + jni.JValueInt(i) + ]).object); + } + + static final _id_unregisterReceiver = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"unregisterReceiver", + r"(Landroid/content/BroadcastReceiver;)V"); + + /// from: public abstract void unregisterReceiver(android.content.BroadcastReceiver broadcastReceiver) + void unregisterReceiver( + jni.JObject broadcastReceiver, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterReceiver, + jni.JniCallType.voidType, + [broadcastReceiver.reference]).check(); + } + + static final _id_startService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startService", + r"(Landroid/content/Intent;)Landroid/content/ComponentName;"); + + /// from: public abstract android.content.ComponentName startService(android.content.Intent intent) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject startService( + jni.JObject intent, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startService, + jni.JniCallType.objectType, + [intent.reference]).object); + } + + static final _id_startForegroundService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startForegroundService", + r"(Landroid/content/Intent;)Landroid/content/ComponentName;"); + + /// from: public abstract android.content.ComponentName startForegroundService(android.content.Intent intent) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject startForegroundService( + jni.JObject intent, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startForegroundService, + jni.JniCallType.objectType, + [intent.reference]).object); + } + + static final _id_stopService = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"stopService", r"(Landroid/content/Intent;)Z"); + + /// from: public abstract boolean stopService(android.content.Intent intent) + bool stopService( + jni.JObject intent, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_stopService, + jni.JniCallType.booleanType, [intent.reference]).boolean; + } + + static final _id_bindService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindService", + r"(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z"); + + /// from: public abstract boolean bindService(android.content.Intent intent, android.content.ServiceConnection serviceConnection, int i) + bool bindService( + jni.JObject intent, + jni.JObject serviceConnection, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindService, jni.JniCallType.booleanType, [ + intent.reference, + serviceConnection.reference, + jni.JValueInt(i) + ]).boolean; + } + + static final _id_bindService1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindService", + r"(Landroid/content/Intent;Landroid/content/ServiceConnection;Landroid/content/Context$BindServiceFlags;)Z"); + + /// from: public boolean bindService(android.content.Intent intent, android.content.ServiceConnection serviceConnection, android.content.Context$BindServiceFlags bindServiceFlags) + bool bindService1( + jni.JObject intent, + jni.JObject serviceConnection, + Context_BindServiceFlags bindServiceFlags, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindService1, jni.JniCallType.booleanType, [ + intent.reference, + serviceConnection.reference, + bindServiceFlags.reference + ]).boolean; + } + + static final _id_bindService2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindService", + r"(Landroid/content/Intent;ILjava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z"); + + /// from: public boolean bindService(android.content.Intent intent, int i, java.util.concurrent.Executor executor, android.content.ServiceConnection serviceConnection) + bool bindService2( + jni.JObject intent, + int i, + jni.JObject executor, + jni.JObject serviceConnection, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindService2, jni.JniCallType.booleanType, [ + intent.reference, + jni.JValueInt(i), + executor.reference, + serviceConnection.reference + ]).boolean; + } + + static final _id_bindService3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindService", + r"(Landroid/content/Intent;Landroid/content/Context$BindServiceFlags;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z"); + + /// from: public boolean bindService(android.content.Intent intent, android.content.Context$BindServiceFlags bindServiceFlags, java.util.concurrent.Executor executor, android.content.ServiceConnection serviceConnection) + bool bindService3( + jni.JObject intent, + Context_BindServiceFlags bindServiceFlags, + jni.JObject executor, + jni.JObject serviceConnection, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindService3, jni.JniCallType.booleanType, [ + intent.reference, + bindServiceFlags.reference, + executor.reference, + serviceConnection.reference + ]).boolean; + } + + static final _id_bindIsolatedService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindIsolatedService", + r"(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z"); + + /// from: public boolean bindIsolatedService(android.content.Intent intent, int i, java.lang.String string, java.util.concurrent.Executor executor, android.content.ServiceConnection serviceConnection) + bool bindIsolatedService( + jni.JObject intent, + int i, + jni.JString string, + jni.JObject executor, + jni.JObject serviceConnection, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindIsolatedService, jni.JniCallType.booleanType, [ + intent.reference, + jni.JValueInt(i), + string.reference, + executor.reference, + serviceConnection.reference + ]).boolean; + } + + static final _id_bindIsolatedService1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindIsolatedService", + r"(Landroid/content/Intent;Landroid/content/Context$BindServiceFlags;Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z"); + + /// from: public boolean bindIsolatedService(android.content.Intent intent, android.content.Context$BindServiceFlags bindServiceFlags, java.lang.String string, java.util.concurrent.Executor executor, android.content.ServiceConnection serviceConnection) + bool bindIsolatedService1( + jni.JObject intent, + Context_BindServiceFlags bindServiceFlags, + jni.JString string, + jni.JObject executor, + jni.JObject serviceConnection, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindIsolatedService1, jni.JniCallType.booleanType, [ + intent.reference, + bindServiceFlags.reference, + string.reference, + executor.reference, + serviceConnection.reference + ]).boolean; + } + + static final _id_bindServiceAsUser = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindServiceAsUser", + r"(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z"); + + /// from: public boolean bindServiceAsUser(android.content.Intent intent, android.content.ServiceConnection serviceConnection, int i, android.os.UserHandle userHandle) + bool bindServiceAsUser( + jni.JObject intent, + jni.JObject serviceConnection, + int i, + jni.JObject userHandle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindServiceAsUser, jni.JniCallType.booleanType, [ + intent.reference, + serviceConnection.reference, + jni.JValueInt(i), + userHandle.reference + ]).boolean; + } + + static final _id_bindServiceAsUser1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"bindServiceAsUser", + r"(Landroid/content/Intent;Landroid/content/ServiceConnection;Landroid/content/Context$BindServiceFlags;Landroid/os/UserHandle;)Z"); + + /// from: public boolean bindServiceAsUser(android.content.Intent intent, android.content.ServiceConnection serviceConnection, android.content.Context$BindServiceFlags bindServiceFlags, android.os.UserHandle userHandle) + bool bindServiceAsUser1( + jni.JObject intent, + jni.JObject serviceConnection, + Context_BindServiceFlags bindServiceFlags, + jni.JObject userHandle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_bindServiceAsUser1, jni.JniCallType.booleanType, [ + intent.reference, + serviceConnection.reference, + bindServiceFlags.reference, + userHandle.reference + ]).boolean; + } + + static final _id_updateServiceGroup = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"updateServiceGroup", + r"(Landroid/content/ServiceConnection;II)V"); + + /// from: public void updateServiceGroup(android.content.ServiceConnection serviceConnection, int i, int i1) + void updateServiceGroup( + jni.JObject serviceConnection, + int i, + int i1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_updateServiceGroup, jni.JniCallType.voidType, [ + serviceConnection.reference, + jni.JValueInt(i), + jni.JValueInt(i1) + ]).check(); + } + + static final _id_unbindService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"unbindService", + r"(Landroid/content/ServiceConnection;)V"); + + /// from: public abstract void unbindService(android.content.ServiceConnection serviceConnection) + void unbindService( + jni.JObject serviceConnection, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_unbindService, + jni.JniCallType.voidType, [serviceConnection.reference]).check(); + } + + static final _id_startInstrumentation = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"startInstrumentation", + r"(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z"); + + /// from: public abstract boolean startInstrumentation(android.content.ComponentName componentName, java.lang.String string, android.os.Bundle bundle) + bool startInstrumentation( + jni.JObject componentName, + jni.JString string, + jni.JObject bundle, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_startInstrumentation, + jni.JniCallType.booleanType, + [componentName.reference, string.reference, bundle.reference]).boolean; + } + + static final _id_getSystemService = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSystemService", + r"(Ljava/lang/String;)Ljava/lang/Object;"); + + /// from: public abstract java.lang.Object getSystemService(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getSystemService( + jni.JString string, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getSystemService, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_getSystemService1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSystemService", + r"(Ljava/lang/Class;)Ljava/lang/Object;"); + + /// from: public final T getSystemService(java.lang.Class class) + /// The returned object must be released after use, by calling the [release] method. + $T getSystemService1<$T extends jni.JObject>( + jni.JObject class0, { + required jni.JObjType<$T> T, + }) { + return T.fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getSystemService1, + jni.JniCallType.objectType, + [class0.reference]).object); + } + + static final _id_getSystemServiceName = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSystemServiceName", + r"(Ljava/lang/Class;)Ljava/lang/String;"); + + /// from: public abstract java.lang.String getSystemServiceName(java.lang.Class class) + /// The returned object must be released after use, by calling the [release] method. + jni.JString getSystemServiceName( + jni.JObject class0, + ) { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getSystemServiceName, + jni.JniCallType.objectType, + [class0.reference]).object); + } + + static final _id_checkPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkPermission", r"(Ljava/lang/String;II)I"); + + /// from: public abstract int checkPermission(java.lang.String string, int i, int i1) + int checkPermission( + jni.JString string, + int i, + int i1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkPermission, + jni.JniCallType.intType, + [string.reference, jni.JValueInt(i), jni.JValueInt(i1)]).integer; + } + + static final _id_checkCallingPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkCallingPermission", r"(Ljava/lang/String;)I"); + + /// from: public abstract int checkCallingPermission(java.lang.String string) + int checkCallingPermission( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkCallingPermission, + jni.JniCallType.intType, + [string.reference]).integer; + } + + static final _id_checkCallingOrSelfPermission = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"checkCallingOrSelfPermission", + r"(Ljava/lang/String;)I"); + + /// from: public abstract int checkCallingOrSelfPermission(java.lang.String string) + int checkCallingOrSelfPermission( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkCallingOrSelfPermission, + jni.JniCallType.intType, + [string.reference]).integer; + } + + static final _id_checkSelfPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkSelfPermission", r"(Ljava/lang/String;)I"); + + /// from: public abstract int checkSelfPermission(java.lang.String string) + int checkSelfPermission( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkSelfPermission, + jni.JniCallType.intType, + [string.reference]).integer; + } + + static final _id_enforcePermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"enforcePermission", + r"(Ljava/lang/String;IILjava/lang/String;)V"); + + /// from: public abstract void enforcePermission(java.lang.String string, int i, int i1, java.lang.String string1) + void enforcePermission( + jni.JString string, + int i, + int i1, + jni.JString string1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_enforcePermission, jni.JniCallType.voidType, [ + string.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + string1.reference + ]).check(); + } + + static final _id_enforceCallingPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"enforceCallingPermission", + r"(Ljava/lang/String;Ljava/lang/String;)V"); + + /// from: public abstract void enforceCallingPermission(java.lang.String string, java.lang.String string1) + void enforceCallingPermission( + jni.JString string, + jni.JString string1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_enforceCallingPermission, + jni.JniCallType.voidType, + [string.reference, string1.reference]).check(); + } + + static final _id_enforceCallingOrSelfPermission = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"enforceCallingOrSelfPermission", + r"(Ljava/lang/String;Ljava/lang/String;)V"); + + /// from: public abstract void enforceCallingOrSelfPermission(java.lang.String string, java.lang.String string1) + void enforceCallingOrSelfPermission( + jni.JString string, + jni.JString string1, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_enforceCallingOrSelfPermission, + jni.JniCallType.voidType, + [string.reference, string1.reference]).check(); + } + + static final _id_grantUriPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"grantUriPermission", + r"(Ljava/lang/String;Landroid/net/Uri;I)V"); + + /// from: public abstract void grantUriPermission(java.lang.String string, android.net.Uri uri, int i) + void grantUriPermission( + jni.JString string, + jni.JObject uri, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_grantUriPermission, + jni.JniCallType.voidType, + [string.reference, uri.reference, jni.JValueInt(i)]).check(); + } + + static final _id_revokeUriPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"revokeUriPermission", r"(Landroid/net/Uri;I)V"); + + /// from: public abstract void revokeUriPermission(android.net.Uri uri, int i) + void revokeUriPermission( + jni.JObject uri, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_revokeUriPermission, + jni.JniCallType.voidType, + [uri.reference, jni.JValueInt(i)]).check(); + } + + static final _id_revokeUriPermission1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"revokeUriPermission", + r"(Ljava/lang/String;Landroid/net/Uri;I)V"); + + /// from: public abstract void revokeUriPermission(java.lang.String string, android.net.Uri uri, int i) + void revokeUriPermission1( + jni.JString string, + jni.JObject uri, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_revokeUriPermission1, + jni.JniCallType.voidType, + [string.reference, uri.reference, jni.JValueInt(i)]).check(); + } + + static final _id_checkUriPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkUriPermission", r"(Landroid/net/Uri;III)I"); + + /// from: public abstract int checkUriPermission(android.net.Uri uri, int i, int i1, int i2) + int checkUriPermission( + jni.JObject uri, + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_checkUriPermission, jni.JniCallType.intType, [ + uri.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2) + ]).integer; + } + + static final _id_checkUriPermissions = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkUriPermissions", r"(Ljava/util/List;III)[I"); + + /// from: public java.lang.Object[] checkUriPermissions(java.util.List list, int i, int i1, int i2) + /// The returned object must be released after use, by calling the [release] method. + jni.JArray checkUriPermissions( + jni.JList list, + int i, + int i1, + int i2, + ) { + return const jni.JArrayType(jni.jintType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, _id_checkUriPermissions, jni.JniCallType.objectType, [ + list.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2) + ]).object); + } + + static final _id_checkCallingUriPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"checkCallingUriPermission", r"(Landroid/net/Uri;I)I"); + + /// from: public abstract int checkCallingUriPermission(android.net.Uri uri, int i) + int checkCallingUriPermission( + jni.JObject uri, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkCallingUriPermission, + jni.JniCallType.intType, + [uri.reference, jni.JValueInt(i)]).integer; + } + + static final _id_checkCallingUriPermissions = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"checkCallingUriPermissions", + r"(Ljava/util/List;I)[I"); + + /// from: public java.lang.Object[] checkCallingUriPermissions(java.util.List list, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JArray checkCallingUriPermissions( + jni.JList list, + int i, + ) { + return const jni.JArrayType(jni.jintType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_checkCallingUriPermissions, + jni.JniCallType.objectType, + [list.reference, jni.JValueInt(i)]).object); + } + + static final _id_checkCallingOrSelfUriPermission = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"checkCallingOrSelfUriPermission", + r"(Landroid/net/Uri;I)I"); + + /// from: public abstract int checkCallingOrSelfUriPermission(android.net.Uri uri, int i) + int checkCallingOrSelfUriPermission( + jni.JObject uri, + int i, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_checkCallingOrSelfUriPermission, + jni.JniCallType.intType, + [uri.reference, jni.JValueInt(i)]).integer; + } + + static final _id_checkCallingOrSelfUriPermissions = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"checkCallingOrSelfUriPermissions", + r"(Ljava/util/List;I)[I"); + + /// from: public java.lang.Object[] checkCallingOrSelfUriPermissions(java.util.List list, int i) + /// The returned object must be released after use, by calling the [release] method. + jni.JArray checkCallingOrSelfUriPermissions( + jni.JList list, + int i, + ) { + return const jni.JArrayType(jni.jintType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_checkCallingOrSelfUriPermissions, + jni.JniCallType.objectType, + [list.reference, jni.JValueInt(i)]).object); + } + + static final _id_checkUriPermission1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"checkUriPermission", + r"(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I"); + + /// from: public abstract int checkUriPermission(android.net.Uri uri, java.lang.String string, java.lang.String string1, int i, int i1, int i2) + int checkUriPermission1( + jni.JObject uri, + jni.JString string, + jni.JString string1, + int i, + int i1, + int i2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_checkUriPermission1, jni.JniCallType.intType, [ + uri.reference, + string.reference, + string1.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2) + ]).integer; + } + + static final _id_enforceUriPermission = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"enforceUriPermission", + r"(Landroid/net/Uri;IIILjava/lang/String;)V"); + + /// from: public abstract void enforceUriPermission(android.net.Uri uri, int i, int i1, int i2, java.lang.String string) + void enforceUriPermission( + jni.JObject uri, + int i, + int i1, + int i2, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_enforceUriPermission, jni.JniCallType.voidType, [ + uri.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2), + string.reference + ]).check(); + } + + static final _id_enforceCallingUriPermission = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"enforceCallingUriPermission", + r"(Landroid/net/Uri;ILjava/lang/String;)V"); + + /// from: public abstract void enforceCallingUriPermission(android.net.Uri uri, int i, java.lang.String string) + void enforceCallingUriPermission( + jni.JObject uri, + int i, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_enforceCallingUriPermission, + jni.JniCallType.voidType, + [uri.reference, jni.JValueInt(i), string.reference]).check(); + } + + static final _id_enforceCallingOrSelfUriPermission = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"enforceCallingOrSelfUriPermission", + r"(Landroid/net/Uri;ILjava/lang/String;)V"); + + /// from: public abstract void enforceCallingOrSelfUriPermission(android.net.Uri uri, int i, java.lang.String string) + void enforceCallingOrSelfUriPermission( + jni.JObject uri, + int i, + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_enforceCallingOrSelfUriPermission, + jni.JniCallType.voidType, + [uri.reference, jni.JValueInt(i), string.reference]).check(); + } + + static final _id_enforceUriPermission1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"enforceUriPermission", + r"(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V"); + + /// from: public abstract void enforceUriPermission(android.net.Uri uri, java.lang.String string, java.lang.String string1, int i, int i1, int i2, java.lang.String string2) + void enforceUriPermission1( + jni.JObject uri, + jni.JString string, + jni.JString string1, + int i, + int i1, + int i2, + jni.JString string2, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_enforceUriPermission1, jni.JniCallType.voidType, [ + uri.reference, + string.reference, + string1.reference, + jni.JValueInt(i), + jni.JValueInt(i1), + jni.JValueInt(i2), + string2.reference + ]).check(); + } + + static final _id_revokeSelfPermissionOnKill = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"revokeSelfPermissionOnKill", + r"(Ljava/lang/String;)V"); + + /// from: public void revokeSelfPermissionOnKill(java.lang.String string) + void revokeSelfPermissionOnKill( + jni.JString string, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_revokeSelfPermissionOnKill, + jni.JniCallType.voidType, + [string.reference]).check(); + } + + static final _id_revokeSelfPermissionsOnKill = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"revokeSelfPermissionsOnKill", + r"(Ljava/util/Collection;)V"); + + /// from: public void revokeSelfPermissionsOnKill(java.util.Collection collection) + void revokeSelfPermissionsOnKill( + jni.JObject collection, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_revokeSelfPermissionsOnKill, + jni.JniCallType.voidType, + [collection.reference]).check(); + } + + static final _id_createPackageContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createPackageContext", + r"(Ljava/lang/String;I)Landroid/content/Context;"); + + /// from: public abstract android.content.Context createPackageContext(java.lang.String string, int i) + /// The returned object must be released after use, by calling the [release] method. + Context createPackageContext( + jni.JString string, + int i, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createPackageContext, + jni.JniCallType.objectType, + [string.reference, jni.JValueInt(i)]).object); + } + + static final _id_createContextForSplit = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createContextForSplit", + r"(Ljava/lang/String;)Landroid/content/Context;"); + + /// from: public abstract android.content.Context createContextForSplit(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + Context createContextForSplit( + jni.JString string, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createContextForSplit, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_createConfigurationContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createConfigurationContext", + r"(Landroid/content/res/Configuration;)Landroid/content/Context;"); + + /// from: public abstract android.content.Context createConfigurationContext(android.content.res.Configuration configuration) + /// The returned object must be released after use, by calling the [release] method. + Context createConfigurationContext( + jni.JObject configuration, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createConfigurationContext, + jni.JniCallType.objectType, + [configuration.reference]).object); + } + + static final _id_createDisplayContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createDisplayContext", + r"(Landroid/view/Display;)Landroid/content/Context;"); + + /// from: public abstract android.content.Context createDisplayContext(android.view.Display display) + /// The returned object must be released after use, by calling the [release] method. + Context createDisplayContext( + jni.JObject display, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createDisplayContext, + jni.JniCallType.objectType, + [display.reference]).object); + } + + static final _id_createDeviceContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createDeviceContext", + r"(I)Landroid/content/Context;"); + + /// from: public android.content.Context createDeviceContext(int i) + /// The returned object must be released after use, by calling the [release] method. + Context createDeviceContext( + int i, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createDeviceContext, + jni.JniCallType.objectType, + [jni.JValueInt(i)]).object); + } + + static final _id_createWindowContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createWindowContext", + r"(ILandroid/os/Bundle;)Landroid/content/Context;"); + + /// from: public android.content.Context createWindowContext(int i, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + Context createWindowContext( + int i, + jni.JObject bundle, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createWindowContext, + jni.JniCallType.objectType, + [jni.JValueInt(i), bundle.reference]).object); + } + + static final _id_createWindowContext1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createWindowContext", + r"(Landroid/view/Display;ILandroid/os/Bundle;)Landroid/content/Context;"); + + /// from: public android.content.Context createWindowContext(android.view.Display display, int i, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + Context createWindowContext1( + jni.JObject display, + int i, + jni.JObject bundle, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createWindowContext1, + jni.JniCallType.objectType, + [display.reference, jni.JValueInt(i), bundle.reference]).object); + } + + static final _id_createContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createContext", + r"(Landroid/content/ContextParams;)Landroid/content/Context;"); + + /// from: public android.content.Context createContext(android.content.ContextParams contextParams) + /// The returned object must be released after use, by calling the [release] method. + Context createContext( + jni.JObject contextParams, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createContext, + jni.JniCallType.objectType, + [contextParams.reference]).object); + } + + static final _id_createAttributionContext = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createAttributionContext", + r"(Ljava/lang/String;)Landroid/content/Context;"); + + /// from: public android.content.Context createAttributionContext(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + Context createAttributionContext( + jni.JString string, + ) { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createAttributionContext, + jni.JniCallType.objectType, + [string.reference]).object); + } + + static final _id_createDeviceProtectedStorageContext = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"createDeviceProtectedStorageContext", + r"()Landroid/content/Context;"); + + /// from: public abstract android.content.Context createDeviceProtectedStorageContext() + /// The returned object must be released after use, by calling the [release] method. + Context createDeviceProtectedStorageContext() { + return const $ContextType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createDeviceProtectedStorageContext, + jni.JniCallType.objectType, []).object); + } + + static final _id_getDisplay = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getDisplay", r"()Landroid/view/Display;"); + + /// from: public android.view.Display getDisplay() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDisplay() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getDisplay, jni.JniCallType.objectType, []).object); + } + + static final _id_getDeviceId = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"getDeviceId", r"()I"); + + /// from: public int getDeviceId() + int getDeviceId() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getDeviceId, jni.JniCallType.intType, []).integer; + } + + static final _id_registerDeviceIdChangeListener = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"registerDeviceIdChangeListener", + r"(Ljava/util/concurrent/Executor;Ljava/util/function/IntConsumer;)V"); + + /// from: public void registerDeviceIdChangeListener(java.util.concurrent.Executor executor, java.util.function.IntConsumer intConsumer) + void registerDeviceIdChangeListener( + jni.JObject executor, + jni.JObject intConsumer, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_registerDeviceIdChangeListener, + jni.JniCallType.voidType, + [executor.reference, intConsumer.reference]).check(); + } + + static final _id_unregisterDeviceIdChangeListener = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"unregisterDeviceIdChangeListener", + r"(Ljava/util/function/IntConsumer;)V"); + + /// from: public void unregisterDeviceIdChangeListener(java.util.function.IntConsumer intConsumer) + void unregisterDeviceIdChangeListener( + jni.JObject intConsumer, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_unregisterDeviceIdChangeListener, + jni.JniCallType.voidType, + [intConsumer.reference]).check(); + } + + static final _id_isRestricted = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isRestricted", r"()Z"); + + /// from: public boolean isRestricted() + bool isRestricted() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isRestricted, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isDeviceProtectedStorage = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isDeviceProtectedStorage", r"()Z"); + + /// from: public abstract boolean isDeviceProtectedStorage() + bool isDeviceProtectedStorage() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isDeviceProtectedStorage, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isUiContext = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isUiContext", r"()Z"); + + /// from: public boolean isUiContext() + bool isUiContext() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isUiContext, jni.JniCallType.booleanType, []).boolean; + } +} + +final class $ContextType extends jni.JObjType { + const $ContextType(); + + @override + String get signature => r"Landroid/content/Context;"; + + @override + Context fromRef(jni.JObjectPtr ref) => Context.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($ContextType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($ContextType) && other is $ContextType; + } +} + +/// from: android.os.CancellationSignal$OnCancelListener +class CancellationSignal_OnCancelListener extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CancellationSignal_OnCancelListener.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"android/os/CancellationSignal$OnCancelListener"); + + /// The type which includes information such as the signature of this class. + static const type = $CancellationSignal_OnCancelListenerType(); + static final _id_onCancel = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"onCancel", r"()V"); + + /// from: public abstract void onCancel() + void onCancel() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_onCancel, jni.JniCallType.voidType, []).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"onCancel()V") { + _$impls[$p]!.onCancel(); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory CancellationSignal_OnCancelListener.implement( + $CancellationSignal_OnCancelListenerImpl $impl, + ) { + final $p = ReceivePort(); + final $x = CancellationSignal_OnCancelListener.fromRef( + ProtectedJniExtensions.newPortProxy( + r"android.os.CancellationSignal$OnCancelListener", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $CancellationSignal_OnCancelListenerImpl { + factory $CancellationSignal_OnCancelListenerImpl({ + required void Function() onCancel, + }) = _$CancellationSignal_OnCancelListenerImpl; + + void onCancel(); +} + +class _$CancellationSignal_OnCancelListenerImpl + implements $CancellationSignal_OnCancelListenerImpl { + _$CancellationSignal_OnCancelListenerImpl({ + required void Function() onCancel, + }) : _onCancel = onCancel; + + final void Function() _onCancel; + + void onCancel() { + return _onCancel(); + } +} + +final class $CancellationSignal_OnCancelListenerType + extends jni.JObjType { + const $CancellationSignal_OnCancelListenerType(); + + @override + String get signature => r"Landroid/os/CancellationSignal$OnCancelListener;"; + + @override + CancellationSignal_OnCancelListener fromRef(jni.JObjectPtr ref) => + CancellationSignal_OnCancelListener.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CancellationSignal_OnCancelListenerType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CancellationSignal_OnCancelListenerType) && + other is $CancellationSignal_OnCancelListenerType; + } +} + +/// from: android.os.CancellationSignal +class CancellationSignal extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CancellationSignal.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"android/os/CancellationSignal"); + + /// The type which includes information such as the signature of this class. + static const type = $CancellationSignalType(); + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory CancellationSignal() { + return CancellationSignal.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_isCanceled = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isCanceled", r"()Z"); + + /// from: public boolean isCanceled() + bool isCanceled() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isCanceled, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_throwIfCanceled = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"throwIfCanceled", r"()V"); + + /// from: public void throwIfCanceled() + void throwIfCanceled() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_throwIfCanceled, jni.JniCallType.voidType, []).check(); + } + + static final _id_cancel = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"cancel", r"()V"); + + /// from: public void cancel() + void cancel() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_cancel, jni.JniCallType.voidType, []).check(); + } + + static final _id_setOnCancelListener = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setOnCancelListener", + r"(Landroid/os/CancellationSignal$OnCancelListener;)V"); + + /// from: public void setOnCancelListener(android.os.CancellationSignal$OnCancelListener onCancelListener) + void setOnCancelListener( + CancellationSignal_OnCancelListener onCancelListener, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_setOnCancelListener, + jni.JniCallType.voidType, + [onCancelListener.reference]).check(); + } +} + +final class $CancellationSignalType extends jni.JObjType { + const $CancellationSignalType(); + + @override + String get signature => r"Landroid/os/CancellationSignal;"; + + @override + CancellationSignal fromRef(jni.JObjectPtr ref) => + CancellationSignal.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CancellationSignalType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CancellationSignalType) && + other is $CancellationSignalType; + } +} + +/// from: java.lang.Runnable +class Runnable extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Runnable.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"java/lang/Runnable"); + + /// The type which includes information such as the signature of this class. + static const type = $RunnableType(); + static final _id_run = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"run", r"()V"); + + /// from: public abstract void run() + void run() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_run, jni.JniCallType.voidType, []).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"run()V") { + _$impls[$p]!.run(); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory Runnable.implement( + $RunnableImpl $impl, + ) { + final $p = ReceivePort(); + final $x = Runnable.fromRef( + ProtectedJniExtensions.newPortProxy( + r"java.lang.Runnable", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $RunnableImpl { + factory $RunnableImpl({ + required void Function() run, + }) = _$RunnableImpl; + + void run(); +} + +class _$RunnableImpl implements $RunnableImpl { + _$RunnableImpl({ + required void Function() run, + }) : _run = run; + + final void Function() _run; + + void run() { + return _run(); + } +} + +final class $RunnableType extends jni.JObjType { + const $RunnableType(); + + @override + String get signature => r"Ljava/lang/Runnable;"; + + @override + Runnable fromRef(jni.JObjectPtr ref) => Runnable.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($RunnableType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($RunnableType) && other is $RunnableType; + } +} + +/// from: java.lang.Exception +class Exception extends Throwable { + @override + late final jni.JObjType $type = type; + + Exception.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"java/lang/Exception"); + + /// The type which includes information such as the signature of this class. + static const type = $ExceptionType(); + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory Exception() { + return Exception.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory Exception.new1( + jni.JString string, + ) { + return Exception.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/Throwable;)V"); + + /// from: public void (java.lang.String string, java.lang.Throwable throwable) + /// The returned object must be released after use, by calling the [release] method. + factory Exception.new2( + jni.JString string, + Throwable throwable, + ) { + return Exception.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new2, + [string.reference, throwable.reference]).object); + } + + static final _id_new3 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/Throwable;)V"); + + /// from: public void (java.lang.Throwable throwable) + /// The returned object must be released after use, by calling the [release] method. + factory Exception.new3( + Throwable throwable, + ) { + return Exception.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new3, [throwable.reference]).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V"); + + /// from: protected void (java.lang.String string, java.lang.Throwable throwable, boolean z, boolean z1) + /// The returned object must be released after use, by calling the [release] method. + factory Exception.new4( + jni.JString string, + Throwable throwable, + bool z, + bool z1, + ) { + return Exception.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new4, + [string.reference, throwable.reference, z ? 1 : 0, z1 ? 1 : 0]).object); + } +} + +final class $ExceptionType extends jni.JObjType { + const $ExceptionType(); + + @override + String get signature => r"Ljava/lang/Exception;"; + + @override + Exception fromRef(jni.JObjectPtr ref) => Exception.fromRef(ref); + + @override + jni.JObjType get superType => const $ThrowableType(); + + @override + final superCount = 2; + + @override + int get hashCode => ($ExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($ExceptionType) && other is $ExceptionType; + } +} + +/// from: java.lang.Throwable +class Throwable extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Throwable.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"java/lang/Throwable"); + + /// The type which includes information such as the signature of this class. + static const type = $ThrowableType(); + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory Throwable() { + return Throwable.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory Throwable.new1( + jni.JString string, + ) { + return Throwable.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/Throwable;)V"); + + /// from: public void (java.lang.String string, java.lang.Throwable throwable) + /// The returned object must be released after use, by calling the [release] method. + factory Throwable.new2( + jni.JString string, + Throwable throwable, + ) { + return Throwable.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new2, + [string.reference, throwable.reference]).object); + } + + static final _id_new3 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/Throwable;)V"); + + /// from: public void (java.lang.Throwable throwable) + /// The returned object must be released after use, by calling the [release] method. + factory Throwable.new3( + Throwable throwable, + ) { + return Throwable.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new3, [throwable.reference]).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V"); + + /// from: protected void (java.lang.String string, java.lang.Throwable throwable, boolean z, boolean z1) + /// The returned object must be released after use, by calling the [release] method. + factory Throwable.new4( + jni.JString string, + Throwable throwable, + bool z, + bool z1, + ) { + return Throwable.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new4, + [string.reference, throwable.reference, z ? 1 : 0, z1 ? 1 : 0]).object); + } + + static final _id_getMessage = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getMessage", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getMessage() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getMessage() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getMessage, jni.JniCallType.objectType, []).object); + } + + static final _id_getLocalizedMessage = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getLocalizedMessage", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getLocalizedMessage() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getLocalizedMessage() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getLocalizedMessage, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCause = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getCause", r"()Ljava/lang/Throwable;"); + + /// from: public java.lang.Throwable getCause() + /// The returned object must be released after use, by calling the [release] method. + Throwable getCause() { + return const $ThrowableType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCause, jni.JniCallType.objectType, []).object); + } + + static final _id_initCause = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"initCause", r"(Ljava/lang/Throwable;)Ljava/lang/Throwable;"); + + /// from: public java.lang.Throwable initCause(java.lang.Throwable throwable) + /// The returned object must be released after use, by calling the [release] method. + Throwable initCause( + Throwable throwable, + ) { + return const $ThrowableType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_initCause, + jni.JniCallType.objectType, + [throwable.reference]).object); + } + + static final _id_toString1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"toString", r"()Ljava/lang/String;"); + + /// from: public java.lang.String toString() + /// The returned object must be released after use, by calling the [release] method. + jni.JString toString1() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_toString1, jni.JniCallType.objectType, []).object); + } + + static final _id_printStackTrace = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"printStackTrace", r"()V"); + + /// from: public void printStackTrace() + void printStackTrace() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_printStackTrace, jni.JniCallType.voidType, []).check(); + } + + static final _id_printStackTrace1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"printStackTrace", r"(Ljava/io/PrintStream;)V"); + + /// from: public void printStackTrace(java.io.PrintStream printStream) + void printStackTrace1( + jni.JObject printStream, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_printStackTrace1, + jni.JniCallType.voidType, [printStream.reference]).check(); + } + + static final _id_printStackTrace2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"printStackTrace", r"(Ljava/io/PrintWriter;)V"); + + /// from: public void printStackTrace(java.io.PrintWriter printWriter) + void printStackTrace2( + jni.JObject printWriter, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_printStackTrace2, + jni.JniCallType.voidType, [printWriter.reference]).check(); + } + + static final _id_fillInStackTrace = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"fillInStackTrace", r"()Ljava/lang/Throwable;"); + + /// from: public java.lang.Throwable fillInStackTrace() + /// The returned object must be released after use, by calling the [release] method. + Throwable fillInStackTrace() { + return const $ThrowableType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_fillInStackTrace, + jni.JniCallType.objectType, []).object); + } + + static final _id_getStackTrace = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getStackTrace", r"()[Ljava/lang/StackTraceElement;"); + + /// from: public java.lang.StackTraceElement[] getStackTrace() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getStackTrace() { + return const jni.JArrayType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getStackTrace, + jni.JniCallType.objectType, []).object); + } + + static final _id_setStackTrace = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"setStackTrace", r"([Ljava/lang/StackTraceElement;)V"); + + /// from: public void setStackTrace(java.lang.StackTraceElement[] stackTraceElements) + void setStackTrace( + jni.JArray stackTraceElements, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_setStackTrace, + jni.JniCallType.voidType, [stackTraceElements.reference]).check(); + } + + static final _id_addSuppressed = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"addSuppressed", r"(Ljava/lang/Throwable;)V"); + + /// from: public final void addSuppressed(java.lang.Throwable throwable) + void addSuppressed( + Throwable throwable, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_addSuppressed, + jni.JniCallType.voidType, [throwable.reference]).check(); + } + + static final _id_getSuppressed = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getSuppressed", r"()[Ljava/lang/Throwable;"); + + /// from: public final java.lang.Throwable[] getSuppressed() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getSuppressed() { + return const jni.JArrayType($ThrowableType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getSuppressed, + jni.JniCallType.objectType, []).object); + } +} + +final class $ThrowableType extends jni.JObjType { + const $ThrowableType(); + + @override + String get signature => r"Ljava/lang/Throwable;"; + + @override + Throwable fromRef(jni.JObjectPtr ref) => Throwable.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($ThrowableType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($ThrowableType) && other is $ThrowableType; + } +} + +/// from: androidx.credentials.CreateCredentialRequest$Companion +class CreateCredentialRequest_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CreateCredentialRequest_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreateCredentialRequest$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialRequest_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;ZLjava/lang/String;)Landroidx/credentials/CreateCredentialRequest;"); + + /// from: public final androidx.credentials.CreateCredentialRequest createFrom(java.lang.String string, android.os.Bundle bundle, android.os.Bundle bundle1, boolean z, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialRequest createFrom( + jni.JString string, + jni.JObject bundle, + jni.JObject bundle1, + bool z, + jni.JString string1, + ) { + return const $CreateCredentialRequestType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, _id_createFrom, jni.JniCallType.objectType, [ + string.reference, + bundle.reference, + bundle1.reference, + z ? 1 : 0, + string1.reference + ]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialRequest_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialRequest_CompanionType + extends jni.JObjType { + const $CreateCredentialRequest_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/CreateCredentialRequest$Companion;"; + + @override + CreateCredentialRequest_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialRequest_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CreateCredentialRequest_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialRequest_CompanionType) && + other is $CreateCredentialRequest_CompanionType; + } +} + +/// from: androidx.credentials.CreateCredentialRequest$DisplayInfo$Companion +class CreateCredentialRequest_DisplayInfo_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + CreateCredentialRequest_DisplayInfo_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreateCredentialRequest$DisplayInfo$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialRequest_DisplayInfo_CompanionType(); + static final _id_parseFromCredentialDataBundle = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"parseFromCredentialDataBundle", + r"(Landroid/os/Bundle;)Landroidx/credentials/CreateCredentialRequest$DisplayInfo;"); + + /// from: public final androidx.credentials.CreateCredentialRequest$DisplayInfo parseFromCredentialDataBundle(android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialRequest_DisplayInfo parseFromCredentialDataBundle( + jni.JObject bundle, + ) { + return const $CreateCredentialRequest_DisplayInfoType().fromRef( + jni.Jni.accessors.callMethodWithArgs( + reference, + _id_parseFromCredentialDataBundle, + jni.JniCallType.objectType, + [bundle.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialRequest_DisplayInfo_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialRequest_DisplayInfo_CompanionType + extends jni.JObjType { + const $CreateCredentialRequest_DisplayInfo_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/CreateCredentialRequest$DisplayInfo$Companion;"; + + @override + CreateCredentialRequest_DisplayInfo_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialRequest_DisplayInfo_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreateCredentialRequest_DisplayInfo_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialRequest_DisplayInfo_CompanionType) && + other is $CreateCredentialRequest_DisplayInfo_CompanionType; + } +} + +/// from: androidx.credentials.CreateCredentialRequest$DisplayInfo +class CreateCredentialRequest_DisplayInfo extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CreateCredentialRequest_DisplayInfo.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreateCredentialRequest$DisplayInfo"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialRequest_DisplayInfoType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CreateCredentialRequest$DisplayInfo$Companion;", + ); + + /// from: static public final androidx.credentials.CreateCredentialRequest$DisplayInfo$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialRequest_DisplayInfo_Companion get Companion => + const $CreateCredentialRequest_DisplayInfo_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_REQUEST_DISPLAY_INFO + static const BUNDLE_KEY_REQUEST_DISPLAY_INFO = + r"""androidx.credentials.BUNDLE_KEY_REQUEST_DISPLAY_INFO"""; + + /// from: static public final java.lang.String BUNDLE_KEY_USER_ID + static const BUNDLE_KEY_USER_ID = + r"""androidx.credentials.BUNDLE_KEY_USER_ID"""; + + /// from: static public final java.lang.String BUNDLE_KEY_USER_DISPLAY_NAME + static const BUNDLE_KEY_USER_DISPLAY_NAME = + r"""androidx.credentials.BUNDLE_KEY_USER_DISPLAY_NAME"""; + + /// from: static public final java.lang.String BUNDLE_KEY_CREDENTIAL_TYPE_ICON + static const BUNDLE_KEY_CREDENTIAL_TYPE_ICON = + r"""androidx.credentials.BUNDLE_KEY_CREDENTIAL_TYPE_ICON"""; + + /// from: static public final java.lang.String BUNDLE_KEY_DEFAULT_PROVIDER + static const BUNDLE_KEY_DEFAULT_PROVIDER = + r"""androidx.credentials.BUNDLE_KEY_DEFAULT_PROVIDER"""; + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/graphics/drawable/Icon;Ljava/lang/String;)V"); + + /// from: public void (java.lang.CharSequence charSequence, java.lang.CharSequence charSequence1, android.graphics.drawable.Icon icon, java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo( + jni.JObject charSequence, + jni.JObject charSequence1, + jni.JObject icon, + jni.JString string, + ) { + return CreateCredentialRequest_DisplayInfo.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, [ + charSequence.reference, + charSequence1.reference, + icon.reference, + string.reference + ]).object); + } + + static final _id_getUserId = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getUserId", r"()Ljava/lang/CharSequence;"); + + /// from: public final java.lang.CharSequence getUserId() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getUserId() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getUserId, jni.JniCallType.objectType, []).object); + } + + static final _id_getUserDisplayName = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getUserDisplayName", r"()Ljava/lang/CharSequence;"); + + /// from: public final java.lang.CharSequence getUserDisplayName() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getUserDisplayName() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getUserDisplayName, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCredentialTypeIcon = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredentialTypeIcon", + r"()Landroid/graphics/drawable/Icon;"); + + /// from: public final android.graphics.drawable.Icon getCredentialTypeIcon() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCredentialTypeIcon() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getCredentialTypeIcon, + jni.JniCallType.objectType, []).object); + } + + static final _id_getPreferDefaultProvider = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getPreferDefaultProvider", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getPreferDefaultProvider() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getPreferDefaultProvider() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPreferDefaultProvider, + jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence, java.lang.CharSequence charSequence1) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo.new1( + jni.JObject charSequence, + jni.JObject charSequence1, + ) { + return CreateCredentialRequest_DisplayInfo.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new1, + [charSequence.reference, charSequence1.reference]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, java.lang.CharSequence charSequence1, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo.new2( + jni.JObject charSequence, + jni.JObject charSequence1, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialRequest_DisplayInfo.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new2, [ + charSequence.reference, + charSequence1.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;)V"); + + /// from: public void (java.lang.CharSequence charSequence, java.lang.CharSequence charSequence1, java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo.new3( + jni.JObject charSequence, + jni.JObject charSequence1, + jni.JString string, + ) { + return CreateCredentialRequest_DisplayInfo.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new3, [ + charSequence.reference, + charSequence1.reference, + string.reference + ]).object); + } + + static final _id_toBundle = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"toBundle", r"()Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle toBundle() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject toBundle() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_toBundle, jni.JniCallType.objectType, []).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest_DisplayInfo.new4( + jni.JObject charSequence, + ) { + return CreateCredentialRequest_DisplayInfo.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new4, [charSequence.reference]).object); + } + + static final _id_parseFromCredentialDataBundle = jni.Jni.accessors + .getStaticMethodIDOf(_class.reference, r"parseFromCredentialDataBundle", + r"(Landroid/os/Bundle;)Landroidx/credentials/CreateCredentialRequest$DisplayInfo;"); + + /// from: static public final androidx.credentials.CreateCredentialRequest$DisplayInfo parseFromCredentialDataBundle(android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialRequest_DisplayInfo parseFromCredentialDataBundle( + jni.JObject bundle, + ) { + return const $CreateCredentialRequest_DisplayInfoType().fromRef( + jni.Jni.accessors.callStaticMethodWithArgs( + _class.reference, + _id_parseFromCredentialDataBundle, + jni.JniCallType.objectType, + [bundle.reference]).object); + } +} + +final class $CreateCredentialRequest_DisplayInfoType + extends jni.JObjType { + const $CreateCredentialRequest_DisplayInfoType(); + + @override + String get signature => + r"Landroidx/credentials/CreateCredentialRequest$DisplayInfo;"; + + @override + CreateCredentialRequest_DisplayInfo fromRef(jni.JObjectPtr ref) => + CreateCredentialRequest_DisplayInfo.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CreateCredentialRequest_DisplayInfoType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialRequest_DisplayInfoType) && + other is $CreateCredentialRequest_DisplayInfoType; + } +} + +/// from: androidx.credentials.CreateCredentialRequest +class CreateCredentialRequest extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CreateCredentialRequest.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/CreateCredentialRequest"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialRequestType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CreateCredentialRequest$Companion;", + ); + + /// from: static public final androidx.credentials.CreateCredentialRequest$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialRequest_Companion get Companion => + const $CreateCredentialRequest_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS + static const BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS = + r"""androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"""; + + /// from: static public final java.lang.String BUNDLE_KEY_IS_AUTO_SELECT_ALLOWED + static const BUNDLE_KEY_IS_AUTO_SELECT_ALLOWED = + r"""androidx.credentials.BUNDLE_KEY_IS_AUTO_SELECT_ALLOWED"""; + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;ZZLandroidx/credentials/CreateCredentialRequest$DisplayInfo;Ljava/lang/String;Z)V"); + + /// from: public void (java.lang.String string, android.os.Bundle bundle, android.os.Bundle bundle1, boolean z, boolean z1, androidx.credentials.CreateCredentialRequest$DisplayInfo displayInfo, java.lang.String string1, boolean z2) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialRequest( + jni.JString string, + jni.JObject bundle, + jni.JObject bundle1, + bool z, + bool z1, + CreateCredentialRequest_DisplayInfo displayInfo, + jni.JString string1, + bool z2, + ) { + return CreateCredentialRequest.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, [ + string.reference, + bundle.reference, + bundle1.reference, + z ? 1 : 0, + z1 ? 1 : 0, + displayInfo.reference, + string1.reference, + z2 ? 1 : 0 + ]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_getCredentialData = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getCredentialData", r"()Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle getCredentialData() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCredentialData() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getCredentialData, + jni.JniCallType.objectType, []).object); + } + + static final _id_getCandidateQueryData = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getCandidateQueryData", r"()Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle getCandidateQueryData() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getCandidateQueryData() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getCandidateQueryData, + jni.JniCallType.objectType, []).object); + } + + static final _id_isSystemProviderRequired = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isSystemProviderRequired", r"()Z"); + + /// from: public final boolean isSystemProviderRequired() + bool isSystemProviderRequired() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isSystemProviderRequired, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isAutoSelectAllowed = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isAutoSelectAllowed", r"()Z"); + + /// from: public final boolean isAutoSelectAllowed() + bool isAutoSelectAllowed() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_isAutoSelectAllowed, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getDisplayInfo = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getDisplayInfo", + r"()Landroidx/credentials/CreateCredentialRequest$DisplayInfo;"); + + /// from: public final androidx.credentials.CreateCredentialRequest$DisplayInfo getDisplayInfo() + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialRequest_DisplayInfo getDisplayInfo() { + return const $CreateCredentialRequest_DisplayInfoType().fromRef( + jni.Jni.accessors.callMethodWithArgs(reference, _id_getDisplayInfo, + jni.JniCallType.objectType, []).object); + } + + static final _id_getOrigin = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getOrigin", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getOrigin() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getOrigin() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getOrigin, jni.JniCallType.objectType, []).object); + } + + static final _id_preferImmediatelyAvailableCredentials = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"preferImmediatelyAvailableCredentials", r"()Z"); + + /// from: public final boolean preferImmediatelyAvailableCredentials() + bool preferImmediatelyAvailableCredentials() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_preferImmediatelyAvailableCredentials, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;ZLjava/lang/String;)Landroidx/credentials/CreateCredentialRequest;"); + + /// from: static public final androidx.credentials.CreateCredentialRequest createFrom(java.lang.String string, android.os.Bundle bundle, android.os.Bundle bundle1, boolean z, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialRequest createFrom( + jni.JString string, + jni.JObject bundle, + jni.JObject bundle1, + bool z, + jni.JString string1, + ) { + return const $CreateCredentialRequestType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, _id_createFrom, jni.JniCallType.objectType, [ + string.reference, + bundle.reference, + bundle1.reference, + z ? 1 : 0, + string1.reference + ]).object); + } +} + +final class $CreateCredentialRequestType + extends jni.JObjType { + const $CreateCredentialRequestType(); + + @override + String get signature => r"Landroidx/credentials/CreateCredentialRequest;"; + + @override + CreateCredentialRequest fromRef(jni.JObjectPtr ref) => + CreateCredentialRequest.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CreateCredentialRequestType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialRequestType) && + other is $CreateCredentialRequestType; + } +} + +/// from: androidx.credentials.CreateCredentialResponse$Companion +class CreateCredentialResponse_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CreateCredentialResponse_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreateCredentialResponse$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialResponse_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/CreateCredentialResponse;"); + + /// from: public final androidx.credentials.CreateCredentialResponse createFrom(java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialResponse createFrom( + jni.JString string, + jni.JObject bundle, + ) { + return const $CreateCredentialResponseType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, bundle.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialResponse_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialResponse_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialResponse_CompanionType + extends jni.JObjType { + const $CreateCredentialResponse_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/CreateCredentialResponse$Companion;"; + + @override + CreateCredentialResponse_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialResponse_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CreateCredentialResponse_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialResponse_CompanionType) && + other is $CreateCredentialResponse_CompanionType; + } +} + +/// from: androidx.credentials.CreateCredentialResponse +class CreateCredentialResponse extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CreateCredentialResponse.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/CreateCredentialResponse"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialResponseType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CreateCredentialResponse$Companion;", + ); + + /// from: static public final androidx.credentials.CreateCredentialResponse$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialResponse_Companion get Companion => + const $CreateCredentialResponse_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void (java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialResponse( + jni.JString string, + jni.JObject bundle, + ) { + return CreateCredentialResponse.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new0, + [string.reference, bundle.reference]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_getData = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getData", r"()Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle getData() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getData() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getData, jni.JniCallType.objectType, []).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/CreateCredentialResponse;"); + + /// from: static public final androidx.credentials.CreateCredentialResponse createFrom(java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialResponse createFrom( + jni.JString string, + jni.JObject bundle, + ) { + return const $CreateCredentialResponseType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, bundle.reference]).object); + } +} + +final class $CreateCredentialResponseType + extends jni.JObjType { + const $CreateCredentialResponseType(); + + @override + String get signature => r"Landroidx/credentials/CreateCredentialResponse;"; + + @override + CreateCredentialResponse fromRef(jni.JObjectPtr ref) => + CreateCredentialResponse.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CreateCredentialResponseType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialResponseType) && + other is $CreateCredentialResponseType; + } +} + +/// from: androidx.credentials.CreatePublicKeyCredentialRequest$Companion +class CreatePublicKeyCredentialRequest_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + CreatePublicKeyCredentialRequest_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreatePublicKeyCredentialRequest$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialRequest_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialRequest_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreatePublicKeyCredentialRequest_CompanionType + extends jni.JObjType { + const $CreatePublicKeyCredentialRequest_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/CreatePublicKeyCredentialRequest$Companion;"; + + @override + CreatePublicKeyCredentialRequest_Companion fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialRequest_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreatePublicKeyCredentialRequest_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreatePublicKeyCredentialRequest_CompanionType) && + other is $CreatePublicKeyCredentialRequest_CompanionType; + } +} + +/// from: androidx.credentials.CreatePublicKeyCredentialRequest +class CreatePublicKeyCredentialRequest extends CreateCredentialRequest { + @override + late final jni.JObjType $type = type; + + CreatePublicKeyCredentialRequest.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreatePublicKeyCredentialRequest"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialRequestType(); + static final _id_Companion1 = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CreatePublicKeyCredentialRequest$Companion;", + ); + + /// from: static public final androidx.credentials.CreatePublicKeyCredentialRequest$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreatePublicKeyCredentialRequest_Companion get Companion1 => + const $CreatePublicKeyCredentialRequest_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion1, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_CLIENT_DATA_HASH + static const BUNDLE_KEY_CLIENT_DATA_HASH = + r"""androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"""; + + /// from: static public final java.lang.String BUNDLE_KEY_REQUEST_JSON + static const BUNDLE_KEY_REQUEST_JSON = + r"""androidx.credentials.BUNDLE_KEY_REQUEST_JSON"""; + + /// from: static public final java.lang.String BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST + static const BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST = + r"""androidx.credentials.BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST"""; + + static final _id_getRequestJson = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getRequestJson", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getRequestJson() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getRequestJson() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getRequestJson, jni.JniCallType.objectType, []).object); + } + + static final _id_getClientDataHash = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getClientDataHash", r"()[B"); + + /// from: public final byte[] getClientDataHash() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getClientDataHash() { + return const jni.JArrayType(jni.jbyteType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getClientDataHash, + jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;[BZLjava/lang/String;Z)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z, java.lang.String string1, boolean z1) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new1( + jni.JString string, + jni.JArray bs, + bool z, + jni.JString string1, + bool z1, + ) { + return CreatePublicKeyCredentialRequest.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new1, [ + string.reference, + bs.reference, + z ? 1 : 0, + string1.reference, + z1 ? 1 : 0 + ]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;[BZLjava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z, java.lang.String string1, boolean z1, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new2( + jni.JString string, + jni.JArray bs, + bool z, + jni.JString string1, + bool z1, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialRequest.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new2, [ + string.reference, + bs.reference, + z ? 1 : 0, + string1.reference, + z1 ? 1 : 0, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;[BZLjava/lang/String;Ljava/lang/String;Z)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z, java.lang.String string1, java.lang.String string2, boolean z1) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new3( + jni.JString string, + jni.JArray bs, + bool z, + jni.JString string1, + jni.JString string2, + bool z1, + ) { + return CreatePublicKeyCredentialRequest.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new3, [ + string.reference, + bs.reference, + z ? 1 : 0, + string1.reference, + string2.reference, + z1 ? 1 : 0 + ]).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;[BZLjava/lang/String;)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new4( + jni.JString string, + jni.JArray bs, + bool z, + jni.JString string1, + ) { + return CreatePublicKeyCredentialRequest.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new4, [ + string.reference, + bs.reference, + z ? 1 : 0, + string1.reference + ]).object); + } + + static final _id_new5 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;[BZ)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new5( + jni.JString string, + jni.JArray bs, + bool z, + ) { + return CreatePublicKeyCredentialRequest.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new5, + [string.reference, bs.reference, z ? 1 : 0]).object); + } + + static final _id_new6 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;[B)V"); + + /// from: public void (java.lang.String string, byte[] bs) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new6( + jni.JString string, + jni.JArray bs, + ) { + return CreatePublicKeyCredentialRequest.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new6, + [string.reference, bs.reference]).object); + } + + static final _id_new7 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new7( + jni.JString string, + ) { + return CreatePublicKeyCredentialRequest.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new7, [string.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;[BZZLandroidx/credentials/CreateCredentialRequest$DisplayInfo;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, byte[] bs, boolean z, boolean z1, androidx.credentials.CreateCredentialRequest$DisplayInfo displayInfo, java.lang.String string1, android.os.Bundle bundle, android.os.Bundle bundle1, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialRequest.new8( + jni.JString string, + jni.JArray bs, + bool z, + bool z1, + CreateCredentialRequest_DisplayInfo displayInfo, + jni.JString string1, + jni.JObject bundle, + jni.JObject bundle1, + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialRequest.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new8, [ + string.reference, + bs.reference, + z ? 1 : 0, + z1 ? 1 : 0, + displayInfo.reference, + string1.reference, + bundle.reference, + bundle1.reference, + defaultConstructorMarker.reference + ]).object); + } +} + +final class $CreatePublicKeyCredentialRequestType + extends jni.JObjType { + const $CreatePublicKeyCredentialRequestType(); + + @override + String get signature => + r"Landroidx/credentials/CreatePublicKeyCredentialRequest;"; + + @override + CreatePublicKeyCredentialRequest fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialRequest.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialRequestType(); + + @override + final superCount = 2; + + @override + int get hashCode => ($CreatePublicKeyCredentialRequestType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreatePublicKeyCredentialRequestType) && + other is $CreatePublicKeyCredentialRequestType; + } +} + +/// from: androidx.credentials.CreatePublicKeyCredentialResponse$Companion +class CreatePublicKeyCredentialResponse_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + CreatePublicKeyCredentialResponse_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreatePublicKeyCredentialResponse$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialResponse_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialResponse_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialResponse_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreatePublicKeyCredentialResponse_CompanionType + extends jni.JObjType { + const $CreatePublicKeyCredentialResponse_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/CreatePublicKeyCredentialResponse$Companion;"; + + @override + CreatePublicKeyCredentialResponse_Companion fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialResponse_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreatePublicKeyCredentialResponse_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreatePublicKeyCredentialResponse_CompanionType) && + other is $CreatePublicKeyCredentialResponse_CompanionType; + } +} + +/// from: androidx.credentials.CreatePublicKeyCredentialResponse +class CreatePublicKeyCredentialResponse extends CreateCredentialResponse { + @override + late final jni.JObjType $type = type; + + CreatePublicKeyCredentialResponse.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/CreatePublicKeyCredentialResponse"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialResponseType(); + static final _id_Companion1 = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CreatePublicKeyCredentialResponse$Companion;", + ); + + /// from: static public final androidx.credentials.CreatePublicKeyCredentialResponse$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreatePublicKeyCredentialResponse_Companion get Companion1 => + const $CreatePublicKeyCredentialResponse_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion1, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_REGISTRATION_RESPONSE_JSON + static const BUNDLE_KEY_REGISTRATION_RESPONSE_JSON = + r"""androidx.credentials.BUNDLE_KEY_REGISTRATION_RESPONSE_JSON"""; + + static final _id_getRegistrationResponseJson = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getRegistrationResponseJson", + r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getRegistrationResponseJson() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getRegistrationResponseJson() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getRegistrationResponseJson, + jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialResponse.new1( + jni.JString string, + ) { + return CreatePublicKeyCredentialResponse.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Landroid/os/Bundle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, android.os.Bundle bundle, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialResponse.new2( + jni.JString string, + jni.JObject bundle, + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialResponse.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new2, [ + string.reference, + bundle.reference, + defaultConstructorMarker.reference + ]).object); + } +} + +final class $CreatePublicKeyCredentialResponseType + extends jni.JObjType { + const $CreatePublicKeyCredentialResponseType(); + + @override + String get signature => + r"Landroidx/credentials/CreatePublicKeyCredentialResponse;"; + + @override + CreatePublicKeyCredentialResponse fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialResponse.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialResponseType(); + + @override + final superCount = 2; + + @override + int get hashCode => ($CreatePublicKeyCredentialResponseType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreatePublicKeyCredentialResponseType) && + other is $CreatePublicKeyCredentialResponseType; + } +} + +/// from: androidx.credentials.Credential$Companion +class Credential_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Credential_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/Credential$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $Credential_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/Credential;"); + + /// from: public final androidx.credentials.Credential createFrom(java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + Credential createFrom( + jni.JString string, + jni.JObject bundle, + ) { + return const $CredentialType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, bundle.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory Credential_Companion( + jni.JObject defaultConstructorMarker, + ) { + return Credential_Companion.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $Credential_CompanionType + extends jni.JObjType { + const $Credential_CompanionType(); + + @override + String get signature => r"Landroidx/credentials/Credential$Companion;"; + + @override + Credential_Companion fromRef(jni.JObjectPtr ref) => + Credential_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($Credential_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($Credential_CompanionType) && + other is $Credential_CompanionType; + } +} + +/// from: androidx.credentials.Credential +class Credential extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Credential.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"androidx/credentials/Credential"); + + /// The type which includes information such as the signature of this class. + static const type = $CredentialType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/Credential$Companion;", + ); + + /// from: static public final androidx.credentials.Credential$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static Credential_Companion get Companion => + const $Credential_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/String;Landroid/os/Bundle;)V"); + + /// from: public void (java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + factory Credential( + jni.JString string, + jni.JObject bundle, + ) { + return Credential.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new0, + [string.reference, bundle.reference]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_getData = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getData", r"()Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle getData() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getData() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getData, jni.JniCallType.objectType, []).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/Credential;"); + + /// from: static public final androidx.credentials.Credential createFrom(java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + static Credential createFrom( + jni.JString string, + jni.JObject bundle, + ) { + return const $CredentialType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, bundle.reference]).object); + } +} + +final class $CredentialType extends jni.JObjType { + const $CredentialType(); + + @override + String get signature => r"Landroidx/credentials/Credential;"; + + @override + Credential fromRef(jni.JObjectPtr ref) => Credential.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CredentialType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CredentialType) && other is $CredentialType; + } +} + +/// from: androidx.credentials.CredentialManager$Companion +class CredentialManager_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CredentialManager_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/CredentialManager$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CredentialManager_CompanionType(); + static final _id_create = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"create", + r"(Landroid/content/Context;)Landroidx/credentials/CredentialManager;"); + + /// from: public final androidx.credentials.CredentialManager create(android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + CredentialManager create( + Context context, + ) { + return const $CredentialManagerType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_create, jni.JniCallType.objectType, + [context.reference]).object); + } +} + +final class $CredentialManager_CompanionType + extends jni.JObjType { + const $CredentialManager_CompanionType(); + + @override + String get signature => r"Landroidx/credentials/CredentialManager$Companion;"; + + @override + CredentialManager_Companion fromRef(jni.JObjectPtr ref) => + CredentialManager_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CredentialManager_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CredentialManager_CompanionType) && + other is $CredentialManager_CompanionType; + } +} + +/// from: androidx.credentials.CredentialManager +class CredentialManager extends jni.JObject { + @override + late final jni.JObjType $type = type; + + CredentialManager.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/CredentialManager"); + + /// The type which includes information such as the signature of this class. + static const type = $CredentialManagerType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/CredentialManager$Companion;", + ); + + /// from: static public final androidx.credentials.CredentialManager$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CredentialManager_Companion get Companion => + const $CredentialManager_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + static final _id_getCredential = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredential", + r"(Landroid/content/Context;Landroidx/credentials/GetCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); + + /// from: public java.lang.Object getCredential(android.content.Context context, androidx.credentials.GetCredentialRequest getCredentialRequest, kotlin.coroutines.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Future getCredential( + Context context, + GetCredentialRequest getCredentialRequest, + ) async { + final $p = ReceivePort(); + final $c = + jni.JObject.fromRef(ProtectedJniExtensions.newPortContinuation($p)); + jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCredential, jni.JniCallType.objectType, [ + context.reference, + getCredentialRequest.reference, + $c.reference + ]).object; + final $o = jni.JObjectPtr.fromAddress(await $p.first); + final $k = const $GetCredentialResponseType().getClass().reference; + if (!jni.Jni.env.IsInstanceOf($o, $k)) { + throw "Failed"; + } + return const $GetCredentialResponseType().fromRef($o); + } + + static final _id_getCredential1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredential", + r"(Landroid/content/Context;Landroidx/credentials/PrepareGetCredentialResponse$PendingGetCredentialHandle;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); + + /// from: public java.lang.Object getCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse$PendingGetCredentialHandle pendingGetCredentialHandle, kotlin.coroutines.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Future getCredential1( + Context context, + jni.JObject pendingGetCredentialHandle, + ) async { + final $p = ReceivePort(); + final $c = + jni.JObject.fromRef(ProtectedJniExtensions.newPortContinuation($p)); + jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCredential1, jni.JniCallType.objectType, [ + context.reference, + pendingGetCredentialHandle.reference, + $c.reference + ]).object; + final $o = jni.JObjectPtr.fromAddress(await $p.first); + final $k = const $GetCredentialResponseType().getClass().reference; + if (!jni.Jni.env.IsInstanceOf($o, $k)) { + throw "Failed"; + } + return const $GetCredentialResponseType().fromRef($o); + } + + static final _id_prepareGetCredential = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"prepareGetCredential", + r"(Landroidx/credentials/GetCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); + + /// from: public java.lang.Object prepareGetCredential(androidx.credentials.GetCredentialRequest getCredentialRequest, kotlin.coroutines.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Future prepareGetCredential( + GetCredentialRequest getCredentialRequest, + ) async { + final $p = ReceivePort(); + final $c = + jni.JObject.fromRef(ProtectedJniExtensions.newPortContinuation($p)); + jni.Jni.accessors.callMethodWithArgs( + reference, + _id_prepareGetCredential, + jni.JniCallType.objectType, + [getCredentialRequest.reference, $c.reference]).object; + final $o = jni.JObjectPtr.fromAddress(await $p.first); + final $k = const jni.JObjectType().getClass().reference; + if (!jni.Jni.env.IsInstanceOf($o, $k)) { + throw "Failed"; + } + return const jni.JObjectType().fromRef($o); + } + + static final _id_createCredential = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createCredential", + r"(Landroid/content/Context;Landroidx/credentials/CreateCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); + + /// from: public java.lang.Object createCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest createCredentialRequest, kotlin.coroutines.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Future createCredential( + Context context, + CreateCredentialRequest createCredentialRequest, + ) async { + final $p = ReceivePort(); + final $c = + jni.JObject.fromRef(ProtectedJniExtensions.newPortContinuation($p)); + jni.Jni.accessors.callMethodWithArgs( + reference, _id_createCredential, jni.JniCallType.objectType, [ + context.reference, + createCredentialRequest.reference, + $c.reference + ]).object; + final $o = jni.JObjectPtr.fromAddress(await $p.first); + final $k = const $CreateCredentialResponseType().getClass().reference; + if (!jni.Jni.env.IsInstanceOf($o, $k)) { + throw "Failed"; + } + return const $CreateCredentialResponseType().fromRef($o); + } + + static final _id_clearCredentialState = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"clearCredentialState", + r"(Landroidx/credentials/ClearCredentialStateRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); + + /// from: public java.lang.Object clearCredentialState(androidx.credentials.ClearCredentialStateRequest clearCredentialStateRequest, kotlin.coroutines.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Future clearCredentialState( + jni.JObject clearCredentialStateRequest, + ) async { + final $p = ReceivePort(); + final $c = + jni.JObject.fromRef(ProtectedJniExtensions.newPortContinuation($p)); + jni.Jni.accessors.callMethodWithArgs( + reference, + _id_clearCredentialState, + jni.JniCallType.objectType, + [clearCredentialStateRequest.reference, $c.reference]).object; + final $o = jni.JObjectPtr.fromAddress(await $p.first); + final $k = const jni.JObjectType().getClass().reference; + if (!jni.Jni.env.IsInstanceOf($o, $k)) { + throw "Failed"; + } + return const jni.JObjectType().fromRef($o); + } + + static final _id_getCredentialAsync = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredentialAsync", + r"(Landroid/content/Context;Landroidx/credentials/GetCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V"); + + /// from: public abstract void getCredentialAsync(android.content.Context context, androidx.credentials.GetCredentialRequest getCredentialRequest, android.os.CancellationSignal cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + void getCredentialAsync( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCredentialAsync, jni.JniCallType.voidType, [ + context.reference, + getCredentialRequest.reference, + cancellationSignal.reference, + executor.reference, + credentialManagerCallback.reference + ]).check(); + } + + static final _id_getCredentialAsync1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredentialAsync", + r"(Landroid/content/Context;Landroidx/credentials/PrepareGetCredentialResponse$PendingGetCredentialHandle;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V"); + + /// from: public abstract void getCredentialAsync(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse$PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + void getCredentialAsync1( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCredentialAsync1, jni.JniCallType.voidType, [ + context.reference, + pendingGetCredentialHandle.reference, + cancellationSignal.reference, + executor.reference, + credentialManagerCallback.reference + ]).check(); + } + + static final _id_prepareGetCredentialAsync = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"prepareGetCredentialAsync", + r"(Landroidx/credentials/GetCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V"); + + /// from: public abstract void prepareGetCredentialAsync(androidx.credentials.GetCredentialRequest getCredentialRequest, android.os.CancellationSignal cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + void prepareGetCredentialAsync( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_prepareGetCredentialAsync, jni.JniCallType.voidType, [ + getCredentialRequest.reference, + cancellationSignal.reference, + executor.reference, + credentialManagerCallback.reference + ]).check(); + } + + static final _id_createCredentialAsync = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createCredentialAsync", + r"(Landroid/content/Context;Landroidx/credentials/CreateCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V"); + + /// from: public abstract void createCredentialAsync(android.content.Context context, androidx.credentials.CreateCredentialRequest createCredentialRequest, android.os.CancellationSignal cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + void createCredentialAsync( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_createCredentialAsync, jni.JniCallType.voidType, [ + context.reference, + createCredentialRequest.reference, + cancellationSignal.reference, + executor.reference, + credentialManagerCallback.reference + ]).check(); + } + + static final _id_clearCredentialStateAsync = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"clearCredentialStateAsync", + r"(Landroidx/credentials/ClearCredentialStateRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V"); + + /// from: public abstract void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest clearCredentialStateRequest, android.os.CancellationSignal cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback credentialManagerCallback) + void clearCredentialStateAsync( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback, + ) { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_clearCredentialStateAsync, jni.JniCallType.voidType, [ + clearCredentialStateRequest.reference, + cancellationSignal.reference, + executor.reference, + credentialManagerCallback.reference + ]).check(); + } + + static final _id_createSettingsPendingIntent = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"createSettingsPendingIntent", + r"()Landroid/app/PendingIntent;"); + + /// from: public abstract android.app.PendingIntent createSettingsPendingIntent() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject createSettingsPendingIntent() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_createSettingsPendingIntent, + jni.JniCallType.objectType, []).object); + } + + static final _id_create = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"create", + r"(Landroid/content/Context;)Landroidx/credentials/CredentialManager;"); + + /// from: static public androidx.credentials.CredentialManager create(android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + static CredentialManager create( + Context context, + ) { + return const $CredentialManagerType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs(_class.reference, _id_create, + jni.JniCallType.objectType, [context.reference]).object); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == + r"getCredential(Landroid/content/Context;Landroidx/credentials/GetCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;") { + final $r = _$impls[$p]!.getCredential( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1] + .castTo(const $GetCredentialRequestType(), releaseOriginal: true), + $a[2].castTo(const jni.JObjectType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"getCredential(Landroid/content/Context;Landroidx/credentials/PrepareGetCredentialResponse$PendingGetCredentialHandle;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;") { + final $r = _$impls[$p]!.getCredential1( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[2].castTo(const jni.JObjectType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"prepareGetCredential(Landroidx/credentials/GetCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;") { + final $r = _$impls[$p]!.prepareGetCredential( + $a[0] + .castTo(const $GetCredentialRequestType(), releaseOriginal: true), + $a[1].castTo(const jni.JObjectType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"createCredential(Landroid/content/Context;Landroidx/credentials/CreateCredentialRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;") { + final $r = _$impls[$p]!.createCredential( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1].castTo(const $CreateCredentialRequestType(), + releaseOriginal: true), + $a[2].castTo(const jni.JObjectType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"clearCredentialState(Landroidx/credentials/ClearCredentialStateRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;") { + final $r = _$impls[$p]!.clearCredentialState( + $a[0].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[1].castTo(const jni.JObjectType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"getCredentialAsync(Landroid/content/Context;Landroidx/credentials/GetCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V") { + _$impls[$p]!.getCredentialAsync( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1] + .castTo(const $GetCredentialRequestType(), releaseOriginal: true), + $a[2].castTo(const $CancellationSignalType(), releaseOriginal: true), + $a[3].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[4].castTo( + const $CredentialManagerCallbackType( + $GetCredentialResponseType(), $GetCredentialExceptionType()), + releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == + r"getCredentialAsync(Landroid/content/Context;Landroidx/credentials/PrepareGetCredentialResponse$PendingGetCredentialHandle;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V") { + _$impls[$p]!.getCredentialAsync1( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[2].castTo(const $CancellationSignalType(), releaseOriginal: true), + $a[3].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[4].castTo( + const $CredentialManagerCallbackType( + $GetCredentialResponseType(), $GetCredentialExceptionType()), + releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == + r"prepareGetCredentialAsync(Landroidx/credentials/GetCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V") { + _$impls[$p]!.prepareGetCredentialAsync( + $a[0] + .castTo(const $GetCredentialRequestType(), releaseOriginal: true), + $a[1].castTo(const $CancellationSignalType(), releaseOriginal: true), + $a[2].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[3].castTo( + const $CredentialManagerCallbackType( + jni.JObjectType(), $GetCredentialExceptionType()), + releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == + r"createCredentialAsync(Landroid/content/Context;Landroidx/credentials/CreateCredentialRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V") { + _$impls[$p]!.createCredentialAsync( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + $a[1].castTo(const $CreateCredentialRequestType(), + releaseOriginal: true), + $a[2].castTo(const $CancellationSignalType(), releaseOriginal: true), + $a[3].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[4].castTo( + const $CredentialManagerCallbackType( + $CreateCredentialResponseType(), + $CreateCredentialExceptionType()), + releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == + r"clearCredentialStateAsync(Landroidx/credentials/ClearCredentialStateRequest;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroidx/credentials/CredentialManagerCallback;)V") { + _$impls[$p]!.clearCredentialStateAsync( + $a[0].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[1].castTo(const $CancellationSignalType(), releaseOriginal: true), + $a[2].castTo(const jni.JObjectType(), releaseOriginal: true), + $a[3].castTo( + const $CredentialManagerCallbackType( + jni.JObjectType(), jni.JObjectType()), + releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == r"createSettingsPendingIntent()Landroid/app/PendingIntent;") { + final $r = _$impls[$p]!.createSettingsPendingIntent(); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + if ($d == + r"create(Landroid/content/Context;)Landroidx/credentials/CredentialManager;") { + final $r = _$impls[$p]!.create( + $a[0].castTo(const $ContextType(), releaseOriginal: true), + ); + return ($r as jni.JObject).castTo(const jni.JObjectType()).toPointer(); + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory CredentialManager.implement( + $CredentialManagerImpl $impl, + ) { + final $p = ReceivePort(); + final $x = CredentialManager.fromRef( + ProtectedJniExtensions.newPortProxy( + r"androidx.credentials.CredentialManager", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $CredentialManagerImpl { + factory $CredentialManagerImpl({ + required jni.JObject Function(Context context, + GetCredentialRequest getCredentialRequest, jni.JObject $c) + getCredential, + required jni.JObject Function(Context context, + jni.JObject pendingGetCredentialHandle, jni.JObject $c) + getCredential1, + required jni.JObject Function( + GetCredentialRequest getCredentialRequest, jni.JObject $c) + prepareGetCredential, + required jni.JObject Function(Context context, + CreateCredentialRequest createCredentialRequest, jni.JObject $c) + createCredential, + required jni.JObject Function( + jni.JObject clearCredentialStateRequest, jni.JObject $c) + clearCredentialState, + required void Function( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + getCredentialAsync, + required void Function( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + getCredentialAsync1, + required void Function( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + prepareGetCredentialAsync, + required void Function( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + createCredentialAsync, + required void Function( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + clearCredentialStateAsync, + required jni.JObject Function() createSettingsPendingIntent, + required CredentialManager Function(Context context) create, + }) = _$CredentialManagerImpl; + + jni.JObject getCredential(Context context, + GetCredentialRequest getCredentialRequest, jni.JObject $c); + jni.JObject getCredential1( + Context context, jni.JObject pendingGetCredentialHandle, jni.JObject $c); + jni.JObject prepareGetCredential( + GetCredentialRequest getCredentialRequest, jni.JObject $c); + jni.JObject createCredential(Context context, + CreateCredentialRequest createCredentialRequest, jni.JObject $c); + jni.JObject clearCredentialState( + jni.JObject clearCredentialStateRequest, jni.JObject $c); + void getCredentialAsync( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback); + void getCredentialAsync1( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback); + void prepareGetCredentialAsync( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback); + void createCredentialAsync( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback); + void clearCredentialStateAsync( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback); + jni.JObject createSettingsPendingIntent(); + CredentialManager create(Context context); +} + +class _$CredentialManagerImpl implements $CredentialManagerImpl { + _$CredentialManagerImpl({ + required jni.JObject Function(Context context, + GetCredentialRequest getCredentialRequest, jni.JObject $c) + getCredential, + required jni.JObject Function(Context context, + jni.JObject pendingGetCredentialHandle, jni.JObject $c) + getCredential1, + required jni.JObject Function( + GetCredentialRequest getCredentialRequest, jni.JObject $c) + prepareGetCredential, + required jni.JObject Function(Context context, + CreateCredentialRequest createCredentialRequest, jni.JObject $c) + createCredential, + required jni.JObject Function( + jni.JObject clearCredentialStateRequest, jni.JObject $c) + clearCredentialState, + required void Function( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + getCredentialAsync, + required void Function( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + getCredentialAsync1, + required void Function( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + prepareGetCredentialAsync, + required void Function( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + createCredentialAsync, + required void Function( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) + clearCredentialStateAsync, + required jni.JObject Function() createSettingsPendingIntent, + required CredentialManager Function(Context context) create, + }) : _getCredential = getCredential, + _getCredential1 = getCredential1, + _prepareGetCredential = prepareGetCredential, + _createCredential = createCredential, + _clearCredentialState = clearCredentialState, + _getCredentialAsync = getCredentialAsync, + _getCredentialAsync1 = getCredentialAsync1, + _prepareGetCredentialAsync = prepareGetCredentialAsync, + _createCredentialAsync = createCredentialAsync, + _clearCredentialStateAsync = clearCredentialStateAsync, + _createSettingsPendingIntent = createSettingsPendingIntent, + _create = create; + + final jni.JObject Function(Context context, + GetCredentialRequest getCredentialRequest, jni.JObject $c) _getCredential; + final jni.JObject Function(Context context, + jni.JObject pendingGetCredentialHandle, jni.JObject $c) _getCredential1; + final jni.JObject Function( + GetCredentialRequest getCredentialRequest, jni.JObject $c) + _prepareGetCredential; + final jni.JObject Function( + Context context, + CreateCredentialRequest createCredentialRequest, + jni.JObject $c) _createCredential; + final jni.JObject Function( + jni.JObject clearCredentialStateRequest, jni.JObject $c) + _clearCredentialState; + final void Function( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) _getCredentialAsync; + final void Function( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) _getCredentialAsync1; + final void Function( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) _prepareGetCredentialAsync; + final void Function( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) _createCredentialAsync; + final void Function( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) _clearCredentialStateAsync; + final jni.JObject Function() _createSettingsPendingIntent; + final CredentialManager Function(Context context) _create; + + jni.JObject getCredential(Context context, + GetCredentialRequest getCredentialRequest, jni.JObject $c) { + return _getCredential(context, getCredentialRequest, $c); + } + + jni.JObject getCredential1( + Context context, jni.JObject pendingGetCredentialHandle, jni.JObject $c) { + return _getCredential1(context, pendingGetCredentialHandle, $c); + } + + jni.JObject prepareGetCredential( + GetCredentialRequest getCredentialRequest, jni.JObject $c) { + return _prepareGetCredential(getCredentialRequest, $c); + } + + jni.JObject createCredential(Context context, + CreateCredentialRequest createCredentialRequest, jni.JObject $c) { + return _createCredential(context, createCredentialRequest, $c); + } + + jni.JObject clearCredentialState( + jni.JObject clearCredentialStateRequest, jni.JObject $c) { + return _clearCredentialState(clearCredentialStateRequest, $c); + } + + void getCredentialAsync( + Context context, + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) { + return _getCredentialAsync(context, getCredentialRequest, + cancellationSignal, executor, credentialManagerCallback); + } + + void getCredentialAsync1( + Context context, + jni.JObject pendingGetCredentialHandle, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) { + return _getCredentialAsync1(context, pendingGetCredentialHandle, + cancellationSignal, executor, credentialManagerCallback); + } + + void prepareGetCredentialAsync( + GetCredentialRequest getCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) { + return _prepareGetCredentialAsync(getCredentialRequest, cancellationSignal, + executor, credentialManagerCallback); + } + + void createCredentialAsync( + Context context, + CreateCredentialRequest createCredentialRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) { + return _createCredentialAsync(context, createCredentialRequest, + cancellationSignal, executor, credentialManagerCallback); + } + + void clearCredentialStateAsync( + jni.JObject clearCredentialStateRequest, + CancellationSignal cancellationSignal, + jni.JObject executor, + CredentialManagerCallback + credentialManagerCallback) { + return _clearCredentialStateAsync(clearCredentialStateRequest, + cancellationSignal, executor, credentialManagerCallback); + } + + jni.JObject createSettingsPendingIntent() { + return _createSettingsPendingIntent(); + } + + CredentialManager create(Context context) { + return _create(context); + } +} + +final class $CredentialManagerType extends jni.JObjType { + const $CredentialManagerType(); + + @override + String get signature => r"Landroidx/credentials/CredentialManager;"; + + @override + CredentialManager fromRef(jni.JObjectPtr ref) => + CredentialManager.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($CredentialManagerType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CredentialManagerType) && + other is $CredentialManagerType; + } +} + +/// from: androidx.credentials.CredentialManagerCallback +class CredentialManagerCallback<$R extends jni.JObject, $E extends jni.JObject> + extends jni.JObject { + @override + late final jni.JObjType> $type = type(R, E); + + final jni.JObjType<$R> R; + final jni.JObjType<$E> E; + + CredentialManagerCallback.fromRef( + this.R, + this.E, + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/CredentialManagerCallback"); + + /// The type which includes information such as the signature of this class. + static $CredentialManagerCallbackType<$R, $E> + type<$R extends jni.JObject, $E extends jni.JObject>( + jni.JObjType<$R> R, + jni.JObjType<$E> E, + ) { + return $CredentialManagerCallbackType( + R, + E, + ); + } + + static final _id_onResult = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onResult", r"(Ljava/lang/Object;)V"); + + /// from: public abstract void onResult(R object) + void onResult( + $R object, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onResult, + jni.JniCallType.voidType, [object.reference]).check(); + } + + static final _id_onError = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onError", r"(Ljava/lang/Object;)V"); + + /// from: public abstract void onError(E object) + void onError( + $E object, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onError, + jni.JniCallType.voidType, [object.reference]).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"onResult(Ljava/lang/Object;)V") { + _$impls[$p]!.onResult( + $a[0].castTo(_$impls[$p]!.R, releaseOriginal: true), + ); + return jni.nullptr; + } + if ($d == r"onError(Ljava/lang/Object;)V") { + _$impls[$p]!.onError( + $a[0].castTo(_$impls[$p]!.E, releaseOriginal: true), + ); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory CredentialManagerCallback.implement( + $CredentialManagerCallbackImpl<$R, $E> $impl, + ) { + final $p = ReceivePort(); + final $x = CredentialManagerCallback.fromRef( + $impl.R, + $impl.E, + ProtectedJniExtensions.newPortProxy( + r"androidx.credentials.CredentialManagerCallback", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $CredentialManagerCallbackImpl<$R extends jni.JObject, + $E extends jni.JObject> { + factory $CredentialManagerCallbackImpl({ + required jni.JObjType<$R> R, + required jni.JObjType<$E> E, + required void Function($R object) onResult, + required void Function($E object) onError, + }) = _$CredentialManagerCallbackImpl; + + jni.JObjType<$R> get R; + jni.JObjType<$E> get E; + + void onResult($R object); + void onError($E object); +} + +class _$CredentialManagerCallbackImpl<$R extends jni.JObject, + $E extends jni.JObject> implements $CredentialManagerCallbackImpl<$R, $E> { + _$CredentialManagerCallbackImpl({ + required this.R, + required this.E, + required void Function($R object) onResult, + required void Function($E object) onError, + }) : _onResult = onResult, + _onError = onError; + + @override + final jni.JObjType<$R> R; + + @override + final jni.JObjType<$E> E; + + final void Function($R object) _onResult; + final void Function($E object) _onError; + + void onResult($R object) { + return _onResult(object); + } + + void onError($E object) { + return _onError(object); + } +} + +final class $CredentialManagerCallbackType<$R extends jni.JObject, + $E extends jni.JObject> + extends jni.JObjType> { + final jni.JObjType<$R> R; + final jni.JObjType<$E> E; + + const $CredentialManagerCallbackType( + this.R, + this.E, + ); + + @override + String get signature => r"Landroidx/credentials/CredentialManagerCallback;"; + + @override + CredentialManagerCallback<$R, $E> fromRef(jni.JObjectPtr ref) => + CredentialManagerCallback.fromRef(R, E, ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => Object.hash($CredentialManagerCallbackType, R, E); + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CredentialManagerCallbackType<$R, $E>) && + other is $CredentialManagerCallbackType<$R, $E> && + R == other.R && + E == other.E; + } +} + +/// from: androidx.credentials.GetCredentialRequest$Builder +class GetCredentialRequest_Builder extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetCredentialRequest_Builder.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/GetCredentialRequest$Builder"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialRequest_BuilderType(); + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest_Builder() { + return GetCredentialRequest_Builder.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_addCredentialOption = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addCredentialOption", + r"(Landroidx/credentials/CredentialOption;)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder addCredentialOption(androidx.credentials.CredentialOption credentialOption) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder addCredentialOption( + jni.JObject credentialOption, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_addCredentialOption, + jni.JniCallType.objectType, [credentialOption.reference]).object); + } + + static final _id_setCredentialOptions = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setCredentialOptions", + r"(Ljava/util/List;)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder setCredentialOptions(java.util.List list) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder setCredentialOptions( + jni.JList list, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_setCredentialOptions, + jni.JniCallType.objectType, [list.reference]).object); + } + + static final _id_setOrigin = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setOrigin", + r"(Ljava/lang/String;)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder setOrigin(java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder setOrigin( + jni.JString string, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_setOrigin, + jni.JniCallType.objectType, [string.reference]).object); + } + + static final _id_setPreferImmediatelyAvailableCredentials = jni.Jni.accessors + .getMethodIDOf( + _class.reference, + r"setPreferImmediatelyAvailableCredentials", + r"(Z)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder setPreferImmediatelyAvailableCredentials(boolean z) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder setPreferImmediatelyAvailableCredentials( + bool z, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_setPreferImmediatelyAvailableCredentials, + jni.JniCallType.objectType, + [z ? 1 : 0]).object); + } + + static final _id_setPreferUiBrandingComponentName = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"setPreferUiBrandingComponentName", + r"(Landroid/content/ComponentName;)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder setPreferUiBrandingComponentName(android.content.ComponentName componentName) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder setPreferUiBrandingComponentName( + jni.JObject componentName, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_setPreferUiBrandingComponentName, + jni.JniCallType.objectType, [componentName.reference]).object); + } + + static final _id_setPreferIdentityDocUi = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"setPreferIdentityDocUi", + r"(Z)Landroidx/credentials/GetCredentialRequest$Builder;"); + + /// from: public final androidx.credentials.GetCredentialRequest$Builder setPreferIdentityDocUi(boolean z) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest_Builder setPreferIdentityDocUi( + bool z, + ) { + return const $GetCredentialRequest_BuilderType().fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_setPreferIdentityDocUi, + jni.JniCallType.objectType, [z ? 1 : 0]).object); + } + + static final _id_build = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"build", r"()Landroidx/credentials/GetCredentialRequest;"); + + /// from: public final androidx.credentials.GetCredentialRequest build() + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest build() { + return const $GetCredentialRequestType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, _id_build, jni.JniCallType.objectType, []).object); + } +} + +final class $GetCredentialRequest_BuilderType + extends jni.JObjType { + const $GetCredentialRequest_BuilderType(); + + @override + String get signature => + r"Landroidx/credentials/GetCredentialRequest$Builder;"; + + @override + GetCredentialRequest_Builder fromRef(jni.JObjectPtr ref) => + GetCredentialRequest_Builder.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetCredentialRequest_BuilderType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialRequest_BuilderType) && + other is $GetCredentialRequest_BuilderType; + } +} + +/// from: androidx.credentials.GetCredentialRequest$Companion +class GetCredentialRequest_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetCredentialRequest_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/GetCredentialRequest$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialRequest_CompanionType(); + static final _id_toRequestDataBundle = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"toRequestDataBundle", + r"(Landroidx/credentials/GetCredentialRequest;)Landroid/os/Bundle;"); + + /// from: public final android.os.Bundle toRequestDataBundle(androidx.credentials.GetCredentialRequest getCredentialRequest) + /// The returned object must be released after use, by calling the [release] method. + jni.JObject toRequestDataBundle( + GetCredentialRequest getCredentialRequest, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_toRequestDataBundle, + jni.JniCallType.objectType, + [getCredentialRequest.reference]).object); + } + + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/util/List;Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/GetCredentialRequest;"); + + /// from: public final androidx.credentials.GetCredentialRequest createFrom(java.util.List list, java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialRequest createFrom( + jni.JList list, + jni.JString string, + jni.JObject bundle, + ) { + return const $GetCredentialRequestType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [list.reference, string.reference, bundle.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest_Companion( + jni.JObject defaultConstructorMarker, + ) { + return GetCredentialRequest_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $GetCredentialRequest_CompanionType + extends jni.JObjType { + const $GetCredentialRequest_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/GetCredentialRequest$Companion;"; + + @override + GetCredentialRequest_Companion fromRef(jni.JObjectPtr ref) => + GetCredentialRequest_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetCredentialRequest_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialRequest_CompanionType) && + other is $GetCredentialRequest_CompanionType; + } +} + +/// from: androidx.credentials.GetCredentialRequest +class GetCredentialRequest extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetCredentialRequest.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/GetCredentialRequest"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialRequestType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/GetCredentialRequest$Companion;", + ); + + /// from: static public final androidx.credentials.GetCredentialRequest$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static GetCredentialRequest_Companion get Companion => + const $GetCredentialRequest_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS + static const BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS = + r"""androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"""; + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/util/List;Ljava/lang/String;ZLandroid/content/ComponentName;Z)V"); + + /// from: public void (java.util.List list, java.lang.String string, boolean z, android.content.ComponentName componentName, boolean z1) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest( + jni.JList list, + jni.JString string, + bool z, + jni.JObject componentName, + bool z1, + ) { + return GetCredentialRequest.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new0, [ + list.reference, + string.reference, + z ? 1 : 0, + componentName.reference, + z1 ? 1 : 0 + ]).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/util/List;Ljava/lang/String;ZLandroid/content/ComponentName;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.util.List list, java.lang.String string, boolean z, android.content.ComponentName componentName, boolean z1, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest.new1( + jni.JList list, + jni.JString string, + bool z, + jni.JObject componentName, + bool z1, + int i, + jni.JObject defaultConstructorMarker, + ) { + return GetCredentialRequest.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new1, [ + list.reference, + string.reference, + z ? 1 : 0, + componentName.reference, + z1 ? 1 : 0, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getCredentialOptions = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getCredentialOptions", r"()Ljava/util/List;"); + + /// from: public final java.util.List getCredentialOptions() + /// The returned object must be released after use, by calling the [release] method. + jni.JList getCredentialOptions() { + return const jni.JListType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getCredentialOptions, + jni.JniCallType.objectType, []).object); + } + + static final _id_getOrigin = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getOrigin", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getOrigin() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getOrigin() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getOrigin, jni.JniCallType.objectType, []).object); + } + + static final _id_getPreferIdentityDocUi = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getPreferIdentityDocUi", r"()Z"); + + /// from: public final boolean getPreferIdentityDocUi() + bool getPreferIdentityDocUi() { + return jni.Jni.accessors.callMethodWithArgs(reference, + _id_getPreferIdentityDocUi, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_getPreferUiBrandingComponentName = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getPreferUiBrandingComponentName", + r"()Landroid/content/ComponentName;"); + + /// from: public final android.content.ComponentName getPreferUiBrandingComponentName() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getPreferUiBrandingComponentName() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getPreferUiBrandingComponentName, + jni.JniCallType.objectType, []).object); + } + + static final _id_preferImmediatelyAvailableCredentials = jni.Jni.accessors + .getMethodIDOf( + _class.reference, r"preferImmediatelyAvailableCredentials", r"()Z"); + + /// from: public final boolean preferImmediatelyAvailableCredentials() + bool preferImmediatelyAvailableCredentials() { + return jni.Jni.accessors.callMethodWithArgs( + reference, + _id_preferImmediatelyAvailableCredentials, + jni.JniCallType.booleanType, []).boolean; + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/util/List;Ljava/lang/String;ZLandroid/content/ComponentName;)V"); + + /// from: public void (java.util.List list, java.lang.String string, boolean z, android.content.ComponentName componentName) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest.new2( + jni.JList list, + jni.JString string, + bool z, + jni.JObject componentName, + ) { + return GetCredentialRequest.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new2, [ + list.reference, + string.reference, + z ? 1 : 0, + componentName.reference + ]).object); + } + + static final _id_new3 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/util/List;Ljava/lang/String;Z)V"); + + /// from: public void (java.util.List list, java.lang.String string, boolean z) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest.new3( + jni.JList list, + jni.JString string, + bool z, + ) { + return GetCredentialRequest.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new3, + [list.reference, string.reference, z ? 1 : 0]).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/util/List;Ljava/lang/String;)V"); + + /// from: public void (java.util.List list, java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest.new4( + jni.JList list, + jni.JString string, + ) { + return GetCredentialRequest.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new4, [list.reference, string.reference]).object); + } + + static final _id_new5 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/util/List;)V"); + + /// from: public void (java.util.List list) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialRequest.new5( + jni.JList list, + ) { + return GetCredentialRequest.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new5, [list.reference]).object); + } + + static final _id_toRequestDataBundle = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"toRequestDataBundle", + r"(Landroidx/credentials/GetCredentialRequest;)Landroid/os/Bundle;"); + + /// from: static public final android.os.Bundle toRequestDataBundle(androidx.credentials.GetCredentialRequest getCredentialRequest) + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject toRequestDataBundle( + GetCredentialRequest getCredentialRequest, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_toRequestDataBundle, + jni.JniCallType.objectType, + [getCredentialRequest.reference]).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/util/List;Ljava/lang/String;Landroid/os/Bundle;)Landroidx/credentials/GetCredentialRequest;"); + + /// from: static public final androidx.credentials.GetCredentialRequest createFrom(java.util.List list, java.lang.String string, android.os.Bundle bundle) + /// The returned object must be released after use, by calling the [release] method. + static GetCredentialRequest createFrom( + jni.JList list, + jni.JString string, + jni.JObject bundle, + ) { + return const $GetCredentialRequestType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [list.reference, string.reference, bundle.reference]).object); + } +} + +final class $GetCredentialRequestType + extends jni.JObjType { + const $GetCredentialRequestType(); + + @override + String get signature => r"Landroidx/credentials/GetCredentialRequest;"; + + @override + GetCredentialRequest fromRef(jni.JObjectPtr ref) => + GetCredentialRequest.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetCredentialRequestType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialRequestType) && + other is $GetCredentialRequestType; + } +} + +/// from: androidx.credentials.GetCredentialResponse +class GetCredentialResponse extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetCredentialResponse.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/GetCredentialResponse"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialResponseType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Landroidx/credentials/Credential;)V"); + + /// from: public void (androidx.credentials.Credential credential) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialResponse( + Credential credential, + ) { + return GetCredentialResponse.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new0, [credential.reference]).object); + } + + static final _id_getCredential = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getCredential", + r"()Landroidx/credentials/Credential;"); + + /// from: public final androidx.credentials.Credential getCredential() + /// The returned object must be released after use, by calling the [release] method. + Credential getCredential() { + return const $CredentialType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getCredential, jni.JniCallType.objectType, []).object); + } +} + +final class $GetCredentialResponseType + extends jni.JObjType { + const $GetCredentialResponseType(); + + @override + String get signature => r"Landroidx/credentials/GetCredentialResponse;"; + + @override + GetCredentialResponse fromRef(jni.JObjectPtr ref) => + GetCredentialResponse.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetCredentialResponseType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialResponseType) && + other is $GetCredentialResponseType; + } +} + +/// from: androidx.credentials.GetPublicKeyCredentialOption$Companion +class GetPublicKeyCredentialOption_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetPublicKeyCredentialOption_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/GetPublicKeyCredentialOption$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $GetPublicKeyCredentialOption_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption_Companion( + jni.JObject defaultConstructorMarker, + ) { + return GetPublicKeyCredentialOption_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $GetPublicKeyCredentialOption_CompanionType + extends jni.JObjType { + const $GetPublicKeyCredentialOption_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/GetPublicKeyCredentialOption$Companion;"; + + @override + GetPublicKeyCredentialOption_Companion fromRef(jni.JObjectPtr ref) => + GetPublicKeyCredentialOption_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetPublicKeyCredentialOption_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetPublicKeyCredentialOption_CompanionType) && + other is $GetPublicKeyCredentialOption_CompanionType; + } +} + +/// from: androidx.credentials.GetPublicKeyCredentialOption +class GetPublicKeyCredentialOption extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetPublicKeyCredentialOption.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/GetPublicKeyCredentialOption"); + + /// The type which includes information such as the signature of this class. + static const type = $GetPublicKeyCredentialOptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/GetPublicKeyCredentialOption$Companion;", + ); + + /// from: static public final androidx.credentials.GetPublicKeyCredentialOption$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static GetPublicKeyCredentialOption_Companion get Companion => + const $GetPublicKeyCredentialOption_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String BUNDLE_KEY_CLIENT_DATA_HASH + static const BUNDLE_KEY_CLIENT_DATA_HASH = + r"""androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"""; + + /// from: static public final java.lang.String BUNDLE_KEY_REQUEST_JSON + static const BUNDLE_KEY_REQUEST_JSON = + r"""androidx.credentials.BUNDLE_KEY_REQUEST_JSON"""; + + /// from: static public final java.lang.String BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION + static const BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION = + r"""androidx.credentials.BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION"""; + + static final _id_getRequestJson = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getRequestJson", r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getRequestJson() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getRequestJson() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getRequestJson, jni.JniCallType.objectType, []).object); + } + + static final _id_getClientDataHash = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getClientDataHash", r"()[B"); + + /// from: public final byte[] getClientDataHash() + /// The returned object must be released after use, by calling the [release] method. + jni.JArray getClientDataHash() { + return const jni.JArrayType(jni.jbyteType()).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_getClientDataHash, + jni.JniCallType.objectType, []).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/String;[BLjava/util/Set;)V"); + + /// from: public void (java.lang.String string, java.lang.Object[] bs, java.util.Set set) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption( + jni.JString string, + jni.JArray bs, + jni.JSet set0, + ) { + return GetPublicKeyCredentialOption.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [string.reference, bs.reference, set0.reference]).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;[BLjava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, byte[] bs, java.util.Set set, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption.new1( + jni.JString string, + jni.JArray bs, + jni.JSet set0, + int i, + jni.JObject defaultConstructorMarker, + ) { + return GetPublicKeyCredentialOption.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new1, [ + string.reference, + bs.reference, + set0.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new2 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;[B)V"); + + /// from: public void (java.lang.String string, byte[] bs) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption.new2( + jni.JString string, + jni.JArray bs, + ) { + return GetPublicKeyCredentialOption.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new2, + [string.reference, bs.reference]).object); + } + + static final _id_new3 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption.new3( + jni.JString string, + ) { + return GetPublicKeyCredentialOption.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new3, [string.reference]).object); + } + + static final _id_new4 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;[BLjava/util/Set;Landroid/os/Bundle;Landroid/os/Bundle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, byte[] bs, java.util.Set set, android.os.Bundle bundle, android.os.Bundle bundle1, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialOption.new4( + jni.JString string, + jni.JArray bs, + jni.JSet set0, + jni.JObject bundle, + jni.JObject bundle1, + jni.JObject defaultConstructorMarker, + ) { + return GetPublicKeyCredentialOption.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new4, [ + string.reference, + bs.reference, + set0.reference, + bundle.reference, + bundle1.reference, + defaultConstructorMarker.reference + ]).object); + } +} + +final class $GetPublicKeyCredentialOptionType + extends jni.JObjType { + const $GetPublicKeyCredentialOptionType(); + + @override + String get signature => + r"Landroidx/credentials/GetPublicKeyCredentialOption;"; + + @override + GetPublicKeyCredentialOption fromRef(jni.JObjectPtr ref) => + GetPublicKeyCredentialOption.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetPublicKeyCredentialOptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetPublicKeyCredentialOptionType) && + other is $GetPublicKeyCredentialOptionType; + } +} + +/// from: androidx.credentials.PublicKeyCredential$Companion +class PublicKeyCredential_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + PublicKeyCredential_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/PublicKeyCredential$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $PublicKeyCredential_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory PublicKeyCredential_Companion( + jni.JObject defaultConstructorMarker, + ) { + return PublicKeyCredential_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $PublicKeyCredential_CompanionType + extends jni.JObjType { + const $PublicKeyCredential_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/PublicKeyCredential$Companion;"; + + @override + PublicKeyCredential_Companion fromRef(jni.JObjectPtr ref) => + PublicKeyCredential_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($PublicKeyCredential_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($PublicKeyCredential_CompanionType) && + other is $PublicKeyCredential_CompanionType; + } +} + +/// from: androidx.credentials.PublicKeyCredential +class PublicKeyCredential extends Credential { + @override + late final jni.JObjType $type = type; + + PublicKeyCredential.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"androidx/credentials/PublicKeyCredential"); + + /// The type which includes information such as the signature of this class. + static const type = $PublicKeyCredentialType(); + static final _id_Companion1 = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/PublicKeyCredential$Companion;", + ); + + /// from: static public final androidx.credentials.PublicKeyCredential$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static PublicKeyCredential_Companion get Companion1 => + const $PublicKeyCredential_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion1, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_PUBLIC_KEY_CREDENTIAL + static const TYPE_PUBLIC_KEY_CREDENTIAL = + r"""androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL"""; + + /// from: static public final java.lang.String BUNDLE_KEY_SUBTYPE + static const BUNDLE_KEY_SUBTYPE = + r"""androidx.credentials.BUNDLE_KEY_SUBTYPE"""; + + /// from: static public final java.lang.String BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON + static const BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON = + r"""androidx.credentials.BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON"""; + + static final _id_getAuthenticationResponseJson = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getAuthenticationResponseJson", + r"()Ljava/lang/String;"); + + /// from: public final java.lang.String getAuthenticationResponseJson() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getAuthenticationResponseJson() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_getAuthenticationResponseJson, + jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory PublicKeyCredential.new1( + jni.JString string, + ) { + return PublicKeyCredential.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Landroid/os/Bundle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, android.os.Bundle bundle, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory PublicKeyCredential.new2( + jni.JString string, + jni.JObject bundle, + jni.JObject defaultConstructorMarker, + ) { + return PublicKeyCredential.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new2, [ + string.reference, + bundle.reference, + defaultConstructorMarker.reference + ]).object); + } +} + +final class $PublicKeyCredentialType extends jni.JObjType { + const $PublicKeyCredentialType(); + + @override + String get signature => r"Landroidx/credentials/PublicKeyCredential;"; + + @override + PublicKeyCredential fromRef(jni.JObjectPtr ref) => + PublicKeyCredential.fromRef(ref); + + @override + jni.JObjType get superType => const $CredentialType(); + + @override + final superCount = 2; + + @override + int get hashCode => ($PublicKeyCredentialType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($PublicKeyCredentialType) && + other is $PublicKeyCredentialType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialCancellationException$Companion +class CreateCredentialCancellationException_Companion extends jni.JObject { + @override + late final jni.JObjType + $type = type; + + CreateCredentialCancellationException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialCancellationException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialCancellationException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCancellationException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialCancellationException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialCancellationException_CompanionType + extends jni.JObjType { + const $CreateCredentialCancellationException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialCancellationException$Companion;"; + + @override + CreateCredentialCancellationException_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialCancellationException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreateCredentialCancellationException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialCancellationException_CompanionType) && + other is $CreateCredentialCancellationException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialCancellationException +class CreateCredentialCancellationException extends CreateCredentialException { + @override + late final jni.JObjType $type = type; + + CreateCredentialCancellationException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialCancellationException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialCancellationExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/CreateCredentialCancellationException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialCancellationException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialCancellationException_Companion get Companion => + const $CreateCredentialCancellationException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_CREATE_CREDENTIAL_CANCELLATION_EXCEPTION + static const TYPE_CREATE_CREDENTIAL_CANCELLATION_EXCEPTION = + r"""android.credentials.CreateCredentialException.TYPE_USER_CANCELED"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCancellationException.new7( + jni.JObject charSequence, + ) { + return CreateCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCancellationException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCancellationException.new9() { + return CreateCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $CreateCredentialCancellationExceptionType + extends jni.JObjType { + const $CreateCredentialCancellationExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialCancellationException;"; + + @override + CreateCredentialCancellationException fromRef(jni.JObjectPtr ref) => + CreateCredentialCancellationException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($CreateCredentialCancellationExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialCancellationExceptionType) && + other is $CreateCredentialCancellationExceptionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialException +class CreateCredentialException extends Exception { + @override + late final jni.JObjType $type = type; + + CreateCredentialException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialExceptionType(); + static final _id_new5 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialException.new5( + jni.JString string, + jni.JObject charSequence, + ) { + return CreateCredentialException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new5, + [string.reference, charSequence.reference]).object); + } + + static final _id_new6 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialException.new6( + jni.JString string, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new6, [ + string.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_getErrorMessage = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getErrorMessage", r"()Ljava/lang/CharSequence;"); + + /// from: public java.lang.CharSequence getErrorMessage() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getErrorMessage() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getErrorMessage, jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialException.new1( + jni.JString string, + ) { + return CreateCredentialException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } +} + +final class $CreateCredentialExceptionType + extends jni.JObjType { + const $CreateCredentialExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialException;"; + + @override + CreateCredentialException fromRef(jni.JObjectPtr ref) => + CreateCredentialException.fromRef(ref); + + @override + jni.JObjType get superType => const $ExceptionType(); + + @override + final superCount = 3; + + @override + int get hashCode => ($CreateCredentialExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialExceptionType) && + other is $CreateCredentialExceptionType; + } +} + +/// from: androidx.credentials.exceptions.GetCredentialCancellationException$Companion +class GetCredentialCancellationException_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + GetCredentialCancellationException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/GetCredentialCancellationException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialCancellationException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialCancellationException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return GetCredentialCancellationException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $GetCredentialCancellationException_CompanionType + extends jni.JObjType { + const $GetCredentialCancellationException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/GetCredentialCancellationException$Companion;"; + + @override + GetCredentialCancellationException_Companion fromRef(jni.JObjectPtr ref) => + GetCredentialCancellationException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($GetCredentialCancellationException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($GetCredentialCancellationException_CompanionType) && + other is $GetCredentialCancellationException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.GetCredentialCancellationException +class GetCredentialCancellationException extends GetCredentialException { + @override + late final jni.JObjType $type = type; + + GetCredentialCancellationException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/GetCredentialCancellationException"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialCancellationExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/GetCredentialCancellationException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.GetCredentialCancellationException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static GetCredentialCancellationException_Companion get Companion => + const $GetCredentialCancellationException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_GET_CREDENTIAL_CANCELLATION_EXCEPTION + static const TYPE_GET_CREDENTIAL_CANCELLATION_EXCEPTION = + r"""android.credentials.GetCredentialException.TYPE_USER_CANCELED"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialCancellationException.new7( + jni.JObject charSequence, + ) { + return GetCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialCancellationException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return GetCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialCancellationException.new9() { + return GetCredentialCancellationException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $GetCredentialCancellationExceptionType + extends jni.JObjType { + const $GetCredentialCancellationExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/GetCredentialCancellationException;"; + + @override + GetCredentialCancellationException fromRef(jni.JObjectPtr ref) => + GetCredentialCancellationException.fromRef(ref); + + @override + jni.JObjType get superType => const $GetCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($GetCredentialCancellationExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialCancellationExceptionType) && + other is $GetCredentialCancellationExceptionType; + } +} + +/// from: androidx.credentials.exceptions.GetCredentialException +class GetCredentialException extends Exception { + @override + late final jni.JObjType $type = type; + + GetCredentialException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/GetCredentialException"); + + /// The type which includes information such as the signature of this class. + static const type = $GetCredentialExceptionType(); + static final _id_new5 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialException.new5( + jni.JString string, + jni.JObject charSequence, + ) { + return GetCredentialException.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, + _id_new5, + [string.reference, charSequence.reference]).object); + } + + static final _id_new6 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialException.new6( + jni.JString string, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return GetCredentialException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new6, [ + string.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_getErrorMessage = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getErrorMessage", r"()Ljava/lang/CharSequence;"); + + /// from: public java.lang.CharSequence getErrorMessage() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getErrorMessage() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getErrorMessage, jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory GetCredentialException.new1( + jni.JString string, + ) { + return GetCredentialException.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } +} + +final class $GetCredentialExceptionType + extends jni.JObjType { + const $GetCredentialExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/GetCredentialException;"; + + @override + GetCredentialException fromRef(jni.JObjectPtr ref) => + GetCredentialException.fromRef(ref); + + @override + jni.JObjType get superType => const $ExceptionType(); + + @override + final superCount = 3; + + @override + int get hashCode => ($GetCredentialExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetCredentialExceptionType) && + other is $GetCredentialExceptionType; + } +} + +/// from: androidx.credentials.exceptions.NoCredentialException$Companion +class NoCredentialException_Companion extends jni.JObject { + @override + late final jni.JObjType $type = type; + + NoCredentialException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/NoCredentialException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $NoCredentialException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory NoCredentialException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return NoCredentialException_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $NoCredentialException_CompanionType + extends jni.JObjType { + const $NoCredentialException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/NoCredentialException$Companion;"; + + @override + NoCredentialException_Companion fromRef(jni.JObjectPtr ref) => + NoCredentialException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($NoCredentialException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($NoCredentialException_CompanionType) && + other is $NoCredentialException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.NoCredentialException +class NoCredentialException extends GetCredentialException { + @override + late final jni.JObjType $type = type; + + NoCredentialException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/NoCredentialException"); + + /// The type which includes information such as the signature of this class. + static const type = $NoCredentialExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/NoCredentialException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.NoCredentialException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static NoCredentialException_Companion get Companion => + const $NoCredentialException_CompanionType().fromRef(jni.Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_FRAMEWORK_TYPE_NO_CREDENTIAL + static const TYPE_FRAMEWORK_TYPE_NO_CREDENTIAL = + r"""android.credentials.GetCredentialException.TYPE_NO_CREDENTIAL"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory NoCredentialException.new7( + jni.JObject charSequence, + ) { + return NoCredentialException.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory NoCredentialException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return NoCredentialException.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory NoCredentialException.new9() { + return NoCredentialException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $NoCredentialExceptionType + extends jni.JObjType { + const $NoCredentialExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/NoCredentialException;"; + + @override + NoCredentialException fromRef(jni.JObjectPtr ref) => + NoCredentialException.fromRef(ref); + + @override + jni.JObjType get superType => const $GetCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($NoCredentialExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($NoCredentialExceptionType) && + other is $NoCredentialExceptionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialInterruptedException$Companion +class CreateCredentialInterruptedException_Companion extends jni.JObject { + @override + late final jni.JObjType + $type = type; + + CreateCredentialInterruptedException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialInterruptedException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialInterruptedException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialInterruptedException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialInterruptedException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialInterruptedException_CompanionType + extends jni.JObjType { + const $CreateCredentialInterruptedException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialInterruptedException$Companion;"; + + @override + CreateCredentialInterruptedException_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialInterruptedException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreateCredentialInterruptedException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialInterruptedException_CompanionType) && + other is $CreateCredentialInterruptedException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialInterruptedException +class CreateCredentialInterruptedException extends CreateCredentialException { + @override + late final jni.JObjType $type = type; + + CreateCredentialInterruptedException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialInterruptedException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialInterruptedExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/CreateCredentialInterruptedException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialInterruptedException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialInterruptedException_Companion get Companion => + const $CreateCredentialInterruptedException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_CREATE_CREDENTIAL_INTERRUPTED_EXCEPTION + static const TYPE_CREATE_CREDENTIAL_INTERRUPTED_EXCEPTION = + r"""android.credentials.CreateCredentialException.TYPE_INTERRUPTED"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialInterruptedException.new7( + jni.JObject charSequence, + ) { + return CreateCredentialInterruptedException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialInterruptedException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialInterruptedException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialInterruptedException.new9() { + return CreateCredentialInterruptedException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $CreateCredentialInterruptedExceptionType + extends jni.JObjType { + const $CreateCredentialInterruptedExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialInterruptedException;"; + + @override + CreateCredentialInterruptedException fromRef(jni.JObjectPtr ref) => + CreateCredentialInterruptedException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($CreateCredentialInterruptedExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialInterruptedExceptionType) && + other is $CreateCredentialInterruptedExceptionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialProviderConfigurationException$Companion +class CreateCredentialProviderConfigurationException_Companion + extends jni.JObject { + @override + late final jni + .JObjType + $type = type; + + CreateCredentialProviderConfigurationException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialProviderConfigurationException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = + $CreateCredentialProviderConfigurationException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialProviderConfigurationException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialProviderConfigurationException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialProviderConfigurationException_CompanionType + extends jni + .JObjType { + const $CreateCredentialProviderConfigurationException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialProviderConfigurationException$Companion;"; + + @override + CreateCredentialProviderConfigurationException_Companion fromRef( + jni.JObjectPtr ref) => + CreateCredentialProviderConfigurationException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreateCredentialProviderConfigurationException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialProviderConfigurationException_CompanionType) && + other is $CreateCredentialProviderConfigurationException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialProviderConfigurationException +class CreateCredentialProviderConfigurationException + extends CreateCredentialException { + @override + late final jni.JObjType + $type = type; + + CreateCredentialProviderConfigurationException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialProviderConfigurationException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialProviderConfigurationExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/CreateCredentialProviderConfigurationException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialProviderConfigurationException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialProviderConfigurationException_Companion + get Companion => + const $CreateCredentialProviderConfigurationException_CompanionType() + .fromRef(jni.Jni.accessors + .getStaticField(_class.reference, _id_Companion, + jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_CREATE_CREDENTIAL_PROVIDER_CONFIGURATION_EXCEPTION + static const TYPE_CREATE_CREDENTIAL_PROVIDER_CONFIGURATION_EXCEPTION = + r"""androidx.credentials.TYPE_CREATE_CREDENTIAL_PROVIDER_CONFIGURATION_EXCEPTION"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialProviderConfigurationException.new7( + jni.JObject charSequence, + ) { + return CreateCredentialProviderConfigurationException.fromRef( + jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialProviderConfigurationException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialProviderConfigurationException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialProviderConfigurationException.new9() { + return CreateCredentialProviderConfigurationException.fromRef(jni + .Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $CreateCredentialProviderConfigurationExceptionType + extends jni.JObjType { + const $CreateCredentialProviderConfigurationExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialProviderConfigurationException;"; + + @override + CreateCredentialProviderConfigurationException fromRef(jni.JObjectPtr ref) => + CreateCredentialProviderConfigurationException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => + ($CreateCredentialProviderConfigurationExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialProviderConfigurationExceptionType) && + other is $CreateCredentialProviderConfigurationExceptionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialUnknownException$Companion +class CreateCredentialUnknownException_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + CreateCredentialUnknownException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialUnknownException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialUnknownException_CompanionType(); + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialUnknownException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialUnknownException_Companion.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreateCredentialUnknownException_CompanionType + extends jni.JObjType { + const $CreateCredentialUnknownException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialUnknownException$Companion;"; + + @override + CreateCredentialUnknownException_Companion fromRef(jni.JObjectPtr ref) => + CreateCredentialUnknownException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreateCredentialUnknownException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreateCredentialUnknownException_CompanionType) && + other is $CreateCredentialUnknownException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialUnknownException +class CreateCredentialUnknownException extends CreateCredentialException { + @override + late final jni.JObjType $type = type; + + CreateCredentialUnknownException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialUnknownException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialUnknownExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/CreateCredentialUnknownException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialUnknownException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialUnknownException_Companion get Companion => + const $CreateCredentialUnknownException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_CREATE_CREDENTIAL_UNKNOWN_EXCEPTION + static const TYPE_CREATE_CREDENTIAL_UNKNOWN_EXCEPTION = + r"""android.credentials.CreateCredentialException.TYPE_UNKNOWN"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialUnknownException.new7( + jni.JObject charSequence, + ) { + return CreateCredentialUnknownException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new7, [charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialUnknownException.new8( + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialUnknownException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new8, [ + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_new9 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialUnknownException.new9() { + return CreateCredentialUnknownException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new9, []).object); + } +} + +final class $CreateCredentialUnknownExceptionType + extends jni.JObjType { + const $CreateCredentialUnknownExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialUnknownException;"; + + @override + CreateCredentialUnknownException fromRef(jni.JObjectPtr ref) => + CreateCredentialUnknownException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($CreateCredentialUnknownExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialUnknownExceptionType) && + other is $CreateCredentialUnknownExceptionType; + } +} + +/// from: androidx.credentials.exceptions.CreateCredentialCustomException +class CreateCredentialCustomException extends CreateCredentialException { + @override + late final jni.JObjType $type = type; + + CreateCredentialCustomException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/CreateCredentialCustomException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreateCredentialCustomExceptionType(); + static final _id_new5 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCustomException.new5( + jni.JString string, + jni.JObject charSequence, + ) { + return CreateCredentialCustomException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new5, + [string.reference, charSequence.reference]).object); + } + + static final _id_new6 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCustomException.new6( + jni.JString string, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreateCredentialCustomException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new6, [ + string.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreateCredentialCustomException.new1( + jni.JString string, + ) { + return CreateCredentialCustomException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } +} + +final class $CreateCredentialCustomExceptionType + extends jni.JObjType { + const $CreateCredentialCustomExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/CreateCredentialCustomException;"; + + @override + CreateCredentialCustomException fromRef(jni.JObjectPtr ref) => + CreateCredentialCustomException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($CreateCredentialCustomExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreateCredentialCustomExceptionType) && + other is $CreateCredentialCustomExceptionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialDomException$Companion +class CreatePublicKeyCredentialDomException_Companion extends jni.JObject { + @override + late final jni.JObjType + $type = type; + + CreatePublicKeyCredentialDomException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialDomException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialDomException_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/CreateCredentialException;"); + + /// from: public final androidx.credentials.exceptions.CreateCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $CreateCredentialExceptionType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialDomException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialDomException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreatePublicKeyCredentialDomException_CompanionType + extends jni.JObjType { + const $CreatePublicKeyCredentialDomException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialDomException$Companion;"; + + @override + CreatePublicKeyCredentialDomException_Companion fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialDomException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreatePublicKeyCredentialDomException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreatePublicKeyCredentialDomException_CompanionType) && + other is $CreatePublicKeyCredentialDomException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialDomException +class CreatePublicKeyCredentialDomException + extends CreatePublicKeyCredentialException { + @override + late final jni.JObjType $type = type; + + CreatePublicKeyCredentialDomException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialDomException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialDomExceptionType(); + static final _id_Companion1 = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialDomException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialDomException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreatePublicKeyCredentialDomException_Companion get Companion1 => + const $CreatePublicKeyCredentialDomException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion1, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_CREATE_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION + static const TYPE_CREATE_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION = + r"""androidx.credentials.TYPE_CREATE_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION"""; + + static final _id_new7 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Landroidx/credentials/exceptions/domerrors/DomError;Ljava/lang/CharSequence;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialDomException.new7( + jni.JObject domError, + jni.JObject charSequence, + ) { + return CreatePublicKeyCredentialDomException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new7, + [domError.reference, charSequence.reference]).object); + } + + static final _id_new8 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Landroidx/credentials/exceptions/domerrors/DomError;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialDomException.new8( + jni.JObject domError, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialDomException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new8, [ + domError.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getDomError = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getDomError", + r"()Landroidx/credentials/exceptions/domerrors/DomError;"); + + /// from: public final androidx.credentials.exceptions.domerrors.DomError getDomError() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDomError() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getDomError, jni.JniCallType.objectType, []).object); + } + + static final _id_new9 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Landroidx/credentials/exceptions/domerrors/DomError;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialDomException.new9( + jni.JObject domError, + ) { + return CreatePublicKeyCredentialDomException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new9, [domError.reference]).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/CreateCredentialException;"); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $CreateCredentialExceptionType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } +} + +final class $CreatePublicKeyCredentialDomExceptionType + extends jni.JObjType { + const $CreatePublicKeyCredentialDomExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialDomException;"; + + @override + CreatePublicKeyCredentialDomException fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialDomException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreatePublicKeyCredentialExceptionType(); + + @override + final superCount = 5; + + @override + int get hashCode => ($CreatePublicKeyCredentialDomExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreatePublicKeyCredentialDomExceptionType) && + other is $CreatePublicKeyCredentialDomExceptionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException$Companion +class CreatePublicKeyCredentialException_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + CreatePublicKeyCredentialException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialException_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/CreateCredentialException;"); + + /// from: public final androidx.credentials.exceptions.CreateCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + CreateCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $CreateCredentialExceptionType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $CreatePublicKeyCredentialException_CompanionType + extends jni.JObjType { + const $CreatePublicKeyCredentialException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialException$Companion;"; + + @override + CreatePublicKeyCredentialException_Companion fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($CreatePublicKeyCredentialException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($CreatePublicKeyCredentialException_CompanionType) && + other is $CreatePublicKeyCredentialException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException +class CreatePublicKeyCredentialException extends CreateCredentialException { + @override + late final jni.JObjType $type = type; + + CreatePublicKeyCredentialException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialException"); + + /// The type which includes information such as the signature of this class. + static const type = $CreatePublicKeyCredentialExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static CreatePublicKeyCredentialException_Companion get Companion => + const $CreatePublicKeyCredentialException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + static final _id_new5 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Ljava/lang/String;Ljava/lang/CharSequence;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialException.new5( + jni.JString string, + jni.JObject charSequence, + ) { + return CreatePublicKeyCredentialException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new5, + [string.reference, charSequence.reference]).object); + } + + static final _id_new6 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Ljava/lang/String;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (java.lang.String string, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialException.new6( + jni.JString string, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return CreatePublicKeyCredentialException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new6, [ + string.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getType = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getType", r"()Ljava/lang/String;"); + + /// from: public java.lang.String getType() + /// The returned object must be released after use, by calling the [release] method. + jni.JString getType() { + return const jni.JStringType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getType, jni.JniCallType.objectType, []).object); + } + + static final _id_new1 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Ljava/lang/String;)V"); + + /// from: public void (java.lang.String string) + /// The returned object must be released after use, by calling the [release] method. + factory CreatePublicKeyCredentialException.new1( + jni.JString string, + ) { + return CreatePublicKeyCredentialException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new1, [string.reference]).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/CreateCredentialException;"); + + /// from: static public final androidx.credentials.exceptions.CreateCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + static CreateCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $CreateCredentialExceptionType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } +} + +final class $CreatePublicKeyCredentialExceptionType + extends jni.JObjType { + const $CreatePublicKeyCredentialExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/CreatePublicKeyCredentialException;"; + + @override + CreatePublicKeyCredentialException fromRef(jni.JObjectPtr ref) => + CreatePublicKeyCredentialException.fromRef(ref); + + @override + jni.JObjType get superType => const $CreateCredentialExceptionType(); + + @override + final superCount = 4; + + @override + int get hashCode => ($CreatePublicKeyCredentialExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($CreatePublicKeyCredentialExceptionType) && + other is $CreatePublicKeyCredentialExceptionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialDomException$Companion +class GetPublicKeyCredentialDomException_Companion extends jni.JObject { + @override + late final jni.JObjType $type = + type; + + GetPublicKeyCredentialDomException_Companion.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/GetPublicKeyCredentialDomException$Companion"); + + /// The type which includes information such as the signature of this class. + static const type = $GetPublicKeyCredentialDomException_CompanionType(); + static final _id_createFrom = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/GetCredentialException;"); + + /// from: public final androidx.credentials.exceptions.GetCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + GetCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $GetCredentialExceptionType().fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Lkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialDomException_Companion( + jni.JObject defaultConstructorMarker, + ) { + return GetPublicKeyCredentialDomException_Companion.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new0, + [defaultConstructorMarker.reference]).object); + } +} + +final class $GetPublicKeyCredentialDomException_CompanionType + extends jni.JObjType { + const $GetPublicKeyCredentialDomException_CompanionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/GetPublicKeyCredentialDomException$Companion;"; + + @override + GetPublicKeyCredentialDomException_Companion fromRef(jni.JObjectPtr ref) => + GetPublicKeyCredentialDomException_Companion.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => + ($GetPublicKeyCredentialDomException_CompanionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == + ($GetPublicKeyCredentialDomException_CompanionType) && + other is $GetPublicKeyCredentialDomException_CompanionType; + } +} + +/// from: androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialDomException +class GetPublicKeyCredentialDomException extends jni.JObject { + @override + late final jni.JObjType $type = type; + + GetPublicKeyCredentialDomException.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass( + r"androidx/credentials/exceptions/publickeycredential/GetPublicKeyCredentialDomException"); + + /// The type which includes information such as the signature of this class. + static const type = $GetPublicKeyCredentialDomExceptionType(); + static final _id_Companion = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"Companion", + r"Landroidx/credentials/exceptions/publickeycredential/GetPublicKeyCredentialDomException$Companion;", + ); + + /// from: static public final androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialDomException$Companion Companion + /// The returned object must be released after use, by calling the [release] method. + static GetPublicKeyCredentialDomException_Companion get Companion => + const $GetPublicKeyCredentialDomException_CompanionType().fromRef(jni + .Jni.accessors + .getStaticField( + _class.reference, _id_Companion, jni.JniCallType.objectType) + .object); + + /// from: static public final java.lang.String TYPE_GET_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION + static const TYPE_GET_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION = + r"""androidx.credentials.TYPE_GET_PUBLIC_KEY_CREDENTIAL_DOM_EXCEPTION"""; + + static final _id_new0 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Landroidx/credentials/exceptions/domerrors/DomError;Ljava/lang/CharSequence;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError, java.lang.CharSequence charSequence) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialDomException( + jni.JObject domError, + jni.JObject charSequence, + ) { + return GetPublicKeyCredentialDomException.fromRef(jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, + [domError.reference, charSequence.reference]).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"", + r"(Landroidx/credentials/exceptions/domerrors/DomError;Ljava/lang/CharSequence;ILkotlin/jvm/internal/DefaultConstructorMarker;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError, java.lang.CharSequence charSequence, int i, kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialDomException.new1( + jni.JObject domError, + jni.JObject charSequence, + int i, + jni.JObject defaultConstructorMarker, + ) { + return GetPublicKeyCredentialDomException.fromRef( + jni.Jni.accessors.newObjectWithArgs(_class.reference, _id_new1, [ + domError.reference, + charSequence.reference, + jni.JValueInt(i), + defaultConstructorMarker.reference + ]).object); + } + + static final _id_getDomError = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getDomError", + r"()Landroidx/credentials/exceptions/domerrors/DomError;"); + + /// from: public final androidx.credentials.exceptions.domerrors.DomError getDomError() + /// The returned object must be released after use, by calling the [release] method. + jni.JObject getDomError() { + return const jni.JObjectType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getDomError, jni.JniCallType.objectType, []).object); + } + + static final _id_new2 = jni.Jni.accessors.getMethodIDOf(_class.reference, + r"", r"(Landroidx/credentials/exceptions/domerrors/DomError;)V"); + + /// from: public void (androidx.credentials.exceptions.domerrors.DomError domError) + /// The returned object must be released after use, by calling the [release] method. + factory GetPublicKeyCredentialDomException.new2( + jni.JObject domError, + ) { + return GetPublicKeyCredentialDomException.fromRef(jni.Jni.accessors + .newObjectWithArgs( + _class.reference, _id_new2, [domError.reference]).object); + } + + static final _id_createFrom = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"createFrom", + r"(Ljava/lang/String;Ljava/lang/String;)Landroidx/credentials/exceptions/GetCredentialException;"); + + /// from: static public final androidx.credentials.exceptions.GetCredentialException createFrom(java.lang.String string, java.lang.String string1) + /// The returned object must be released after use, by calling the [release] method. + static GetCredentialException createFrom( + jni.JString string, + jni.JString string1, + ) { + return const $GetCredentialExceptionType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_createFrom, + jni.JniCallType.objectType, + [string.reference, string1.reference]).object); + } +} + +final class $GetPublicKeyCredentialDomExceptionType + extends jni.JObjType { + const $GetPublicKeyCredentialDomExceptionType(); + + @override + String get signature => + r"Landroidx/credentials/exceptions/publickeycredential/GetPublicKeyCredentialDomException;"; + + @override + GetPublicKeyCredentialDomException fromRef(jni.JObjectPtr ref) => + GetPublicKeyCredentialDomException.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($GetPublicKeyCredentialDomExceptionType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($GetPublicKeyCredentialDomExceptionType) && + other is $GetPublicKeyCredentialDomExceptionType; + } +} + +/// from: com.google.android.gms.fido.Fido +class Fido extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Fido.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = jni.Jni.findJClass(r"com/google/android/gms/fido/Fido"); + + /// The type which includes information such as the signature of this class. + static const type = $FidoType(); + + /// from: static public final java.lang.String KEY_RESPONSE_EXTRA + static const KEY_RESPONSE_EXTRA = r"""RESPONSE_EXTRA"""; + + /// from: static public final java.lang.String FIDO2_KEY_RESPONSE_EXTRA + static const FIDO2_KEY_RESPONSE_EXTRA = r"""FIDO2_RESPONSE_EXTRA"""; + + /// from: static public final java.lang.String FIDO2_KEY_ERROR_EXTRA + static const FIDO2_KEY_ERROR_EXTRA = r"""FIDO2_ERROR_EXTRA"""; + + /// from: static public final java.lang.String FIDO2_KEY_CREDENTIAL_EXTRA + static const FIDO2_KEY_CREDENTIAL_EXTRA = r"""FIDO2_CREDENTIAL_EXTRA"""; + + static final _id_zza = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"zza", + r"Lcom/google/android/gms/common/api/Api$ClientKey;", + ); + + /// from: static public final com.google.android.gms.common.api.Api$ClientKey zza + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject get zza => + const jni.JObjectType().fromRef(jni.Jni.accessors + .getStaticField(_class.reference, _id_zza, jni.JniCallType.objectType) + .object); + + static final _id_zzb = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"zzb", + r"Lcom/google/android/gms/common/api/Api;", + ); + + /// from: static public final com.google.android.gms.common.api.Api zzb + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject get zzb => + const jni.JObjectType().fromRef(jni.Jni.accessors + .getStaticField(_class.reference, _id_zzb, jni.JniCallType.objectType) + .object); + + static final _id_zzc = jni.Jni.accessors.getStaticFieldIDOf( + _class.reference, + r"zzc", + r"Lcom/google/android/gms/internal/fido/zzaa;", + ); + + /// from: static public final com.google.android.gms.internal.fido.zzaa zzc + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject get zzc => + const jni.JObjectType().fromRef(jni.Jni.accessors + .getStaticField(_class.reference, _id_zzc, jni.JniCallType.objectType) + .object); + + static final _id_getFido2ApiClient = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"getFido2ApiClient", + r"(Landroid/app/Activity;)Lcom/google/android/gms/fido/fido2/Fido2ApiClient;"); + + /// from: static public com.google.android.gms.fido.fido2.Fido2ApiClient getFido2ApiClient(android.app.Activity activity) + /// The returned object must be released after use, by calling the [release] method. + static Fido2ApiClient getFido2ApiClient( + Activity activity, + ) { + return const $Fido2ApiClientType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs(_class.reference, _id_getFido2ApiClient, + jni.JniCallType.objectType, [activity.reference]).object); + } + + static final _id_getFido2ApiClient1 = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"getFido2ApiClient", + r"(Landroid/content/Context;)Lcom/google/android/gms/fido/fido2/Fido2ApiClient;"); + + /// from: static public com.google.android.gms.fido.fido2.Fido2ApiClient getFido2ApiClient(android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + static Fido2ApiClient getFido2ApiClient1( + Context context, + ) { + return const $Fido2ApiClientType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs(_class.reference, _id_getFido2ApiClient1, + jni.JniCallType.objectType, [context.reference]).object); + } + + static final _id_getFido2PrivilegedApiClient = jni.Jni.accessors + .getStaticMethodIDOf(_class.reference, r"getFido2PrivilegedApiClient", + r"(Landroid/app/Activity;)Lcom/google/android/gms/fido/fido2/Fido2PrivilegedApiClient;"); + + /// from: static public com.google.android.gms.fido.fido2.Fido2PrivilegedApiClient getFido2PrivilegedApiClient(android.app.Activity activity) + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject getFido2PrivilegedApiClient( + Activity activity, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_getFido2PrivilegedApiClient, + jni.JniCallType.objectType, + [activity.reference]).object); + } + + static final _id_getFido2PrivilegedApiClient1 = jni.Jni.accessors + .getStaticMethodIDOf(_class.reference, r"getFido2PrivilegedApiClient", + r"(Landroid/content/Context;)Lcom/google/android/gms/fido/fido2/Fido2PrivilegedApiClient;"); + + /// from: static public com.google.android.gms.fido.fido2.Fido2PrivilegedApiClient getFido2PrivilegedApiClient(android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject getFido2PrivilegedApiClient1( + Context context, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs( + _class.reference, + _id_getFido2PrivilegedApiClient1, + jni.JniCallType.objectType, + [context.reference]).object); + } + + static final _id_getU2fApiClient = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"getU2fApiClient", + r"(Landroid/app/Activity;)Lcom/google/android/gms/fido/u2f/U2fApiClient;"); + + /// from: static public com.google.android.gms.fido.u2f.U2fApiClient getU2fApiClient(android.app.Activity activity) + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject getU2fApiClient( + Activity activity, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs(_class.reference, _id_getU2fApiClient, + jni.JniCallType.objectType, [activity.reference]).object); + } + + static final _id_getU2fApiClient1 = jni.Jni.accessors.getStaticMethodIDOf( + _class.reference, + r"getU2fApiClient", + r"(Landroid/content/Context;)Lcom/google/android/gms/fido/u2f/U2fApiClient;"); + + /// from: static public com.google.android.gms.fido.u2f.U2fApiClient getU2fApiClient(android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + static jni.JObject getU2fApiClient1( + Context context, + ) { + return const jni.JObjectType().fromRef(jni.Jni.accessors + .callStaticMethodWithArgs(_class.reference, _id_getU2fApiClient1, + jni.JniCallType.objectType, [context.reference]).object); + } +} + +final class $FidoType extends jni.JObjType { + const $FidoType(); + + @override + String get signature => r"Lcom/google/android/gms/fido/Fido;"; + + @override + Fido fromRef(jni.JObjectPtr ref) => Fido.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($FidoType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($FidoType) && other is $FidoType; + } +} + +/// from: com.google.android.gms.fido.fido2.Fido2ApiClient +class Fido2ApiClient extends jni.JObject { + @override + late final jni.JObjType $type = type; + + Fido2ApiClient.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"com/google/android/gms/fido/fido2/Fido2ApiClient"); + + /// The type which includes information such as the signature of this class. + static const type = $Fido2ApiClientType(); + static final _id_getRegisterIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getRegisterIntent", + r"(Lcom/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task getRegisterIntent(com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialCreationOptions publicKeyCredentialCreationOptions) + /// The returned object must be released after use, by calling the [release] method. + Task getRegisterIntent( + jni.JObject publicKeyCredentialCreationOptions, + ) { + return const $TaskType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_getRegisterIntent, + jni.JniCallType.objectType, + [publicKeyCredentialCreationOptions.reference]).object); + } + + static final _id_getRegisterPendingIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getRegisterPendingIntent", + r"(Lcom/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task getRegisterPendingIntent(com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialCreationOptions publicKeyCredentialCreationOptions) + /// The returned object must be released after use, by calling the [release] method. + Task getRegisterPendingIntent( + jni.JObject publicKeyCredentialCreationOptions, + ) { + return const $TaskType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_getRegisterPendingIntent, + jni.JniCallType.objectType, + [publicKeyCredentialCreationOptions.reference]).object); + } + + static final _id_getSignIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSignIntent", + r"(Lcom/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task getSignIntent(com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialRequestOptions publicKeyCredentialRequestOptions) + /// The returned object must be released after use, by calling the [release] method. + Task getSignIntent( + jni.JObject publicKeyCredentialRequestOptions, + ) { + return const $TaskType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_getSignIntent, + jni.JniCallType.objectType, + [publicKeyCredentialRequestOptions.reference]).object); + } + + static final _id_getSignPendingIntent = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"getSignPendingIntent", + r"(Lcom/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task getSignPendingIntent(com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialRequestOptions publicKeyCredentialRequestOptions) + /// The returned object must be released after use, by calling the [release] method. + Task getSignPendingIntent( + jni.JObject publicKeyCredentialRequestOptions, + ) { + return const $TaskType(jni.JObjectType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_getSignPendingIntent, + jni.JniCallType.objectType, + [publicKeyCredentialRequestOptions.reference]).object); + } + + static final _id_isUserVerifyingPlatformAuthenticatorAvailable = + jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"isUserVerifyingPlatformAuthenticatorAvailable", + r"()Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task isUserVerifyingPlatformAuthenticatorAvailable() + /// The returned object must be released after use, by calling the [release] method. + Task isUserVerifyingPlatformAuthenticatorAvailable() { + return const $TaskType(jni.JBooleanType()).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_isUserVerifyingPlatformAuthenticatorAvailable, + jni.JniCallType.objectType, []).object); + } + + static final _id_new0 = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"", r"(Landroid/app/Activity;)V"); + + /// from: public void (android.app.Activity activity) + /// The returned object must be released after use, by calling the [release] method. + factory Fido2ApiClient( + Activity activity, + ) { + return Fido2ApiClient.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new0, [activity.reference]).object); + } + + static final _id_new1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"", r"(Landroid/content/Context;)V"); + + /// from: public void (android.content.Context context) + /// The returned object must be released after use, by calling the [release] method. + factory Fido2ApiClient.new1( + Context context, + ) { + return Fido2ApiClient.fromRef(jni.Jni.accessors.newObjectWithArgs( + _class.reference, _id_new1, [context.reference]).object); + } +} + +final class $Fido2ApiClientType extends jni.JObjType { + const $Fido2ApiClientType(); + + @override + String get signature => r"Lcom/google/android/gms/fido/fido2/Fido2ApiClient;"; + + @override + Fido2ApiClient fromRef(jni.JObjectPtr ref) => Fido2ApiClient.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($Fido2ApiClientType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($Fido2ApiClientType) && + other is $Fido2ApiClientType; + } +} + +/// from: com.google.android.gms.tasks.Task +class Task<$TResult extends jni.JObject> extends jni.JObject { + @override + late final jni.JObjType> $type = type(TResult); + + final jni.JObjType<$TResult> TResult; + + Task.fromRef( + this.TResult, + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"com/google/android/gms/tasks/Task"); + + /// The type which includes information such as the signature of this class. + static $TaskType<$TResult> type<$TResult extends jni.JObject>( + jni.JObjType<$TResult> TResult, + ) { + return $TaskType( + TResult, + ); + } + + static final _id_addOnCanceledListener = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCanceledListener", + r"(Lcom/google/android/gms/tasks/OnCanceledListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCanceledListener(com.google.android.gms.tasks.OnCanceledListener onCanceledListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCanceledListener( + jni.JObject onCanceledListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCanceledListener, + jni.JniCallType.objectType, + [onCanceledListener.reference]).object); + } + + static final _id_addOnCanceledListener1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCanceledListener", + r"(Landroid/app/Activity;Lcom/google/android/gms/tasks/OnCanceledListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCanceledListener(android.app.Activity activity, com.google.android.gms.tasks.OnCanceledListener onCanceledListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCanceledListener1( + Activity activity, + jni.JObject onCanceledListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCanceledListener1, + jni.JniCallType.objectType, + [activity.reference, onCanceledListener.reference]).object); + } + + static final _id_addOnCanceledListener2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCanceledListener", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/OnCanceledListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCanceledListener(java.util.concurrent.Executor executor, com.google.android.gms.tasks.OnCanceledListener onCanceledListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCanceledListener2( + jni.JObject executor, + jni.JObject onCanceledListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCanceledListener2, + jni.JniCallType.objectType, + [executor.reference, onCanceledListener.reference]).object); + } + + static final _id_addOnCompleteListener = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCompleteListener", + r"(Lcom/google/android/gms/tasks/OnCompleteListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCompleteListener(com.google.android.gms.tasks.OnCompleteListener onCompleteListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCompleteListener( + jni.JObject onCompleteListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCompleteListener, + jni.JniCallType.objectType, + [onCompleteListener.reference]).object); + } + + static final _id_addOnCompleteListener1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCompleteListener", + r"(Landroid/app/Activity;Lcom/google/android/gms/tasks/OnCompleteListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCompleteListener(android.app.Activity activity, com.google.android.gms.tasks.OnCompleteListener onCompleteListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCompleteListener1( + Activity activity, + jni.JObject onCompleteListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCompleteListener1, + jni.JniCallType.objectType, + [activity.reference, onCompleteListener.reference]).object); + } + + static final _id_addOnCompleteListener2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnCompleteListener", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/OnCompleteListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task addOnCompleteListener(java.util.concurrent.Executor executor, com.google.android.gms.tasks.OnCompleteListener onCompleteListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnCompleteListener2( + jni.JObject executor, + jni.JObject onCompleteListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnCompleteListener2, + jni.JniCallType.objectType, + [executor.reference, onCompleteListener.reference]).object); + } + + static final _id_addOnFailureListener = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnFailureListener", + r"(Lcom/google/android/gms/tasks/OnFailureListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnFailureListener(com.google.android.gms.tasks.OnFailureListener onFailureListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnFailureListener( + OnFailureListener onFailureListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnFailureListener, + jni.JniCallType.objectType, + [onFailureListener.reference]).object); + } + + static final _id_addOnFailureListener1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnFailureListener", + r"(Landroid/app/Activity;Lcom/google/android/gms/tasks/OnFailureListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnFailureListener(android.app.Activity activity, com.google.android.gms.tasks.OnFailureListener onFailureListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnFailureListener1( + Activity activity, + OnFailureListener onFailureListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnFailureListener1, + jni.JniCallType.objectType, + [activity.reference, onFailureListener.reference]).object); + } + + static final _id_addOnFailureListener2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnFailureListener", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/OnFailureListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnFailureListener(java.util.concurrent.Executor executor, com.google.android.gms.tasks.OnFailureListener onFailureListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnFailureListener2( + jni.JObject executor, + OnFailureListener onFailureListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnFailureListener2, + jni.JniCallType.objectType, + [executor.reference, onFailureListener.reference]).object); + } + + static final _id_addOnSuccessListener = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnSuccessListener", + r"(Lcom/google/android/gms/tasks/OnSuccessListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnSuccessListener(com.google.android.gms.tasks.OnSuccessListener onSuccessListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnSuccessListener( + OnSuccessListener<$TResult> onSuccessListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnSuccessListener, + jni.JniCallType.objectType, + [onSuccessListener.reference]).object); + } + + static final _id_addOnSuccessListener1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnSuccessListener", + r"(Landroid/app/Activity;Lcom/google/android/gms/tasks/OnSuccessListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnSuccessListener(android.app.Activity activity, com.google.android.gms.tasks.OnSuccessListener onSuccessListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnSuccessListener1( + Activity activity, + OnSuccessListener<$TResult> onSuccessListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnSuccessListener1, + jni.JniCallType.objectType, + [activity.reference, onSuccessListener.reference]).object); + } + + static final _id_addOnSuccessListener2 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"addOnSuccessListener", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/OnSuccessListener;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public abstract com.google.android.gms.tasks.Task addOnSuccessListener(java.util.concurrent.Executor executor, com.google.android.gms.tasks.OnSuccessListener onSuccessListener) + /// The returned object must be released after use, by calling the [release] method. + Task<$TResult> addOnSuccessListener2( + jni.JObject executor, + OnSuccessListener<$TResult> onSuccessListener, + ) { + return $TaskType(TResult).fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, + _id_addOnSuccessListener2, + jni.JniCallType.objectType, + [executor.reference, onSuccessListener.reference]).object); + } + + static final _id_continueWith = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"continueWith", + r"(Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task continueWith(com.google.android.gms.tasks.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + continueWith<$TContinuationResult extends jni.JObject>( + jni.JObject continuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_continueWith, + jni.JniCallType.objectType, [continuation.reference]).object); + } + + static final _id_continueWith1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"continueWith", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task continueWith(java.util.concurrent.Executor executor, com.google.android.gms.tasks.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + continueWith1<$TContinuationResult extends jni.JObject>( + jni.JObject executor, + jni.JObject continuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_continueWith1, + jni.JniCallType.objectType, + [executor.reference, continuation.reference]).object); + } + + static final _id_continueWithTask = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"continueWithTask", + r"(Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task continueWithTask(com.google.android.gms.tasks.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + continueWithTask<$TContinuationResult extends jni.JObject>( + jni.JObject continuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs(reference, _id_continueWithTask, + jni.JniCallType.objectType, [continuation.reference]).object); + } + + static final _id_continueWithTask1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"continueWithTask", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task continueWithTask(java.util.concurrent.Executor executor, com.google.android.gms.tasks.Continuation continuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + continueWithTask1<$TContinuationResult extends jni.JObject>( + jni.JObject executor, + jni.JObject continuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_continueWithTask1, + jni.JniCallType.objectType, + [executor.reference, continuation.reference]).object); + } + + static final _id_onSuccessTask = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onSuccessTask", + r"(Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task onSuccessTask(com.google.android.gms.tasks.SuccessContinuation successContinuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + onSuccessTask<$TContinuationResult extends jni.JObject>( + jni.JObject successContinuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_onSuccessTask, + jni.JniCallType.objectType, + [successContinuation.reference]).object); + } + + static final _id_onSuccessTask1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, + r"onSuccessTask", + r"(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task;"); + + /// from: public com.google.android.gms.tasks.Task onSuccessTask(java.util.concurrent.Executor executor, com.google.android.gms.tasks.SuccessContinuation successContinuation) + /// The returned object must be released after use, by calling the [release] method. + Task<$TContinuationResult> + onSuccessTask1<$TContinuationResult extends jni.JObject>( + jni.JObject executor, + jni.JObject successContinuation, { + required jni.JObjType<$TContinuationResult> TContinuationResult, + }) { + return $TaskType(TContinuationResult).fromRef(jni.Jni.accessors + .callMethodWithArgs( + reference, + _id_onSuccessTask1, + jni.JniCallType.objectType, + [executor.reference, successContinuation.reference]).object); + } + + static final _id_getException = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getException", r"()Ljava/lang/Exception;"); + + /// from: public abstract java.lang.Exception getException() + /// The returned object must be released after use, by calling the [release] method. + Exception getException() { + return const $ExceptionType().fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getException, jni.JniCallType.objectType, []).object); + } + + static final _id_getResult = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"getResult", r"()Ljava/lang/Object;"); + + /// from: public abstract TResult getResult() + /// The returned object must be released after use, by calling the [release] method. + $TResult getResult() { + return TResult.fromRef(jni.Jni.accessors.callMethodWithArgs( + reference, _id_getResult, jni.JniCallType.objectType, []).object); + } + + static final _id_getResult1 = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"getResult", r"(Ljava/lang/Class;)Ljava/lang/Object;"); + + /// from: public abstract TResult getResult(java.lang.Class class) + /// The returned object must be released after use, by calling the [release] method. + $TResult getResult1<$X extends jni.JObject>( + jni.JObject class0, { + required jni.JObjType<$X> X, + }) { + return TResult.fromRef(jni.Jni.accessors.callMethodWithArgs(reference, + _id_getResult1, jni.JniCallType.objectType, [class0.reference]).object); + } + + static final _id_new0 = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"", r"()V"); + + /// from: public void () + /// The returned object must be released after use, by calling the [release] method. + factory Task({ + required jni.JObjType<$TResult> TResult, + }) { + return Task.fromRef( + TResult, + jni.Jni.accessors + .newObjectWithArgs(_class.reference, _id_new0, []).object); + } + + static final _id_isCanceled = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isCanceled", r"()Z"); + + /// from: public abstract boolean isCanceled() + bool isCanceled() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isCanceled, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isComplete = + jni.Jni.accessors.getMethodIDOf(_class.reference, r"isComplete", r"()Z"); + + /// from: public abstract boolean isComplete() + bool isComplete() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isComplete, jni.JniCallType.booleanType, []).boolean; + } + + static final _id_isSuccessful = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"isSuccessful", r"()Z"); + + /// from: public abstract boolean isSuccessful() + bool isSuccessful() { + return jni.Jni.accessors.callMethodWithArgs( + reference, _id_isSuccessful, jni.JniCallType.booleanType, []).boolean; + } +} + +final class $TaskType<$TResult extends jni.JObject> + extends jni.JObjType> { + final jni.JObjType<$TResult> TResult; + + const $TaskType( + this.TResult, + ); + + @override + String get signature => r"Lcom/google/android/gms/tasks/Task;"; + + @override + Task<$TResult> fromRef(jni.JObjectPtr ref) => Task.fromRef(TResult, ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => Object.hash($TaskType, TResult); + + @override + bool operator ==(Object other) { + return other.runtimeType == ($TaskType<$TResult>) && + other is $TaskType<$TResult> && + TResult == other.TResult; + } +} + +/// from: com.google.android.gms.tasks.OnSuccessListener +class OnSuccessListener<$TResult extends jni.JObject> extends jni.JObject { + @override + late final jni.JObjType> $type = type(TResult); + + final jni.JObjType<$TResult> TResult; + + OnSuccessListener.fromRef( + this.TResult, + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"com/google/android/gms/tasks/OnSuccessListener"); + + /// The type which includes information such as the signature of this class. + static $OnSuccessListenerType<$TResult> type<$TResult extends jni.JObject>( + jni.JObjType<$TResult> TResult, + ) { + return $OnSuccessListenerType( + TResult, + ); + } + + static final _id_onSuccess = jni.Jni.accessors + .getMethodIDOf(_class.reference, r"onSuccess", r"(Ljava/lang/Object;)V"); + + /// from: public abstract void onSuccess(TResult object) + void onSuccess( + $TResult object, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onSuccess, + jni.JniCallType.voidType, [object.reference]).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"onSuccess(Ljava/lang/Object;)V") { + _$impls[$p]!.onSuccess( + $a[0].castTo(_$impls[$p]!.TResult, releaseOriginal: true), + ); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory OnSuccessListener.implement( + $OnSuccessListenerImpl<$TResult> $impl, + ) { + final $p = ReceivePort(); + final $x = OnSuccessListener.fromRef( + $impl.TResult, + ProtectedJniExtensions.newPortProxy( + r"com.google.android.gms.tasks.OnSuccessListener", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $OnSuccessListenerImpl<$TResult extends jni.JObject> { + factory $OnSuccessListenerImpl({ + required jni.JObjType<$TResult> TResult, + required void Function($TResult object) onSuccess, + }) = _$OnSuccessListenerImpl; + + jni.JObjType<$TResult> get TResult; + + void onSuccess($TResult object); +} + +class _$OnSuccessListenerImpl<$TResult extends jni.JObject> + implements $OnSuccessListenerImpl<$TResult> { + _$OnSuccessListenerImpl({ + required this.TResult, + required void Function($TResult object) onSuccess, + }) : _onSuccess = onSuccess; + + @override + final jni.JObjType<$TResult> TResult; + + final void Function($TResult object) _onSuccess; + + void onSuccess($TResult object) { + return _onSuccess(object); + } +} + +final class $OnSuccessListenerType<$TResult extends jni.JObject> + extends jni.JObjType> { + final jni.JObjType<$TResult> TResult; + + const $OnSuccessListenerType( + this.TResult, + ); + + @override + String get signature => r"Lcom/google/android/gms/tasks/OnSuccessListener;"; + + @override + OnSuccessListener<$TResult> fromRef(jni.JObjectPtr ref) => + OnSuccessListener.fromRef(TResult, ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => Object.hash($OnSuccessListenerType, TResult); + + @override + bool operator ==(Object other) { + return other.runtimeType == ($OnSuccessListenerType<$TResult>) && + other is $OnSuccessListenerType<$TResult> && + TResult == other.TResult; + } +} + +/// from: com.google.android.gms.tasks.OnFailureListener +class OnFailureListener extends jni.JObject { + @override + late final jni.JObjType $type = type; + + OnFailureListener.fromRef( + jni.JObjectPtr ref, + ) : super.fromRef(ref); + + static final _class = + jni.Jni.findJClass(r"com/google/android/gms/tasks/OnFailureListener"); + + /// The type which includes information such as the signature of this class. + static const type = $OnFailureListenerType(); + static final _id_onFailure = jni.Jni.accessors.getMethodIDOf( + _class.reference, r"onFailure", r"(Ljava/lang/Exception;)V"); + + /// from: public abstract void onFailure(java.lang.Exception exception) + void onFailure( + Exception exception, + ) { + return jni.Jni.accessors.callMethodWithArgs(reference, _id_onFailure, + jni.JniCallType.voidType, [exception.reference]).check(); + } + + /// Maps a specific port to the implemented interface. + static final Map _$impls = {}; + ReceivePort? _$p; + + static jni.JObjectPtr _$invoke( + int port, + jni.JObjectPtr descriptor, + jni.JObjectPtr args, + ) { + return _$invokeMethod( + port, + $MethodInvocation.fromAddresses( + 0, + descriptor.address, + args.address, + ), + ); + } + + static final ffi.Pointer< + ffi.NativeFunction< + jni.JObjectPtr Function( + ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> + _$invokePointer = ffi.Pointer.fromFunction(_$invoke); + + static ffi.Pointer _$invokeMethod( + int $p, + $MethodInvocation $i, + ) { + try { + final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); + final $a = $i.args; + if ($d == r"onFailure(Ljava/lang/Exception;)V") { + _$impls[$p]!.onFailure( + $a[0].castTo(const $ExceptionType(), releaseOriginal: true), + ); + return jni.nullptr; + } + } catch (e) { + return ProtectedJniExtensions.newDartException(e.toString()); + } + return jni.nullptr; + } + + factory OnFailureListener.implement( + $OnFailureListenerImpl $impl, + ) { + final $p = ReceivePort(); + final $x = OnFailureListener.fromRef( + ProtectedJniExtensions.newPortProxy( + r"com.google.android.gms.tasks.OnFailureListener", + $p, + _$invokePointer, + ), + ).._$p = $p; + final $a = $p.sendPort.nativePort; + _$impls[$a] = $impl; + $p.listen(($m) { + if ($m == null) { + _$impls.remove($p.sendPort.nativePort); + $p.close(); + return; + } + final $i = $MethodInvocation.fromMessage($m as List); + final $r = _$invokeMethod($p.sendPort.nativePort, $i); + ProtectedJniExtensions.returnResult($i.result, $r); + }); + return $x; + } +} + +abstract class $OnFailureListenerImpl { + factory $OnFailureListenerImpl({ + required void Function(Exception exception) onFailure, + }) = _$OnFailureListenerImpl; + + void onFailure(Exception exception); +} + +class _$OnFailureListenerImpl implements $OnFailureListenerImpl { + _$OnFailureListenerImpl({ + required void Function(Exception exception) onFailure, + }) : _onFailure = onFailure; + + final void Function(Exception exception) _onFailure; + + void onFailure(Exception exception) { + return _onFailure(exception); + } +} + +final class $OnFailureListenerType extends jni.JObjType { + const $OnFailureListenerType(); + + @override + String get signature => r"Lcom/google/android/gms/tasks/OnFailureListener;"; + + @override + OnFailureListener fromRef(jni.JObjectPtr ref) => + OnFailureListener.fromRef(ref); + + @override + jni.JObjType get superType => const jni.JObjectType(); + + @override + final superCount = 1; + + @override + int get hashCode => ($OnFailureListenerType).hashCode; + + @override + bool operator ==(Object other) { + return other.runtimeType == ($OnFailureListenerType) && + other is $OnFailureListenerType; + } +} diff --git a/packages/celest_auth/lib/src/native/android/jni_helpers.dart b/packages/celest_auth/lib/src/native/android/jni_helpers.dart new file mode 100644 index 00000000..ad76ecc9 --- /dev/null +++ b/packages/celest_auth/lib/src/native/android/jni_helpers.dart @@ -0,0 +1,16 @@ +import 'package:jni/jni.dart'; + +extension JObjectHelpers on JObject { + bool instanceOf(JObjType type) { + return Jni.env.IsInstanceOf(reference, type.getClass().reference); + } + + T as(JObjType type) { + if (!instanceOf(type)) { + throw StateError( + 'Invalid type. Expected ${type.signature}, got ${$type.signature}', + ); + } + return type.fromRef(reference); + } +} diff --git a/packages/celest_auth/lib/src/native/darwin/celest_auth.ffi.dart b/packages/celest_auth/lib/src/native/darwin/celest_auth.ffi.dart new file mode 100644 index 00000000..1780d62a --- /dev/null +++ b/packages/celest_auth/lib/src/native/darwin/celest_auth.ffi.dart @@ -0,0 +1,2130 @@ +// ignore_for_file: type=lint +// ignore_for_file: return_of_invalid_type +// ignore_for_file: unnecessary_non_null_assertion + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +import 'dart:ffi' as ffi; +import 'package:ffi/ffi.dart' as pkg_ffi; +import 'package:celest_auth/src/native/darwin/foundation.ffi.dart' as imp1; + +/// Bindings for CelestAuth on iOS/macOS. +/// +/// Regenerate bindings with `dart run ffigen --config=ffigen.darwin.yaml`. +/// +class CelestAuthDarwin { + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) + _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + CelestAuthDarwin(ffi.DynamicLibrary dynamicLibrary) + : _lookup = dynamicLibrary.lookup; + + /// The symbols are looked up with [lookup]. + CelestAuthDarwin.fromLookup( + ffi.Pointer Function(String symbolName) + lookup) + : _lookup = lookup; + + ffi.Pointer _registerName1(String name) { + final cstr = name.toNativeUtf8(); + final sel = _sel_registerName(cstr.cast()); + pkg_ffi.calloc.free(cstr); + return sel; + } + + ffi.Pointer _sel_registerName( + ffi.Pointer str, + ) { + return __sel_registerName( + str, + ); + } + + late final __sel_registerNamePtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('sel_registerName'); + late final __sel_registerName = __sel_registerNamePtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _getClass1(String name) { + final cstr = name.toNativeUtf8(); + final clazz = _objc_getClass(cstr.cast()); + pkg_ffi.calloc.free(cstr); + if (clazz == ffi.nullptr) { + throw Exception('Failed to load Objective-C class: $name'); + } + return clazz; + } + + ffi.Pointer _objc_getClass( + ffi.Pointer str, + ) { + return __objc_getClass( + str, + ); + } + + late final __objc_getClassPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_getClass'); + late final __objc_getClass = __objc_getClassPtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _objc_retain( + ffi.Pointer value, + ) { + return __objc_retain( + value, + ); + } + + late final __objc_retainPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_retain'); + late final __objc_retain = __objc_retainPtr + .asFunction Function(ffi.Pointer)>(); + + void _objc_release( + ffi.Pointer value, + ) { + return __objc_release( + value, + ); + } + + late final __objc_releasePtr = + _lookup)>>( + 'objc_release'); + late final __objc_release = + __objc_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer2 = + ffi.NativeFinalizer(__objc_releasePtr.cast()); + late final _class_CelestAuth1 = _getClass1("celest_auth.CelestAuth"); + bool _objc_msgSend_0( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer clazz, + ) { + return __objc_msgSend_0( + obj, + sel, + clazz, + ); + } + + late final __objc_msgSend_0Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); + late final _class_NSObject1 = _getClass1("NSObject"); + late final _sel_load1 = _registerName1("load"); + void _objc_msgSend_1( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1( + obj, + sel, + ); + } + + late final __objc_msgSend_1Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initialize1 = _registerName1("initialize"); + late final _sel_init1 = _registerName1("init"); + instancetype _objc_msgSend_2( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_2( + obj, + sel, + ); + } + + late final __objc_msgSend_2Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_new1 = _registerName1("new"); + late final _sel_allocWithZone_1 = _registerName1("allocWithZone:"); + instancetype _objc_msgSend_3( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer zone, + ) { + return __objc_msgSend_3( + obj, + sel, + zone, + ); + } + + late final __objc_msgSend_3Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_alloc1 = _registerName1("alloc"); + late final _sel_dealloc1 = _registerName1("dealloc"); + late final _sel_finalize1 = _registerName1("finalize"); + late final _sel_copy1 = _registerName1("copy"); + late final _sel_mutableCopy1 = _registerName1("mutableCopy"); + late final _sel_copyWithZone_1 = _registerName1("copyWithZone:"); + late final _sel_mutableCopyWithZone_1 = + _registerName1("mutableCopyWithZone:"); + late final _sel_instancesRespondToSelector_1 = + _registerName1("instancesRespondToSelector:"); + bool _objc_msgSend_4( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_4( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_4Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_Protocol1 = _getClass1("Protocol"); + late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); + bool _objc_msgSend_5( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer protocol, + ) { + return __objc_msgSend_5( + obj, + sel, + protocol, + ); + } + + late final __objc_msgSend_5Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_methodForSelector_1 = _registerName1("methodForSelector:"); + ffi.Pointer> _objc_msgSend_6( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_6( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_6Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_instanceMethodForSelector_1 = + _registerName1("instanceMethodForSelector:"); + late final _sel_doesNotRecognizeSelector_1 = + _registerName1("doesNotRecognizeSelector:"); + void _objc_msgSend_7( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_7( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_7Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_forwardingTargetForSelector_1 = + _registerName1("forwardingTargetForSelector:"); + ffi.Pointer _objc_msgSend_8( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_8( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_8Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSInvocation1 = _getClass1("NSInvocation"); + late final _class_NSMethodSignature1 = _getClass1("NSMethodSignature"); + late final _sel_signatureWithObjCTypes_1 = + _registerName1("signatureWithObjCTypes:"); + ffi.Pointer _objc_msgSend_9( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer types, + ) { + return __objc_msgSend_9( + obj, + sel, + types, + ); + } + + late final __objc_msgSend_9Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_numberOfArguments1 = _registerName1("numberOfArguments"); + int _objc_msgSend_10( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_10( + obj, + sel, + ); + } + + late final __objc_msgSend_10Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getArgumentTypeAtIndex_1 = + _registerName1("getArgumentTypeAtIndex:"); + ffi.Pointer _objc_msgSend_11( + ffi.Pointer obj, + ffi.Pointer sel, + int idx, + ) { + return __objc_msgSend_11( + obj, + sel, + idx, + ); + } + + late final __objc_msgSend_11Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_frameLength1 = _registerName1("frameLength"); + late final _sel_isOneway1 = _registerName1("isOneway"); + bool _objc_msgSend_12( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_12( + obj, + sel, + ); + } + + late final __objc_msgSend_12Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodReturnType1 = _registerName1("methodReturnType"); + ffi.Pointer _objc_msgSend_13( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_13( + obj, + sel, + ); + } + + late final __objc_msgSend_13Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodReturnLength1 = _registerName1("methodReturnLength"); + late final _sel_invocationWithMethodSignature_1 = + _registerName1("invocationWithMethodSignature:"); + ffi.Pointer _objc_msgSend_14( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sig, + ) { + return __objc_msgSend_14( + obj, + sel, + sig, + ); + } + + late final __objc_msgSend_14Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodSignature1 = _registerName1("methodSignature"); + ffi.Pointer _objc_msgSend_15( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_15( + obj, + sel, + ); + } + + late final __objc_msgSend_15Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_retainArguments1 = _registerName1("retainArguments"); + late final _sel_argumentsRetained1 = _registerName1("argumentsRetained"); + late final _sel_target1 = _registerName1("target"); + ffi.Pointer _objc_msgSend_16( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_16( + obj, + sel, + ); + } + + late final __objc_msgSend_16Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setTarget_1 = _registerName1("setTarget:"); + void _objc_msgSend_17( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_17( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_17Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_selector1 = _registerName1("selector"); + ffi.Pointer _objc_msgSend_18( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_18( + obj, + sel, + ); + } + + late final __objc_msgSend_18Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setSelector_1 = _registerName1("setSelector:"); + void _objc_msgSend_19( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_19( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_19Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getReturnValue_1 = _registerName1("getReturnValue:"); + void _objc_msgSend_20( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer retLoc, + ) { + return __objc_msgSend_20( + obj, + sel, + retLoc, + ); + } + + late final __objc_msgSend_20Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setReturnValue_1 = _registerName1("setReturnValue:"); + late final _sel_getArgument_atIndex_1 = + _registerName1("getArgument:atIndex:"); + void _objc_msgSend_21( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer argumentLocation, + int idx, + ) { + return __objc_msgSend_21( + obj, + sel, + argumentLocation, + idx, + ); + } + + late final __objc_msgSend_21Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_setArgument_atIndex_1 = + _registerName1("setArgument:atIndex:"); + late final _sel_invoke1 = _registerName1("invoke"); + late final _sel_invokeWithTarget_1 = _registerName1("invokeWithTarget:"); + void _objc_msgSend_22( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ) { + return __objc_msgSend_22( + obj, + sel, + target, + ); + } + + late final __objc_msgSend_22Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_invokeUsingIMP_1 = _registerName1("invokeUsingIMP:"); + void _objc_msgSend_23( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> imp, + ) { + return __objc_msgSend_23( + obj, + sel, + imp, + ); + } + + late final __objc_msgSend_23Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>>( + 'objc_msgSend'); + late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_forwardInvocation_1 = _registerName1("forwardInvocation:"); + void _objc_msgSend_24( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anInvocation, + ) { + return __objc_msgSend_24( + obj, + sel, + anInvocation, + ); + } + + late final __objc_msgSend_24Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_methodSignatureForSelector_1 = + _registerName1("methodSignatureForSelector:"); + ffi.Pointer _objc_msgSend_25( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_25( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_25Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_instanceMethodSignatureForSelector_1 = + _registerName1("instanceMethodSignatureForSelector:"); + late final _sel_allowsWeakReference1 = _registerName1("allowsWeakReference"); + late final _sel_retainWeakReference1 = _registerName1("retainWeakReference"); + late final _sel_isSubclassOfClass_1 = _registerName1("isSubclassOfClass:"); + late final _sel_resolveClassMethod_1 = _registerName1("resolveClassMethod:"); + late final _sel_resolveInstanceMethod_1 = + _registerName1("resolveInstanceMethod:"); + late final _sel_hash1 = _registerName1("hash"); + late final _sel_superclass1 = _registerName1("superclass"); + late final _sel_class1 = _registerName1("class"); + late final _class_NSString1 = _getClass1("NSString"); + late final _sel_length1 = _registerName1("length"); + late final _sel_characterAtIndex_1 = _registerName1("characterAtIndex:"); + int _objc_msgSend_26( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_26( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_26Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedShort Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_NSCoder1 = _getClass1("NSCoder"); + late final _sel_encodeValueOfObjCType_at_1 = + _registerName1("encodeValueOfObjCType:at:"); + void _objc_msgSend_27( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer type, + ffi.Pointer addr, + ) { + return __objc_msgSend_27( + obj, + sel, + type, + addr, + ); + } + + late final __objc_msgSend_27Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSData1 = _getClass1("NSData"); + late final _sel_bytes1 = _registerName1("bytes"); + ffi.Pointer _objc_msgSend_28( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_28( + obj, + sel, + ); + } + + late final __objc_msgSend_28Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_encodeDataObject_1 = _registerName1("encodeDataObject:"); + void _objc_msgSend_29( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_29( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_29Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeDataObject1 = _registerName1("decodeDataObject"); + ffi.Pointer _objc_msgSend_30( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_30( + obj, + sel, + ); + } + + late final __objc_msgSend_30Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_30 = __objc_msgSend_30Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_decodeValueOfObjCType_at_size_1 = + _registerName1("decodeValueOfObjCType:at:size:"); + void _objc_msgSend_31( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer type, + ffi.Pointer data, + int size, + ) { + return __objc_msgSend_31( + obj, + sel, + type, + data, + size, + ); + } + + late final __objc_msgSend_31Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_versionForClassName_1 = + _registerName1("versionForClassName:"); + int _objc_msgSend_32( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer className, + ) { + return __objc_msgSend_32( + obj, + sel, + className, + ); + } + + late final __objc_msgSend_32Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithCoder_1 = _registerName1("initWithCoder:"); + instancetype _objc_msgSend_33( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer coder, + ) { + return __objc_msgSend_33( + obj, + sel, + coder, + ); + } + + late final __objc_msgSend_33Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_stringWithCharacters_length_1 = + _registerName1("stringWithCharacters:length:"); + ffi.Pointer _objc_msgSend_34( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer characters, + int length, + ) { + return __objc_msgSend_34( + obj, + sel, + characters, + length, + ); + } + + late final __objc_msgSend_34Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_dataUsingEncoding_1 = _registerName1("dataUsingEncoding:"); + ffi.Pointer _objc_msgSend_35( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + ) { + return __objc_msgSend_35( + obj, + sel, + encoding, + ); + } + + late final __objc_msgSend_35Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_description1 = _registerName1("description"); + ffi.Pointer _objc_msgSend_36( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_36( + obj, + sel, + ); + } + + late final __objc_msgSend_36Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_debugDescription1 = _registerName1("debugDescription"); + late final _sel_isPasskeysSupported1 = _registerName1("isPasskeysSupported"); + late final _sel_cancel1 = _registerName1("cancel"); + ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() { + final d = + pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>()); + d.ref.reserved = 0; + d.ref.size = ffi.sizeOf<_ObjCBlock>(); + d.ref.copy_helper = ffi.nullptr; + d.ref.dispose_helper = ffi.nullptr; + d.ref.signature = ffi.nullptr; + return d; + } + + late final _objc_block_desc1 = _newBlockDesc1(); + late final _objc_concrete_global_block1 = + _lookup('_NSConcreteGlobalBlock'); + ffi.Pointer<_ObjCBlock> _newBlock1( + ffi.Pointer invoke, ffi.Pointer target) { + final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>()); + b.ref.isa = _objc_concrete_global_block1; + b.ref.flags = 0; + b.ref.reserved = 0; + b.ref.invoke = invoke; + b.ref.target = target; + b.ref.descriptor = _objc_block_desc1; + final copy = _Block_copy(b.cast()).cast<_ObjCBlock>(); + pkg_ffi.calloc.free(b); + return copy; + } + + ffi.Pointer _Block_copy( + ffi.Pointer value, + ) { + return __Block_copy( + value, + ); + } + + late final __Block_copyPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('_Block_copy'); + late final __Block_copy = __Block_copyPtr + .asFunction Function(ffi.Pointer)>(); + + void _Block_release( + ffi.Pointer value, + ) { + return __Block_release( + value, + ); + } + + late final __Block_releasePtr = + _lookup)>>( + '_Block_release'); + late final __Block_release = + __Block_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer11 = + ffi.NativeFinalizer(__Block_releasePtr.cast()); + late final _sel_registerWithRequest_onSuccess_onError_1 = + _registerName1("registerWithRequest:onSuccess:onError:"); + void _objc_msgSend_37( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer<_ObjCBlock> onSuccess, + ffi.Pointer<_ObjCBlock> onError, + ) { + return __objc_msgSend_37( + obj, + sel, + request, + onSuccess, + onError, + ); + } + + late final __objc_msgSend_37Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_authenticateWithRequest_onSuccess_onError_1 = + _registerName1("authenticateWithRequest:onSuccess:onError:"); + late final _sel_freePointer_1 = _registerName1("freePointer:"); + void _objc_msgSend_38( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer ptr, + ) { + return __objc_msgSend_38( + obj, + sel, + ptr, + ); + } + + late final __objc_msgSend_38Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); +} + +class _ObjCWrapper implements ffi.Finalizable { + final ffi.Pointer _id; + final CelestAuthDarwin _lib; + bool _pendingRelease; + + _ObjCWrapper._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._objc_retain(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer2.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC object held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._objc_release(_id.cast()); + _lib._objc_releaseFinalizer2.detach(this); + } else { + throw StateError( + 'Released an ObjC object that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCWrapper && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer get pointer => _id; + + ffi.Pointer _retainAndReturnId() { + _lib._objc_retain(_id.cast()); + return _id; + } +} + +class CelestAuth extends NSObject { + CelestAuth._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [CelestAuth] that points to the same underlying object as [other]. + static CelestAuth castFrom(T other) { + return CelestAuth._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [CelestAuth] that wraps the given raw object pointer. + static CelestAuth castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return CelestAuth._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [CelestAuth]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_CelestAuth1); + } + + @override + CelestAuth init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return CelestAuth._(_ret, _lib, retain: true, release: true); + } + + bool get isPasskeysSupported { + return _lib._objc_msgSend_12(_id, _lib._sel_isPasskeysSupported1); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + void registerWithRequest_onSuccess_onError_( + NSString request, + ObjCBlock_ffiVoid_Uint8 onSuccess, + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8 onError) { + _lib._objc_msgSend_37( + _id, + _lib._sel_registerWithRequest_onSuccess_onError_1, + request._id, + onSuccess._id, + onError._id); + } + + void authenticateWithRequest_onSuccess_onError_( + NSString request, + ObjCBlock_ffiVoid_Uint8 onSuccess, + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8 onError) { + _lib._objc_msgSend_37( + _id, + _lib._sel_authenticateWithRequest_onSuccess_onError_1, + request._id, + onSuccess._id, + onError._id); + } + + void freePointer_(ffi.Pointer ptr) { + _lib._objc_msgSend_38(_id, _lib._sel_freePointer_1, ptr); + } + + static CelestAuth new1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_CelestAuth1, _lib._sel_new1); + return CelestAuth._(_ret, _lib, retain: false, release: true); + } + + static CelestAuth allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_CelestAuth1, _lib._sel_allocWithZone_1, zone); + return CelestAuth._(_ret, _lib, retain: false, release: true); + } + + static CelestAuth alloc(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_CelestAuth1, _lib._sel_alloc1); + return CelestAuth._(_ret, _lib, retain: false, release: true); + } +} + +final class ObjCSel extends ffi.Opaque {} + +final class ObjCObject extends ffi.Opaque {} + +class NSObject extends _ObjCWrapper { + NSObject._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSObject] that points to the same underlying object as [other]. + static NSObject castFrom(T other) { + return NSObject._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSObject] that wraps the given raw object pointer. + static NSObject castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSObject._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSObject]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); + } + + static void load(CelestAuthDarwin _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); + } + + static void initialize(CelestAuthDarwin _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); + } + + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject new1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject alloc(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + void dealloc() { + _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + } + + void finalize() { + _lib._objc_msgSend_1(_id, _lib._sel_finalize1); + } + + NSObject copy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject mutableCopy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject copyWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject mutableCopyWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool instancesRespondToSelector_( + CelestAuthDarwin _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSObject1, + _lib._sel_instancesRespondToSelector_1, aSelector); + } + + static bool conformsToProtocol_(CelestAuthDarwin _lib, Protocol protocol) { + return _lib._objc_msgSend_5( + _lib._class_NSObject1, _lib._sel_conformsToProtocol_1, protocol._id); + } + + ffi.Pointer> methodForSelector_( + ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); + } + + static ffi.Pointer> + instanceMethodForSelector_( + CelestAuthDarwin _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_lib._class_NSObject1, + _lib._sel_instanceMethodForSelector_1, aSelector); + } + + void doesNotRecognizeSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); + } + + NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_8( + _id, _lib._sel_forwardingTargetForSelector_1, aSelector); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void forwardInvocation_(NSInvocation anInvocation) { + _lib._objc_msgSend_24(_id, _lib._sel_forwardInvocation_1, anInvocation._id); + } + + NSMethodSignature methodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_25( + _id, _lib._sel_methodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + static NSMethodSignature instanceMethodSignatureForSelector_( + CelestAuthDarwin _lib, ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_25(_lib._class_NSObject1, + _lib._sel_instanceMethodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + bool allowsWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + } + + bool retainWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); + } + + static bool isSubclassOfClass_(CelestAuthDarwin _lib, NSObject aClass) { + return _lib._objc_msgSend_0( + _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); + } + + static bool resolveClassMethod_( + CelestAuthDarwin _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); + } + + static bool resolveInstanceMethod_( + CelestAuthDarwin _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); + } + + static int hash(CelestAuthDarwin _lib) { + return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); + } + + static NSObject superclass(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject class1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString description(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_36(_lib._class_NSObject1, _lib._sel_description1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString debugDescription(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_36( + _lib._class_NSObject1, _lib._sel_debugDescription1); + return NSString._(_ret, _lib, retain: true, release: true); + } +} + +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = NSObject; + +class Protocol extends _ObjCWrapper { + Protocol._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [Protocol] that points to the same underlying object as [other]. + static Protocol castFrom(T other) { + return Protocol._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [Protocol] that wraps the given raw object pointer. + static Protocol castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return Protocol._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [Protocol]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_Protocol1); + } +} + +class NSInvocation extends NSObject { + NSInvocation._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSInvocation] that points to the same underlying object as [other]. + static NSInvocation castFrom(T other) { + return NSInvocation._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSInvocation] that wraps the given raw object pointer. + static NSInvocation castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSInvocation._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSInvocation]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInvocation1); + } + + static NSInvocation invocationWithMethodSignature_( + CelestAuthDarwin _lib, NSMethodSignature sig) { + final _ret = _lib._objc_msgSend_14(_lib._class_NSInvocation1, + _lib._sel_invocationWithMethodSignature_1, sig._id); + return NSInvocation._(_ret, _lib, retain: true, release: true); + } + + NSMethodSignature get methodSignature { + final _ret = _lib._objc_msgSend_15(_id, _lib._sel_methodSignature1); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + void retainArguments() { + _lib._objc_msgSend_1(_id, _lib._sel_retainArguments1); + } + + bool get argumentsRetained { + return _lib._objc_msgSend_12(_id, _lib._sel_argumentsRetained1); + } + + NSObject? get target { + final _ret = _lib._objc_msgSend_16(_id, _lib._sel_target1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set target(NSObject? value) { + return _lib._objc_msgSend_17( + _id, _lib._sel_setTarget_1, value?._id ?? ffi.nullptr); + } + + ffi.Pointer get selector { + return _lib._objc_msgSend_18(_id, _lib._sel_selector1); + } + + set selector(ffi.Pointer value) { + return _lib._objc_msgSend_19(_id, _lib._sel_setSelector_1, value); + } + + void getReturnValue_(ffi.Pointer retLoc) { + _lib._objc_msgSend_20(_id, _lib._sel_getReturnValue_1, retLoc); + } + + void setReturnValue_(ffi.Pointer retLoc) { + _lib._objc_msgSend_20(_id, _lib._sel_setReturnValue_1, retLoc); + } + + void getArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { + _lib._objc_msgSend_21( + _id, _lib._sel_getArgument_atIndex_1, argumentLocation, idx); + } + + void setArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { + _lib._objc_msgSend_21( + _id, _lib._sel_setArgument_atIndex_1, argumentLocation, idx); + } + + void invoke() { + _lib._objc_msgSend_1(_id, _lib._sel_invoke1); + } + + void invokeWithTarget_(NSObject target) { + _lib._objc_msgSend_22(_id, _lib._sel_invokeWithTarget_1, target._id); + } + + void invokeUsingIMP_( + ffi.Pointer> imp) { + _lib._objc_msgSend_23(_id, _lib._sel_invokeUsingIMP_1, imp); + } + + @override + NSInvocation init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSInvocation._(_ret, _lib, retain: true, release: true); + } + + static NSInvocation new1(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_new1); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } + + static NSInvocation allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSInvocation1, _lib._sel_allocWithZone_1, zone); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } + + static NSInvocation alloc(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_alloc1); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } +} + +class NSMethodSignature extends NSObject { + NSMethodSignature._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMethodSignature] that points to the same underlying object as [other]. + static NSMethodSignature castFrom(T other) { + return NSMethodSignature._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMethodSignature] that wraps the given raw object pointer. + static NSMethodSignature castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMethodSignature._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMethodSignature]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMethodSignature1); + } + + static NSMethodSignature? signatureWithObjCTypes_( + CelestAuthDarwin _lib, ffi.Pointer types) { + final _ret = _lib._objc_msgSend_9(_lib._class_NSMethodSignature1, + _lib._sel_signatureWithObjCTypes_1, types); + return _ret.address == 0 + ? null + : NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + int get numberOfArguments { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfArguments1); + } + + ffi.Pointer getArgumentTypeAtIndex_(int idx) { + return _lib._objc_msgSend_11(_id, _lib._sel_getArgumentTypeAtIndex_1, idx); + } + + int get frameLength { + return _lib._objc_msgSend_10(_id, _lib._sel_frameLength1); + } + + bool isOneway() { + return _lib._objc_msgSend_12(_id, _lib._sel_isOneway1); + } + + ffi.Pointer get methodReturnType { + return _lib._objc_msgSend_13(_id, _lib._sel_methodReturnType1); + } + + int get methodReturnLength { + return _lib._objc_msgSend_10(_id, _lib._sel_methodReturnLength1); + } + + @override + NSMethodSignature init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + static NSMethodSignature new1(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_new1); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } + + static NSMethodSignature allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMethodSignature1, _lib._sel_allocWithZone_1, zone); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } + + static NSMethodSignature alloc(CelestAuthDarwin _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_alloc1); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } +} + +class NSString extends NSObject { + NSString._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSString] that points to the same underlying object as [other]. + static NSString castFrom(T other) { + return NSString._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSString] that wraps the given raw object pointer. + static NSString castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSString1); + } + + factory NSString(CelestAuthDarwin _lib, String str) { + final cstr = str.toNativeUtf16(); + final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); + pkg_ffi.calloc.free(cstr); + return nsstr; + } + + @override + String toString() { + final data = + dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); + return data!.bytes.cast().toDartString(length: length); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + int characterAtIndex_(int index) { + return _lib._objc_msgSend_26(_id, _lib._sel_characterAtIndex_1, index); + } + + @override + NSString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_33(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithCharacters_length_( + CelestAuthDarwin _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_34(_lib._class_NSString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSData dataUsingEncoding_(int encoding) { + final _ret = + _lib._objc_msgSend_35(_id, _lib._sel_dataUsingEncoding_1, encoding); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSString new1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_new1); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSString1, _lib._sel_allocWithZone_1, zone); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString alloc(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_alloc1); + return NSString._(_ret, _lib, retain: false, release: true); + } +} + +extension StringToNSString on String { + NSString toNSString(CelestAuthDarwin lib) => NSString(lib, this); +} + +class NSCoder extends NSObject { + NSCoder._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCoder] that points to the same underlying object as [other]. + static NSCoder castFrom(T other) { + return NSCoder._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCoder] that wraps the given raw object pointer. + static NSCoder castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCoder._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCoder]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCoder1); + } + + void encodeValueOfObjCType_at_( + ffi.Pointer type, ffi.Pointer addr) { + _lib._objc_msgSend_27( + _id, _lib._sel_encodeValueOfObjCType_at_1, type, addr); + } + + void encodeDataObject_(NSData data) { + _lib._objc_msgSend_29(_id, _lib._sel_encodeDataObject_1, data._id); + } + + NSData? decodeDataObject() { + final _ret = _lib._objc_msgSend_30(_id, _lib._sel_decodeDataObject1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + void decodeValueOfObjCType_at_size_( + ffi.Pointer type, ffi.Pointer data, int size) { + _lib._objc_msgSend_31( + _id, _lib._sel_decodeValueOfObjCType_at_size_1, type, data, size); + } + + int versionForClassName_(NSString className) { + return _lib._objc_msgSend_32( + _id, _lib._sel_versionForClassName_1, className._id); + } + + @override + NSCoder init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCoder._(_ret, _lib, retain: true, release: true); + } + + static NSCoder new1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_new1); + return NSCoder._(_ret, _lib, retain: false, release: true); + } + + static NSCoder allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCoder1, _lib._sel_allocWithZone_1, zone); + return NSCoder._(_ret, _lib, retain: false, release: true); + } + + static NSCoder alloc(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_alloc1); + return NSCoder._(_ret, _lib, retain: false, release: true); + } +} + +class NSData extends NSObject { + NSData._(ffi.Pointer id, CelestAuthDarwin lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSData] that points to the same underlying object as [other]. + static NSData castFrom(T other) { + return NSData._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSData] that wraps the given raw object pointer. + static NSData castFromPointer( + CelestAuthDarwin lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSData._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSData]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSData1); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + ffi.Pointer get bytes { + return _lib._objc_msgSend_28(_id, _lib._sel_bytes1); + } + + @override + NSData init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData new1(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_new1); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData allocWithZone_( + CelestAuthDarwin _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSData1, _lib._sel_allocWithZone_1, zone); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData alloc(CelestAuthDarwin _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_alloc1); + return NSData._(_ret, _lib, retain: false, release: true); + } +} + +class _ObjCBlockBase implements ffi.Finalizable { + final ffi.Pointer<_ObjCBlock> _id; + final CelestAuthDarwin _lib; + bool _pendingRelease; + + _ObjCBlockBase._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._Block_copy(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer11.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC block held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._Block_release(_id.cast()); + _lib._objc_releaseFinalizer11.detach(this); + } else { + throw StateError( + 'Released an ObjC block that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCBlockBase && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer<_ObjCBlock> get pointer => _id; + + ffi.Pointer<_ObjCBlock> _retainAndReturnId() { + _lib._Block_copy(_id.cast()); + return _id; + } +} + +void _ObjCBlock_ffiVoid_Uint8_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi + .NativeFunction arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_Uint8_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_Uint8_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_Uint8_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_Uint8_closureRegistryIndex; + _ObjCBlock_ffiVoid_Uint8_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_Uint8_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_Uint8_closureRegistry[block.ref.target.address]!(arg0); + +class ObjCBlock_ffiVoid_Uint8 extends _ObjCBlockBase { + ObjCBlock_ffiVoid_Uint8._(ffi.Pointer<_ObjCBlock> id, CelestAuthDarwin lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_Uint8.fromFunctionPointer( + CelestAuthDarwin lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_Uint8_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_Uint8.fromFunction( + CelestAuthDarwin lib, void Function(ffi.Pointer) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_Uint8_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_Uint8_registerClosure( + (ffi.Pointer arg0) => fn(arg0))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_Uint8.listener( + CelestAuthDarwin lib, void Function(ffi.Pointer) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_Uint8_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_Uint8_registerClosure( + (ffi.Pointer arg0) => fn(arg0))), + lib); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock>, ffi.Pointer)>()(_id, arg0); +} + +final class _ObjCBlockDesc extends ffi.Struct { + @ffi.UnsignedLong() + external int reserved; + + @ffi.UnsignedLong() + external int size; + + external ffi.Pointer copy_helper; + + external ffi.Pointer dispose_helper; + + external ffi.Pointer signature; +} + +final class _ObjCBlock extends ffi.Struct { + external ffi.Pointer isa; + + @ffi.Int() + external int flags; + + @ffi.Int() + external int reserved; + + external ffi.Pointer invoke; + + external ffi.Pointer<_ObjCBlockDesc> descriptor; + + external ffi.Pointer target; +} + +void _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int32 arg0, ffi.Pointer arg1)>>() + .asFunction)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_registerClosure( + void Function(int, ffi.Pointer) fn) { + final id = + ++_ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureRegistryIndex; + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8 extends _ObjCBlockBase { + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8._( + ffi.Pointer<_ObjCBlock> id, CelestAuthDarwin lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8.fromFunctionPointer( + CelestAuthDarwin lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int32 arg0, ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Int32, ffi.Pointer)>( + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8.fromFunction( + CelestAuthDarwin lib, void Function(int, ffi.Pointer) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Int32, ffi.Pointer)>( + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_registerClosure( + (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8.listener( + CelestAuthDarwin lib, void Function(int, ffi.Pointer) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Int32, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8_registerClosure( + (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), + lib); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, ffi.Int32, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(int arg0, ffi.Pointer arg1) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Int32 arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock>, int, + ffi.Pointer)>()(_id, arg0, arg1); +} + +abstract class CelestAuthErrorCode { + static const int CelestAuthErrorCodeUnknown = 0; + static const int CelestAuthErrorCodeUnsupported = 1; + static const int CelestAuthErrorCodeSerde = 2; + static const int CelestAuthErrorCodeCanceled = 1001; + static const int CelestAuthErrorCodeInvalidResponse = 1002; + static const int CelestAuthErrorCodeNotHandled = 1003; + static const int CelestAuthErrorCodeFailed = 1004; + static const int CelestAuthErrorCodeNotInteractive = 1005; +} diff --git a/packages/celest_auth/lib/src/native/darwin/foundation.ffi.dart b/packages/celest_auth/lib/src/native/darwin/foundation.ffi.dart new file mode 100644 index 00000000..e918b076 --- /dev/null +++ b/packages/celest_auth/lib/src/native/darwin/foundation.ffi.dart @@ -0,0 +1,12531 @@ +// ignore_for_file: type=lint +// ignore_for_file: return_of_invalid_type +// ignore_for_file: unnecessary_non_null_assertion + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +import 'dart:ffi' as ffi; +import 'package:ffi/ffi.dart' as pkg_ffi; + +/// Bindings for Foundation on macOS/iOS. +/// +/// Regenerate bindings with `dart run ffigen --config=ffigen.foundation.yaml`. +/// +class Foundation { + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) + _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + Foundation(ffi.DynamicLibrary dynamicLibrary) + : _lookup = dynamicLibrary.lookup; + + /// The symbols are looked up with [lookup]. + Foundation.fromLookup( + ffi.Pointer Function(String symbolName) + lookup) + : _lookup = lookup; + + ffi.Pointer _registerName1(String name) { + final cstr = name.toNativeUtf8(); + final sel = _sel_registerName(cstr.cast()); + pkg_ffi.calloc.free(cstr); + return sel; + } + + ffi.Pointer _sel_registerName( + ffi.Pointer str, + ) { + return __sel_registerName( + str, + ); + } + + late final __sel_registerNamePtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('sel_registerName'); + late final __sel_registerName = __sel_registerNamePtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _getClass1(String name) { + final cstr = name.toNativeUtf8(); + final clazz = _objc_getClass(cstr.cast()); + pkg_ffi.calloc.free(cstr); + if (clazz == ffi.nullptr) { + throw Exception('Failed to load Objective-C class: $name'); + } + return clazz; + } + + ffi.Pointer _objc_getClass( + ffi.Pointer str, + ) { + return __objc_getClass( + str, + ); + } + + late final __objc_getClassPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_getClass'); + late final __objc_getClass = __objc_getClassPtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _objc_retain( + ffi.Pointer value, + ) { + return __objc_retain( + value, + ); + } + + late final __objc_retainPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_retain'); + late final __objc_retain = __objc_retainPtr + .asFunction Function(ffi.Pointer)>(); + + void _objc_release( + ffi.Pointer value, + ) { + return __objc_release( + value, + ); + } + + late final __objc_releasePtr = + _lookup)>>( + 'objc_release'); + late final __objc_release = + __objc_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer2 = + ffi.NativeFinalizer(__objc_releasePtr.cast()); + late final _class_NSString1 = _getClass1("NSString"); + bool _objc_msgSend_0( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer clazz, + ) { + return __objc_msgSend_0( + obj, + sel, + clazz, + ); + } + + late final __objc_msgSend_0Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); + late final _class_NSObject1 = _getClass1("NSObject"); + late final _sel_load1 = _registerName1("load"); + void _objc_msgSend_1( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1( + obj, + sel, + ); + } + + late final __objc_msgSend_1Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initialize1 = _registerName1("initialize"); + late final _sel_init1 = _registerName1("init"); + instancetype _objc_msgSend_2( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_2( + obj, + sel, + ); + } + + late final __objc_msgSend_2Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_new1 = _registerName1("new"); + late final _sel_allocWithZone_1 = _registerName1("allocWithZone:"); + instancetype _objc_msgSend_3( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer zone, + ) { + return __objc_msgSend_3( + obj, + sel, + zone, + ); + } + + late final __objc_msgSend_3Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_alloc1 = _registerName1("alloc"); + late final _sel_dealloc1 = _registerName1("dealloc"); + late final _sel_finalize1 = _registerName1("finalize"); + late final _sel_copy1 = _registerName1("copy"); + late final _sel_mutableCopy1 = _registerName1("mutableCopy"); + late final _sel_copyWithZone_1 = _registerName1("copyWithZone:"); + late final _sel_mutableCopyWithZone_1 = + _registerName1("mutableCopyWithZone:"); + late final _sel_instancesRespondToSelector_1 = + _registerName1("instancesRespondToSelector:"); + bool _objc_msgSend_4( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_4( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_4Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_Protocol1 = _getClass1("Protocol"); + late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); + bool _objc_msgSend_5( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer protocol, + ) { + return __objc_msgSend_5( + obj, + sel, + protocol, + ); + } + + late final __objc_msgSend_5Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_methodForSelector_1 = _registerName1("methodForSelector:"); + ffi.Pointer> _objc_msgSend_6( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_6( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_6Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_instanceMethodForSelector_1 = + _registerName1("instanceMethodForSelector:"); + late final _sel_doesNotRecognizeSelector_1 = + _registerName1("doesNotRecognizeSelector:"); + void _objc_msgSend_7( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_7( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_7Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_forwardingTargetForSelector_1 = + _registerName1("forwardingTargetForSelector:"); + ffi.Pointer _objc_msgSend_8( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_8( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_8Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSInvocation1 = _getClass1("NSInvocation"); + late final _sel_forwardInvocation_1 = _registerName1("forwardInvocation:"); + void _objc_msgSend_9( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anInvocation, + ) { + return __objc_msgSend_9( + obj, + sel, + anInvocation, + ); + } + + late final __objc_msgSend_9Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSMethodSignature1 = _getClass1("NSMethodSignature"); + late final _sel_methodSignatureForSelector_1 = + _registerName1("methodSignatureForSelector:"); + ffi.Pointer _objc_msgSend_10( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_10( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_10Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_instanceMethodSignatureForSelector_1 = + _registerName1("instanceMethodSignatureForSelector:"); + late final _sel_allowsWeakReference1 = _registerName1("allowsWeakReference"); + bool _objc_msgSend_11( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_11( + obj, + sel, + ); + } + + late final __objc_msgSend_11Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_retainWeakReference1 = _registerName1("retainWeakReference"); + late final _sel_isSubclassOfClass_1 = _registerName1("isSubclassOfClass:"); + late final _sel_resolveClassMethod_1 = _registerName1("resolveClassMethod:"); + late final _sel_resolveInstanceMethod_1 = + _registerName1("resolveInstanceMethod:"); + late final _sel_hash1 = _registerName1("hash"); + int _objc_msgSend_12( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_12( + obj, + sel, + ); + } + + late final __objc_msgSend_12Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_superclass1 = _registerName1("superclass"); + late final _sel_class1 = _registerName1("class"); + late final _sel_description1 = _registerName1("description"); + ffi.Pointer _objc_msgSend_13( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_13( + obj, + sel, + ); + } + + late final __objc_msgSend_13Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_debugDescription1 = _registerName1("debugDescription"); + late final _class_NSURL1 = _getClass1("NSURL"); + late final _sel_initWithScheme_host_path_1 = + _registerName1("initWithScheme:host:path:"); + instancetype _objc_msgSend_14( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer scheme, + ffi.Pointer host, + ffi.Pointer path, + ) { + return __objc_msgSend_14( + obj, + sel, + scheme, + host, + path, + ); + } + + late final __objc_msgSend_14Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_isDirectory_relativeToURL_1 = + _registerName1("initFileURLWithPath:isDirectory:relativeToURL:"); + instancetype _objc_msgSend_15( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_15( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_15Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_relativeToURL_1 = + _registerName1("initFileURLWithPath:relativeToURL:"); + instancetype _objc_msgSend_16( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_16( + obj, + sel, + path, + baseURL, + ); + } + + late final __objc_msgSend_16Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_isDirectory_1 = + _registerName1("initFileURLWithPath:isDirectory:"); + instancetype _objc_msgSend_17( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ) { + return __objc_msgSend_17( + obj, + sel, + path, + isDir, + ); + } + + late final __objc_msgSend_17Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initFileURLWithPath_1 = + _registerName1("initFileURLWithPath:"); + instancetype _objc_msgSend_18( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_18( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_18Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_isDirectory_relativeToURL_1 = + _registerName1("fileURLWithPath:isDirectory:relativeToURL:"); + ffi.Pointer _objc_msgSend_19( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_19( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_19Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_relativeToURL_1 = + _registerName1("fileURLWithPath:relativeToURL:"); + ffi.Pointer _objc_msgSend_20( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_20( + obj, + sel, + path, + baseURL, + ); + } + + late final __objc_msgSend_20Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_isDirectory_1 = + _registerName1("fileURLWithPath:isDirectory:"); + ffi.Pointer _objc_msgSend_21( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ) { + return __objc_msgSend_21( + obj, + sel, + path, + isDir, + ); + } + + late final __objc_msgSend_21Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_fileURLWithPath_1 = _registerName1("fileURLWithPath:"); + ffi.Pointer _objc_msgSend_22( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_22( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_22Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = + _registerName1( + "initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); + instancetype _objc_msgSend_23( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_23( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_23Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, ffi.Pointer)>(); + + late final _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = + _registerName1( + "fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); + ffi.Pointer _objc_msgSend_24( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_24( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_24Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_initWithString_1 = _registerName1("initWithString:"); + instancetype _objc_msgSend_25( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer URLString, + ) { + return __objc_msgSend_25( + obj, + sel, + URLString, + ); + } + + late final __objc_msgSend_25Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithString_relativeToURL_1 = + _registerName1("initWithString:relativeToURL:"); + instancetype _objc_msgSend_26( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer URLString, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_26( + obj, + sel, + URLString, + baseURL, + ); + } + + late final __objc_msgSend_26Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLWithString_1 = _registerName1("URLWithString:"); + late final _sel_URLWithString_relativeToURL_1 = + _registerName1("URLWithString:relativeToURL:"); + late final _sel_initWithString_encodingInvalidCharacters_1 = + _registerName1("initWithString:encodingInvalidCharacters:"); + instancetype _objc_msgSend_27( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer URLString, + bool encodingInvalidCharacters, + ) { + return __objc_msgSend_27( + obj, + sel, + URLString, + encodingInvalidCharacters, + ); + } + + late final __objc_msgSend_27Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_URLWithString_encodingInvalidCharacters_1 = + _registerName1("URLWithString:encodingInvalidCharacters:"); + late final _class_NSData1 = _getClass1("NSData"); + late final _sel_bytes1 = _registerName1("bytes"); + ffi.Pointer _objc_msgSend_28( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_28( + obj, + sel, + ); + } + + late final __objc_msgSend_28Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithDataRepresentation_relativeToURL_1 = + _registerName1("initWithDataRepresentation:relativeToURL:"); + instancetype _objc_msgSend_29( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_29( + obj, + sel, + data, + baseURL, + ); + } + + late final __objc_msgSend_29Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLWithDataRepresentation_relativeToURL_1 = + _registerName1("URLWithDataRepresentation:relativeToURL:"); + ffi.Pointer _objc_msgSend_30( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_30( + obj, + sel, + data, + baseURL, + ); + } + + late final __objc_msgSend_30Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_30 = __objc_msgSend_30Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1 = + _registerName1("initAbsoluteURLWithDataRepresentation:relativeToURL:"); + late final _sel_absoluteURLWithDataRepresentation_relativeToURL_1 = + _registerName1("absoluteURLWithDataRepresentation:relativeToURL:"); + late final _sel_dataRepresentation1 = _registerName1("dataRepresentation"); + ffi.Pointer _objc_msgSend_31( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_31( + obj, + sel, + ); + } + + late final __objc_msgSend_31Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_absoluteString1 = _registerName1("absoluteString"); + ffi.Pointer _objc_msgSend_32( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_32( + obj, + sel, + ); + } + + late final __objc_msgSend_32Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_relativeString1 = _registerName1("relativeString"); + late final _sel_baseURL1 = _registerName1("baseURL"); + ffi.Pointer _objc_msgSend_33( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_33( + obj, + sel, + ); + } + + late final __objc_msgSend_33Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_absoluteURL1 = _registerName1("absoluteURL"); + late final _sel_scheme1 = _registerName1("scheme"); + late final _sel_resourceSpecifier1 = _registerName1("resourceSpecifier"); + late final _sel_host1 = _registerName1("host"); + late final _class_NSNumber1 = _getClass1("NSNumber"); + late final _class_NSValue1 = _getClass1("NSValue"); + late final _sel_getValue_size_1 = _registerName1("getValue:size:"); + void _objc_msgSend_34( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + int size, + ) { + return __objc_msgSend_34( + obj, + sel, + value, + size, + ); + } + + late final __objc_msgSend_34Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_objCType1 = _registerName1("objCType"); + ffi.Pointer _objc_msgSend_35( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_35( + obj, + sel, + ); + } + + late final __objc_msgSend_35Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithBytes_objCType_1 = + _registerName1("initWithBytes:objCType:"); + instancetype _objc_msgSend_36( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer type, + ) { + return __objc_msgSend_36( + obj, + sel, + value, + type, + ); + } + + late final __objc_msgSend_36Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSCoder1 = _getClass1("NSCoder"); + late final _sel_initWithCoder_1 = _registerName1("initWithCoder:"); + instancetype _objc_msgSend_37( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer coder, + ) { + return __objc_msgSend_37( + obj, + sel, + coder, + ); + } + + late final __objc_msgSend_37Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithChar_1 = _registerName1("initWithChar:"); + ffi.Pointer _objc_msgSend_38( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_38( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_38Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Char)>>('objc_msgSend'); + late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedChar_1 = + _registerName1("initWithUnsignedChar:"); + ffi.Pointer _objc_msgSend_39( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_39( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_39Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); + late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithShort_1 = _registerName1("initWithShort:"); + ffi.Pointer _objc_msgSend_40( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_40( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_40Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Short)>>('objc_msgSend'); + late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedShort_1 = + _registerName1("initWithUnsignedShort:"); + ffi.Pointer _objc_msgSend_41( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_41( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_41Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedShort)>>('objc_msgSend'); + late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithInt_1 = _registerName1("initWithInt:"); + ffi.Pointer _objc_msgSend_42( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_42( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_42Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedInt_1 = + _registerName1("initWithUnsignedInt:"); + ffi.Pointer _objc_msgSend_43( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_43( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_43Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithLong_1 = _registerName1("initWithLong:"); + ffi.Pointer _objc_msgSend_44( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_44( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_44Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedLong_1 = + _registerName1("initWithUnsignedLong:"); + ffi.Pointer _objc_msgSend_45( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_45( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_45Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithLongLong_1 = _registerName1("initWithLongLong:"); + ffi.Pointer _objc_msgSend_46( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_46( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_46Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.LongLong)>>('objc_msgSend'); + late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedLongLong_1 = + _registerName1("initWithUnsignedLongLong:"); + ffi.Pointer _objc_msgSend_47( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_47( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_47Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLongLong)>>('objc_msgSend'); + late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithFloat_1 = _registerName1("initWithFloat:"); + ffi.Pointer _objc_msgSend_48( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_48( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_48Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Float)>>('objc_msgSend'); + late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_initWithDouble_1 = _registerName1("initWithDouble:"); + ffi.Pointer _objc_msgSend_49( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_49( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_49Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_initWithBool_1 = _registerName1("initWithBool:"); + ffi.Pointer _objc_msgSend_50( + ffi.Pointer obj, + ffi.Pointer sel, + bool value, + ) { + return __objc_msgSend_50( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_50Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_initWithInteger_1 = _registerName1("initWithInteger:"); + late final _sel_initWithUnsignedInteger_1 = + _registerName1("initWithUnsignedInteger:"); + late final _sel_charValue1 = _registerName1("charValue"); + int _objc_msgSend_51( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_51( + obj, + sel, + ); + } + + late final __objc_msgSend_51Ptr = _lookup< + ffi.NativeFunction< + ffi.Char Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedCharValue1 = _registerName1("unsignedCharValue"); + int _objc_msgSend_52( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_52( + obj, + sel, + ); + } + + late final __objc_msgSend_52Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedChar Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_shortValue1 = _registerName1("shortValue"); + int _objc_msgSend_53( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_53( + obj, + sel, + ); + } + + late final __objc_msgSend_53Ptr = _lookup< + ffi.NativeFunction< + ffi.Short Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedShortValue1 = _registerName1("unsignedShortValue"); + int _objc_msgSend_54( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_54( + obj, + sel, + ); + } + + late final __objc_msgSend_54Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedShort Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_intValue1 = _registerName1("intValue"); + int _objc_msgSend_55( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_55( + obj, + sel, + ); + } + + late final __objc_msgSend_55Ptr = _lookup< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedIntValue1 = _registerName1("unsignedIntValue"); + int _objc_msgSend_56( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_56( + obj, + sel, + ); + } + + late final __objc_msgSend_56Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedInt Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_longValue1 = _registerName1("longValue"); + int _objc_msgSend_57( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_57( + obj, + sel, + ); + } + + late final __objc_msgSend_57Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedLongValue1 = _registerName1("unsignedLongValue"); + late final _sel_longLongValue1 = _registerName1("longLongValue"); + int _objc_msgSend_58( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_58( + obj, + sel, + ); + } + + late final __objc_msgSend_58Ptr = _lookup< + ffi.NativeFunction< + ffi.LongLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedLongLongValue1 = + _registerName1("unsignedLongLongValue"); + int _objc_msgSend_59( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_59( + obj, + sel, + ); + } + + late final __objc_msgSend_59Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLongLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_floatValue1 = _registerName1("floatValue"); + late final _objc_msgSend_useVariants1 = ffi.Abi.current() == ffi.Abi.iosX64 || + ffi.Abi.current() == ffi.Abi.macosX64; + double _objc_msgSend_60( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_60( + obj, + sel, + ); + } + + late final __objc_msgSend_60Ptr = _lookup< + ffi.NativeFunction< + ffi.Float Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + double _objc_msgSend_60_fpret( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_60_fpret( + obj, + sel, + ); + } + + late final __objc_msgSend_60_fpretPtr = _lookup< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_60_fpret = __objc_msgSend_60_fpretPtr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_doubleValue1 = _registerName1("doubleValue"); + double _objc_msgSend_61( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_61( + obj, + sel, + ); + } + + late final __objc_msgSend_61Ptr = _lookup< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + double _objc_msgSend_61_fpret( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_61_fpret( + obj, + sel, + ); + } + + late final __objc_msgSend_61_fpretPtr = _lookup< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_61_fpret = __objc_msgSend_61_fpretPtr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_boolValue1 = _registerName1("boolValue"); + late final _sel_integerValue1 = _registerName1("integerValue"); + late final _sel_unsignedIntegerValue1 = + _registerName1("unsignedIntegerValue"); + late final _sel_stringValue1 = _registerName1("stringValue"); + late final _sel_compare_1 = _registerName1("compare:"); + int _objc_msgSend_62( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherNumber, + ) { + return __objc_msgSend_62( + obj, + sel, + otherNumber, + ); + } + + late final __objc_msgSend_62Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isEqualToNumber_1 = _registerName1("isEqualToNumber:"); + bool _objc_msgSend_63( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer number, + ) { + return __objc_msgSend_63( + obj, + sel, + number, + ); + } + + late final __objc_msgSend_63Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_descriptionWithLocale_1 = + _registerName1("descriptionWithLocale:"); + ffi.Pointer _objc_msgSend_64( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer locale, + ) { + return __objc_msgSend_64( + obj, + sel, + locale, + ); + } + + late final __objc_msgSend_64Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_port1 = _registerName1("port"); + ffi.Pointer _objc_msgSend_65( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_65( + obj, + sel, + ); + } + + late final __objc_msgSend_65Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_user1 = _registerName1("user"); + late final _sel_password1 = _registerName1("password"); + late final _sel_path1 = _registerName1("path"); + late final _sel_fragment1 = _registerName1("fragment"); + late final _sel_parameterString1 = _registerName1("parameterString"); + late final _sel_query1 = _registerName1("query"); + late final _sel_relativePath1 = _registerName1("relativePath"); + late final _sel_hasDirectoryPath1 = _registerName1("hasDirectoryPath"); + late final _sel_getFileSystemRepresentation_maxLength_1 = + _registerName1("getFileSystemRepresentation:maxLength:"); + bool _objc_msgSend_66( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferLength, + ) { + return __objc_msgSend_66( + obj, + sel, + buffer, + maxBufferLength, + ); + } + + late final __objc_msgSend_66Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_fileSystemRepresentation1 = + _registerName1("fileSystemRepresentation"); + late final _sel_isFileURL1 = _registerName1("isFileURL"); + late final _sel_standardizedURL1 = _registerName1("standardizedURL"); + late final _sel_isFileReferenceURL1 = _registerName1("isFileReferenceURL"); + late final _sel_fileReferenceURL1 = _registerName1("fileReferenceURL"); + late final _sel_filePathURL1 = _registerName1("filePathURL"); + late final _class_NSError1 = _getClass1("NSError"); + late final _class_NSDictionary1 = _getClass1("NSDictionary"); + late final _sel_initWithDomain_code_userInfo_1 = + _registerName1("initWithDomain:code:userInfo:"); + instancetype _objc_msgSend_67( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer domain, + int code, + ffi.Pointer dict, + ) { + return __objc_msgSend_67( + obj, + sel, + domain, + code, + dict, + ); + } + + late final __objc_msgSend_67Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_errorWithDomain_code_userInfo_1 = + _registerName1("errorWithDomain:code:userInfo:"); + late final _sel_domain1 = _registerName1("domain"); + late final _sel_code1 = _registerName1("code"); + late final _sel_userInfo1 = _registerName1("userInfo"); + ffi.Pointer _objc_msgSend_68( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_68( + obj, + sel, + ); + } + + late final __objc_msgSend_68Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_localizedDescription1 = + _registerName1("localizedDescription"); + late final _sel_localizedFailureReason1 = + _registerName1("localizedFailureReason"); + late final _sel_localizedRecoverySuggestion1 = + _registerName1("localizedRecoverySuggestion"); + late final _sel_localizedRecoveryOptions1 = + _registerName1("localizedRecoveryOptions"); + ffi.Pointer _objc_msgSend_69( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_69( + obj, + sel, + ); + } + + late final __objc_msgSend_69Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_recoveryAttempter1 = _registerName1("recoveryAttempter"); + late final _sel_helpAnchor1 = _registerName1("helpAnchor"); + late final _sel_underlyingErrors1 = _registerName1("underlyingErrors"); + ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() { + final d = + pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>()); + d.ref.reserved = 0; + d.ref.size = ffi.sizeOf<_ObjCBlock>(); + d.ref.copy_helper = ffi.nullptr; + d.ref.dispose_helper = ffi.nullptr; + d.ref.signature = ffi.nullptr; + return d; + } + + late final _objc_block_desc1 = _newBlockDesc1(); + late final _objc_concrete_global_block1 = + _lookup('_NSConcreteGlobalBlock'); + ffi.Pointer<_ObjCBlock> _newBlock1( + ffi.Pointer invoke, ffi.Pointer target) { + final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>()); + b.ref.isa = _objc_concrete_global_block1; + b.ref.flags = 0; + b.ref.reserved = 0; + b.ref.invoke = invoke; + b.ref.target = target; + b.ref.descriptor = _objc_block_desc1; + final copy = _Block_copy(b.cast()).cast<_ObjCBlock>(); + pkg_ffi.calloc.free(b); + return copy; + } + + ffi.Pointer _Block_copy( + ffi.Pointer value, + ) { + return __Block_copy( + value, + ); + } + + late final __Block_copyPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('_Block_copy'); + late final __Block_copy = __Block_copyPtr + .asFunction Function(ffi.Pointer)>(); + + void _Block_release( + ffi.Pointer value, + ) { + return __Block_release( + value, + ); + } + + late final __Block_releasePtr = + _lookup)>>( + '_Block_release'); + late final __Block_release = + __Block_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer11 = + ffi.NativeFinalizer(__Block_releasePtr.cast()); + late final _sel_setUserInfoValueProviderForDomain_provider_1 = + _registerName1("setUserInfoValueProviderForDomain:provider:"); + void _objc_msgSend_70( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer errorDomain, + ffi.Pointer<_ObjCBlock> provider, + ) { + return __objc_msgSend_70( + obj, + sel, + errorDomain, + provider, + ); + } + + late final __objc_msgSend_70Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_userInfoValueProviderForDomain_1 = + _registerName1("userInfoValueProviderForDomain:"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_71( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer err, + ffi.Pointer userInfoKey, + ffi.Pointer errorDomain, + ) { + return __objc_msgSend_71( + obj, + sel, + err, + userInfoKey, + errorDomain, + ); + } + + late final __objc_msgSend_71Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getResourceValue_forKey_error_1 = + _registerName1("getResourceValue:forKey:error:"); + bool _objc_msgSend_72( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> value, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_72( + obj, + sel, + value, + key, + error, + ); + } + + late final __objc_msgSend_72Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_resourceValuesForKeys_error_1 = + _registerName1("resourceValuesForKeys:error:"); + ffi.Pointer _objc_msgSend_73( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer> error, + ) { + return __objc_msgSend_73( + obj, + sel, + keys, + error, + ); + } + + late final __objc_msgSend_73Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_setResourceValue_forKey_error_1 = + _registerName1("setResourceValue:forKey:error:"); + bool _objc_msgSend_74( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_74( + obj, + sel, + value, + key, + error, + ); + } + + late final __objc_msgSend_74Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_setResourceValues_error_1 = + _registerName1("setResourceValues:error:"); + bool _objc_msgSend_75( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyedValues, + ffi.Pointer> error, + ) { + return __objc_msgSend_75( + obj, + sel, + keyedValues, + error, + ); + } + + late final __objc_msgSend_75Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_removeCachedResourceValueForKey_1 = + _registerName1("removeCachedResourceValueForKey:"); + void _objc_msgSend_76( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_76( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_76Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeAllCachedResourceValues1 = + _registerName1("removeAllCachedResourceValues"); + late final _sel_setTemporaryResourceValue_forKey_1 = + _registerName1("setTemporaryResourceValue:forKey:"); + void _objc_msgSend_77( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ) { + return __objc_msgSend_77( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_77Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1 = + _registerName1( + "bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:"); + ffi.Pointer _objc_msgSend_78( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer keys, + ffi.Pointer relativeURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_78( + obj, + sel, + options, + keys, + relativeURL, + error, + ); + } + + late final __objc_msgSend_78Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = + _registerName1( + "initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); + instancetype _objc_msgSend_79( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkData, + int options, + ffi.Pointer relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error, + ) { + return __objc_msgSend_79( + obj, + sel, + bookmarkData, + options, + relativeURL, + isStale, + error, + ); + } + + late final __objc_msgSend_79Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = + _registerName1( + "URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); + late final _sel_resourceValuesForKeys_fromBookmarkData_1 = + _registerName1("resourceValuesForKeys:fromBookmarkData:"); + ffi.Pointer _objc_msgSend_80( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer bookmarkData, + ) { + return __objc_msgSend_80( + obj, + sel, + keys, + bookmarkData, + ); + } + + late final __objc_msgSend_80Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_writeBookmarkData_toURL_options_error_1 = + _registerName1("writeBookmarkData:toURL:options:error:"); + bool _objc_msgSend_81( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkData, + ffi.Pointer bookmarkFileURL, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_81( + obj, + sel, + bookmarkData, + bookmarkFileURL, + options, + error, + ); + } + + late final __objc_msgSend_81Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_bookmarkDataWithContentsOfURL_error_1 = + _registerName1("bookmarkDataWithContentsOfURL:error:"); + ffi.Pointer _objc_msgSend_82( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkFileURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_82( + obj, + sel, + bookmarkFileURL, + error, + ); + } + + late final __objc_msgSend_82Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_URLByResolvingAliasFileAtURL_options_error_1 = + _registerName1("URLByResolvingAliasFileAtURL:options:error:"); + instancetype _objc_msgSend_83( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_83( + obj, + sel, + url, + options, + error, + ); + } + + late final __objc_msgSend_83Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_startAccessingSecurityScopedResource1 = + _registerName1("startAccessingSecurityScopedResource"); + late final _sel_stopAccessingSecurityScopedResource1 = + _registerName1("stopAccessingSecurityScopedResource"); + late final _sel_getPromisedItemResourceValue_forKey_error_1 = + _registerName1("getPromisedItemResourceValue:forKey:error:"); + late final _sel_promisedItemResourceValuesForKeys_error_1 = + _registerName1("promisedItemResourceValuesForKeys:error:"); + late final _sel_checkPromisedItemIsReachableAndReturnError_1 = + _registerName1("checkPromisedItemIsReachableAndReturnError:"); + bool _objc_msgSend_84( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> error, + ) { + return __objc_msgSend_84( + obj, + sel, + error, + ); + } + + late final __objc_msgSend_84Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_fileURLWithPathComponents_1 = + _registerName1("fileURLWithPathComponents:"); + ffi.Pointer _objc_msgSend_85( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer components, + ) { + return __objc_msgSend_85( + obj, + sel, + components, + ); + } + + late final __objc_msgSend_85Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_pathComponents1 = _registerName1("pathComponents"); + late final _sel_lastPathComponent1 = _registerName1("lastPathComponent"); + late final _sel_pathExtension1 = _registerName1("pathExtension"); + late final _sel_URLByAppendingPathComponent_1 = + _registerName1("URLByAppendingPathComponent:"); + ffi.Pointer _objc_msgSend_86( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer pathComponent, + ) { + return __objc_msgSend_86( + obj, + sel, + pathComponent, + ); + } + + late final __objc_msgSend_86Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLByAppendingPathComponent_isDirectory_1 = + _registerName1("URLByAppendingPathComponent:isDirectory:"); + ffi.Pointer _objc_msgSend_87( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer pathComponent, + bool isDirectory, + ) { + return __objc_msgSend_87( + obj, + sel, + pathComponent, + isDirectory, + ); + } + + late final __objc_msgSend_87Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_URLByDeletingLastPathComponent1 = + _registerName1("URLByDeletingLastPathComponent"); + late final _sel_URLByAppendingPathExtension_1 = + _registerName1("URLByAppendingPathExtension:"); + late final _sel_URLByDeletingPathExtension1 = + _registerName1("URLByDeletingPathExtension"); + late final _sel_checkResourceIsReachableAndReturnError_1 = + _registerName1("checkResourceIsReachableAndReturnError:"); + late final _sel_URLByStandardizingPath1 = + _registerName1("URLByStandardizingPath"); + late final _sel_URLByResolvingSymlinksInPath1 = + _registerName1("URLByResolvingSymlinksInPath"); + late final _sel_resourceDataUsingCache_1 = + _registerName1("resourceDataUsingCache:"); + ffi.Pointer _objc_msgSend_88( + ffi.Pointer obj, + ffi.Pointer sel, + bool shouldUseCache, + ) { + return __objc_msgSend_88( + obj, + sel, + shouldUseCache, + ); + } + + late final __objc_msgSend_88Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_loadResourceDataNotifyingClient_usingCache_1 = + _registerName1("loadResourceDataNotifyingClient:usingCache:"); + void _objc_msgSend_89( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer client, + bool shouldUseCache, + ) { + return __objc_msgSend_89( + obj, + sel, + client, + shouldUseCache, + ); + } + + late final __objc_msgSend_89Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_propertyForKey_1 = _registerName1("propertyForKey:"); + late final _sel_setResourceData_1 = _registerName1("setResourceData:"); + bool _objc_msgSend_90( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_90( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_90Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setProperty_forKey_1 = _registerName1("setProperty:forKey:"); + bool _objc_msgSend_91( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer property, + ffi.Pointer propertyKey, + ) { + return __objc_msgSend_91( + obj, + sel, + property, + propertyKey, + ); + } + + late final __objc_msgSend_91Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLHandle1 = _getClass1("NSURLHandle"); + late final _sel_registerURLHandleClass_1 = + _registerName1("registerURLHandleClass:"); + void _objc_msgSend_92( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURLHandleSubclass, + ) { + return __objc_msgSend_92( + obj, + sel, + anURLHandleSubclass, + ); + } + + late final __objc_msgSend_92Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLHandleClassForURL_1 = + _registerName1("URLHandleClassForURL:"); + ffi.Pointer _objc_msgSend_93( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_93( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_93Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_status1 = _registerName1("status"); + int _objc_msgSend_94( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_94( + obj, + sel, + ); + } + + late final __objc_msgSend_94Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_failureReason1 = _registerName1("failureReason"); + late final _sel_addClient_1 = _registerName1("addClient:"); + late final _sel_removeClient_1 = _registerName1("removeClient:"); + late final _sel_loadInBackground1 = _registerName1("loadInBackground"); + late final _sel_cancelLoadInBackground1 = + _registerName1("cancelLoadInBackground"); + late final _sel_resourceData1 = _registerName1("resourceData"); + late final _sel_availableResourceData1 = + _registerName1("availableResourceData"); + late final _sel_expectedResourceDataSize1 = + _registerName1("expectedResourceDataSize"); + late final _sel_flushCachedData1 = _registerName1("flushCachedData"); + late final _sel_backgroundLoadDidFailWithReason_1 = + _registerName1("backgroundLoadDidFailWithReason:"); + late final _sel_didLoadBytes_loadComplete_1 = + _registerName1("didLoadBytes:loadComplete:"); + void _objc_msgSend_95( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer newBytes, + bool yorn, + ) { + return __objc_msgSend_95( + obj, + sel, + newBytes, + yorn, + ); + } + + late final __objc_msgSend_95Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_canInitWithURL_1 = _registerName1("canInitWithURL:"); + bool _objc_msgSend_96( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_96( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_96Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_cachedHandleForURL_1 = _registerName1("cachedHandleForURL:"); + ffi.Pointer _objc_msgSend_97( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_97( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_97Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithURL_cached_1 = _registerName1("initWithURL:cached:"); + ffi.Pointer _objc_msgSend_98( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + bool willCache, + ) { + return __objc_msgSend_98( + obj, + sel, + anURL, + willCache, + ); + } + + late final __objc_msgSend_98Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_propertyForKeyIfAvailable_1 = + _registerName1("propertyForKeyIfAvailable:"); + late final _sel_writeProperty_forKey_1 = + _registerName1("writeProperty:forKey:"); + late final _sel_writeData_1 = _registerName1("writeData:"); + late final _sel_loadInForeground1 = _registerName1("loadInForeground"); + late final _sel_beginLoadInBackground1 = + _registerName1("beginLoadInBackground"); + late final _sel_endLoadInBackground1 = _registerName1("endLoadInBackground"); + late final _sel_URLHandleUsingCache_1 = + _registerName1("URLHandleUsingCache:"); + ffi.Pointer _objc_msgSend_99( + ffi.Pointer obj, + ffi.Pointer sel, + bool shouldUseCache, + ) { + return __objc_msgSend_99( + obj, + sel, + shouldUseCache, + ); + } + + late final __objc_msgSend_99Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_URL_resourceDataDidBecomeAvailable_1 = + _registerName1("URL:resourceDataDidBecomeAvailable:"); + void _objc_msgSend_100( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ffi.Pointer newBytes, + ) { + return __objc_msgSend_100( + obj, + sel, + sender, + newBytes, + ); + } + + late final __objc_msgSend_100Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLResourceDidFinishLoading_1 = + _registerName1("URLResourceDidFinishLoading:"); + void _objc_msgSend_101( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ) { + return __objc_msgSend_101( + obj, + sel, + sender, + ); + } + + late final __objc_msgSend_101Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLResourceDidCancelLoading_1 = + _registerName1("URLResourceDidCancelLoading:"); + late final _sel_URL_resourceDidFailLoadingWithReason_1 = + _registerName1("URL:resourceDidFailLoadingWithReason:"); + void _objc_msgSend_102( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ffi.Pointer reason, + ) { + return __objc_msgSend_102( + obj, + sel, + sender, + reason, + ); + } + + late final __objc_msgSend_102Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1 = + _registerName1( + "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:"); + void _objc_msgSend_103( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer error, + int recoveryOptionIndex, + ffi.Pointer delegate, + ffi.Pointer didRecoverSelector, + ffi.Pointer contextInfo, + ) { + return __objc_msgSend_103( + obj, + sel, + error, + recoveryOptionIndex, + delegate, + didRecoverSelector, + contextInfo, + ); + } + + late final __objc_msgSend_103Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_attemptRecoveryFromError_optionIndex_1 = + _registerName1("attemptRecoveryFromError:optionIndex:"); + bool _objc_msgSend_104( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer error, + int recoveryOptionIndex, + ) { + return __objc_msgSend_104( + obj, + sel, + error, + recoveryOptionIndex, + ); + } + + late final __objc_msgSend_104Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_length1 = _registerName1("length"); + late final _sel_characterAtIndex_1 = _registerName1("characterAtIndex:"); + int _objc_msgSend_105( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_105( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_105Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedShort Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_substringFromIndex_1 = _registerName1("substringFromIndex:"); + ffi.Pointer _objc_msgSend_106( + ffi.Pointer obj, + ffi.Pointer sel, + int from, + ) { + return __objc_msgSend_106( + obj, + sel, + from, + ); + } + + late final __objc_msgSend_106Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_substringToIndex_1 = _registerName1("substringToIndex:"); + late final _sel_substringWithRange_1 = _registerName1("substringWithRange:"); + ffi.Pointer _objc_msgSend_107( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ) { + return __objc_msgSend_107( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_107Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, NSRange)>(); + + late final _sel_getCharacters_range_1 = + _registerName1("getCharacters:range:"); + void _objc_msgSend_108( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + NSRange range, + ) { + return __objc_msgSend_108( + obj, + sel, + buffer, + range, + ); + } + + late final __objc_msgSend_108Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, NSRange)>(); + + int _objc_msgSend_109( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ) { + return __objc_msgSend_109( + obj, + sel, + string, + ); + } + + late final __objc_msgSend_109Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_compare_options_1 = _registerName1("compare:options:"); + int _objc_msgSend_110( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + ) { + return __objc_msgSend_110( + obj, + sel, + string, + mask, + ); + } + + late final __objc_msgSend_110Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_compare_options_range_1 = + _registerName1("compare:options:range:"); + int _objc_msgSend_111( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + NSRange rangeOfReceiverToCompare, + ) { + return __objc_msgSend_111( + obj, + sel, + string, + mask, + rangeOfReceiverToCompare, + ); + } + + late final __objc_msgSend_111Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange)>(); + + late final _sel_compare_options_range_locale_1 = + _registerName1("compare:options:range:locale:"); + int _objc_msgSend_112( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + NSRange rangeOfReceiverToCompare, + ffi.Pointer locale, + ) { + return __objc_msgSend_112( + obj, + sel, + string, + mask, + rangeOfReceiverToCompare, + locale, + ); + } + + late final __objc_msgSend_112Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange, ffi.Pointer)>(); + + late final _sel_caseInsensitiveCompare_1 = + _registerName1("caseInsensitiveCompare:"); + late final _sel_localizedCompare_1 = _registerName1("localizedCompare:"); + late final _sel_localizedCaseInsensitiveCompare_1 = + _registerName1("localizedCaseInsensitiveCompare:"); + late final _sel_localizedStandardCompare_1 = + _registerName1("localizedStandardCompare:"); + late final _sel_isEqualToString_1 = _registerName1("isEqualToString:"); + bool _objc_msgSend_113( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + ) { + return __objc_msgSend_113( + obj, + sel, + aString, + ); + } + + late final __objc_msgSend_113Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_hasPrefix_1 = _registerName1("hasPrefix:"); + late final _sel_hasSuffix_1 = _registerName1("hasSuffix:"); + late final _sel_commonPrefixWithString_options_1 = + _registerName1("commonPrefixWithString:options:"); + ffi.Pointer _objc_msgSend_114( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + int mask, + ) { + return __objc_msgSend_114( + obj, + sel, + str, + mask, + ); + } + + late final __objc_msgSend_114Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_containsString_1 = _registerName1("containsString:"); + late final _sel_localizedCaseInsensitiveContainsString_1 = + _registerName1("localizedCaseInsensitiveContainsString:"); + late final _sel_localizedStandardContainsString_1 = + _registerName1("localizedStandardContainsString:"); + late final _sel_localizedStandardRangeOfString_1 = + _registerName1("localizedStandardRangeOfString:"); + NSRange _objc_msgSend_115( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + ) { + return __objc_msgSend_115( + obj, + sel, + str, + ); + } + + late final __objc_msgSend_115Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + void _objc_msgSend_115_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + ) { + return __objc_msgSend_115_stret( + stret, + obj, + sel, + str, + ); + } + + late final __objc_msgSend_115_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_115_stret = __objc_msgSend_115_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_rangeOfString_1 = _registerName1("rangeOfString:"); + late final _sel_rangeOfString_options_1 = + _registerName1("rangeOfString:options:"); + NSRange _objc_msgSend_116( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + ) { + return __objc_msgSend_116( + obj, + sel, + searchString, + mask, + ); + } + + late final __objc_msgSend_116Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + void _objc_msgSend_116_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + ) { + return __objc_msgSend_116_stret( + stret, + obj, + sel, + searchString, + mask, + ); + } + + late final __objc_msgSend_116_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend_stret'); + late final __objc_msgSend_116_stret = __objc_msgSend_116_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_rangeOfString_options_range_1 = + _registerName1("rangeOfString:options:range:"); + NSRange _objc_msgSend_117( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_117( + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_117Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange)>(); + + void _objc_msgSend_117_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_117_stret( + stret, + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_117_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_117_stret = __objc_msgSend_117_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, NSRange)>(); + + late final _class_NSLocale1 = _getClass1("NSLocale"); + late final _sel_rangeOfString_options_range_locale_1 = + _registerName1("rangeOfString:options:range:locale:"); + NSRange _objc_msgSend_118( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + NSRange rangeOfReceiverToSearch, + ffi.Pointer locale, + ) { + return __objc_msgSend_118( + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + locale, + ); + } + + late final __objc_msgSend_118Ptr = _lookup< + ffi.NativeFunction< + NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange, ffi.Pointer)>(); + + void _objc_msgSend_118_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + NSRange rangeOfReceiverToSearch, + ffi.Pointer locale, + ) { + return __objc_msgSend_118_stret( + stret, + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + locale, + ); + } + + late final __objc_msgSend_118_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_118_stret = __objc_msgSend_118_stretPtr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + NSRange, + ffi.Pointer)>(); + + late final _class_NSCharacterSet1 = _getClass1("NSCharacterSet"); + late final _sel_controlCharacterSet1 = _registerName1("controlCharacterSet"); + ffi.Pointer _objc_msgSend_119( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_119( + obj, + sel, + ); + } + + late final __objc_msgSend_119Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_whitespaceCharacterSet1 = + _registerName1("whitespaceCharacterSet"); + late final _sel_whitespaceAndNewlineCharacterSet1 = + _registerName1("whitespaceAndNewlineCharacterSet"); + late final _sel_decimalDigitCharacterSet1 = + _registerName1("decimalDigitCharacterSet"); + late final _sel_letterCharacterSet1 = _registerName1("letterCharacterSet"); + late final _sel_lowercaseLetterCharacterSet1 = + _registerName1("lowercaseLetterCharacterSet"); + late final _sel_uppercaseLetterCharacterSet1 = + _registerName1("uppercaseLetterCharacterSet"); + late final _sel_nonBaseCharacterSet1 = _registerName1("nonBaseCharacterSet"); + late final _sel_alphanumericCharacterSet1 = + _registerName1("alphanumericCharacterSet"); + late final _sel_decomposableCharacterSet1 = + _registerName1("decomposableCharacterSet"); + late final _sel_illegalCharacterSet1 = _registerName1("illegalCharacterSet"); + late final _sel_punctuationCharacterSet1 = + _registerName1("punctuationCharacterSet"); + late final _sel_capitalizedLetterCharacterSet1 = + _registerName1("capitalizedLetterCharacterSet"); + late final _sel_symbolCharacterSet1 = _registerName1("symbolCharacterSet"); + late final _sel_newlineCharacterSet1 = _registerName1("newlineCharacterSet"); + late final _sel_characterSetWithRange_1 = + _registerName1("characterSetWithRange:"); + ffi.Pointer _objc_msgSend_120( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange aRange, + ) { + return __objc_msgSend_120( + obj, + sel, + aRange, + ); + } + + late final __objc_msgSend_120Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, NSRange)>(); + + late final _sel_characterSetWithCharactersInString_1 = + _registerName1("characterSetWithCharactersInString:"); + ffi.Pointer _objc_msgSend_121( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + ) { + return __objc_msgSend_121( + obj, + sel, + aString, + ); + } + + late final __objc_msgSend_121Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_characterSetWithBitmapRepresentation_1 = + _registerName1("characterSetWithBitmapRepresentation:"); + ffi.Pointer _objc_msgSend_122( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_122( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_122Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_characterSetWithContentsOfFile_1 = + _registerName1("characterSetWithContentsOfFile:"); + ffi.Pointer _objc_msgSend_123( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer fName, + ) { + return __objc_msgSend_123( + obj, + sel, + fName, + ); + } + + late final __objc_msgSend_123Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + instancetype _objc_msgSend_124( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer coder, + ) { + return __objc_msgSend_124( + obj, + sel, + coder, + ); + } + + late final __objc_msgSend_124Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_characterIsMember_1 = _registerName1("characterIsMember:"); + bool _objc_msgSend_125( + ffi.Pointer obj, + ffi.Pointer sel, + int aCharacter, + ) { + return __objc_msgSend_125( + obj, + sel, + aCharacter, + ); + } + + late final __objc_msgSend_125Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedShort)>>('objc_msgSend'); + late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_bitmapRepresentation1 = + _registerName1("bitmapRepresentation"); + late final _sel_invertedSet1 = _registerName1("invertedSet"); + late final _sel_longCharacterIsMember_1 = + _registerName1("longCharacterIsMember:"); + bool _objc_msgSend_126( + ffi.Pointer obj, + ffi.Pointer sel, + int theLongChar, + ) { + return __objc_msgSend_126( + obj, + sel, + theLongChar, + ); + } + + late final __objc_msgSend_126Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isSupersetOfSet_1 = _registerName1("isSupersetOfSet:"); + bool _objc_msgSend_127( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer theOtherSet, + ) { + return __objc_msgSend_127( + obj, + sel, + theOtherSet, + ); + } + + late final __objc_msgSend_127Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_hasMemberInPlane_1 = _registerName1("hasMemberInPlane:"); + bool _objc_msgSend_128( + ffi.Pointer obj, + ffi.Pointer sel, + int thePlane, + ) { + return __objc_msgSend_128( + obj, + sel, + thePlane, + ); + } + + late final __objc_msgSend_128Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Uint8)>>('objc_msgSend'); + late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_URLUserAllowedCharacterSet1 = + _registerName1("URLUserAllowedCharacterSet"); + late final _sel_URLPasswordAllowedCharacterSet1 = + _registerName1("URLPasswordAllowedCharacterSet"); + late final _sel_URLHostAllowedCharacterSet1 = + _registerName1("URLHostAllowedCharacterSet"); + late final _sel_URLPathAllowedCharacterSet1 = + _registerName1("URLPathAllowedCharacterSet"); + late final _sel_URLQueryAllowedCharacterSet1 = + _registerName1("URLQueryAllowedCharacterSet"); + late final _sel_URLFragmentAllowedCharacterSet1 = + _registerName1("URLFragmentAllowedCharacterSet"); + late final _sel_rangeOfCharacterFromSet_1 = + _registerName1("rangeOfCharacterFromSet:"); + NSRange _objc_msgSend_129( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + ) { + return __objc_msgSend_129( + obj, + sel, + searchSet, + ); + } + + late final __objc_msgSend_129Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + void _objc_msgSend_129_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + ) { + return __objc_msgSend_129_stret( + stret, + obj, + sel, + searchSet, + ); + } + + late final __objc_msgSend_129_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_129_stret = __objc_msgSend_129_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_rangeOfCharacterFromSet_options_1 = + _registerName1("rangeOfCharacterFromSet:options:"); + NSRange _objc_msgSend_130( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + ) { + return __objc_msgSend_130( + obj, + sel, + searchSet, + mask, + ); + } + + late final __objc_msgSend_130Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + void _objc_msgSend_130_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + ) { + return __objc_msgSend_130_stret( + stret, + obj, + sel, + searchSet, + mask, + ); + } + + late final __objc_msgSend_130_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend_stret'); + late final __objc_msgSend_130_stret = __objc_msgSend_130_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_rangeOfCharacterFromSet_options_range_1 = + _registerName1("rangeOfCharacterFromSet:options:range:"); + NSRange _objc_msgSend_131( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_131( + obj, + sel, + searchSet, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_131Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, NSRange)>>('objc_msgSend'); + late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange)>(); + + void _objc_msgSend_131_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_131_stret( + stret, + obj, + sel, + searchSet, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_131_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_131_stret = __objc_msgSend_131_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, NSRange)>(); + + late final _sel_rangeOfComposedCharacterSequenceAtIndex_1 = + _registerName1("rangeOfComposedCharacterSequenceAtIndex:"); + NSRange _objc_msgSend_132( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_132( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_132Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, int)>(); + + void _objc_msgSend_132_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_132_stret( + stret, + obj, + sel, + index, + ); + } + + late final __objc_msgSend_132_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend_stret'); + late final __objc_msgSend_132_stret = __objc_msgSend_132_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_rangeOfComposedCharacterSequencesForRange_1 = + _registerName1("rangeOfComposedCharacterSequencesForRange:"); + NSRange _objc_msgSend_133( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ) { + return __objc_msgSend_133( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_133Ptr = _lookup< + ffi.NativeFunction< + NSRange Function(ffi.Pointer, ffi.Pointer, + NSRange)>>('objc_msgSend'); + late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction< + NSRange Function( + ffi.Pointer, ffi.Pointer, NSRange)>(); + + void _objc_msgSend_133_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ) { + return __objc_msgSend_133_stret( + stret, + obj, + sel, + range, + ); + } + + late final __objc_msgSend_133_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_133_stret = __objc_msgSend_133_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, NSRange)>(); + + late final _sel_stringByAppendingString_1 = + _registerName1("stringByAppendingString:"); + ffi.Pointer _objc_msgSend_134( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + ) { + return __objc_msgSend_134( + obj, + sel, + aString, + ); + } + + late final __objc_msgSend_134Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByAppendingFormat_1 = + _registerName1("stringByAppendingFormat:"); + late final _sel_uppercaseString1 = _registerName1("uppercaseString"); + late final _sel_lowercaseString1 = _registerName1("lowercaseString"); + late final _sel_capitalizedString1 = _registerName1("capitalizedString"); + late final _sel_localizedUppercaseString1 = + _registerName1("localizedUppercaseString"); + late final _sel_localizedLowercaseString1 = + _registerName1("localizedLowercaseString"); + late final _sel_localizedCapitalizedString1 = + _registerName1("localizedCapitalizedString"); + late final _sel_uppercaseStringWithLocale_1 = + _registerName1("uppercaseStringWithLocale:"); + ffi.Pointer _objc_msgSend_135( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer locale, + ) { + return __objc_msgSend_135( + obj, + sel, + locale, + ); + } + + late final __objc_msgSend_135Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_lowercaseStringWithLocale_1 = + _registerName1("lowercaseStringWithLocale:"); + late final _sel_capitalizedStringWithLocale_1 = + _registerName1("capitalizedStringWithLocale:"); + late final _sel_getLineStart_end_contentsEnd_forRange_1 = + _registerName1("getLineStart:end:contentsEnd:forRange:"); + void _objc_msgSend_136( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer startPtr, + ffi.Pointer lineEndPtr, + ffi.Pointer contentsEndPtr, + NSRange range, + ) { + return __objc_msgSend_136( + obj, + sel, + startPtr, + lineEndPtr, + contentsEndPtr, + range, + ); + } + + late final __objc_msgSend_136Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + NSRange)>>('objc_msgSend'); + late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + NSRange)>(); + + late final _sel_lineRangeForRange_1 = _registerName1("lineRangeForRange:"); + late final _sel_getParagraphStart_end_contentsEnd_forRange_1 = + _registerName1("getParagraphStart:end:contentsEnd:forRange:"); + late final _sel_paragraphRangeForRange_1 = + _registerName1("paragraphRangeForRange:"); + late final _sel_enumerateSubstringsInRange_options_usingBlock_1 = + _registerName1("enumerateSubstringsInRange:options:usingBlock:"); + void _objc_msgSend_137( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_137( + obj, + sel, + range, + opts, + block, + ); + } + + late final __objc_msgSend_137Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, NSRange, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateLinesUsingBlock_1 = + _registerName1("enumerateLinesUsingBlock:"); + void _objc_msgSend_138( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_138( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_138Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_UTF8String1 = _registerName1("UTF8String"); + late final _sel_fastestEncoding1 = _registerName1("fastestEncoding"); + late final _sel_smallestEncoding1 = _registerName1("smallestEncoding"); + late final _sel_dataUsingEncoding_allowLossyConversion_1 = + _registerName1("dataUsingEncoding:allowLossyConversion:"); + ffi.Pointer _objc_msgSend_139( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + bool lossy, + ) { + return __objc_msgSend_139( + obj, + sel, + encoding, + lossy, + ); + } + + late final __objc_msgSend_139Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int, bool)>(); + + late final _sel_dataUsingEncoding_1 = _registerName1("dataUsingEncoding:"); + ffi.Pointer _objc_msgSend_140( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + ) { + return __objc_msgSend_140( + obj, + sel, + encoding, + ); + } + + late final __objc_msgSend_140Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_canBeConvertedToEncoding_1 = + _registerName1("canBeConvertedToEncoding:"); + bool _objc_msgSend_141( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + ) { + return __objc_msgSend_141( + obj, + sel, + encoding, + ); + } + + late final __objc_msgSend_141Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_cStringUsingEncoding_1 = + _registerName1("cStringUsingEncoding:"); + ffi.Pointer _objc_msgSend_142( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + ) { + return __objc_msgSend_142( + obj, + sel, + encoding, + ); + } + + late final __objc_msgSend_142Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_getCString_maxLength_encoding_1 = + _registerName1("getCString:maxLength:encoding:"); + bool _objc_msgSend_143( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferCount, + int encoding, + ) { + return __objc_msgSend_143( + obj, + sel, + buffer, + maxBufferCount, + encoding, + ); + } + + late final __objc_msgSend_143Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int)>(); + + late final _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 = + _registerName1( + "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:"); + bool _objc_msgSend_144( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferCount, + ffi.Pointer usedBufferCount, + int encoding, + int options, + NSRange range, + ffi.Pointer leftover, + ) { + return __objc_msgSend_144( + obj, + sel, + buffer, + maxBufferCount, + usedBufferCount, + encoding, + options, + range, + leftover, + ); + } + + late final __objc_msgSend_144Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Int32, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + int, + int, + NSRange, + ffi.Pointer)>(); + + late final _sel_maximumLengthOfBytesUsingEncoding_1 = + _registerName1("maximumLengthOfBytesUsingEncoding:"); + int _objc_msgSend_145( + ffi.Pointer obj, + ffi.Pointer sel, + int enc, + ) { + return __objc_msgSend_145( + obj, + sel, + enc, + ); + } + + late final __objc_msgSend_145Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_lengthOfBytesUsingEncoding_1 = + _registerName1("lengthOfBytesUsingEncoding:"); + late final _sel_availableStringEncodings1 = + _registerName1("availableStringEncodings"); + ffi.Pointer _objc_msgSend_146( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_146( + obj, + sel, + ); + } + + late final __objc_msgSend_146Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_localizedNameOfStringEncoding_1 = + _registerName1("localizedNameOfStringEncoding:"); + late final _sel_defaultCStringEncoding1 = + _registerName1("defaultCStringEncoding"); + late final _sel_decomposedStringWithCanonicalMapping1 = + _registerName1("decomposedStringWithCanonicalMapping"); + late final _sel_precomposedStringWithCanonicalMapping1 = + _registerName1("precomposedStringWithCanonicalMapping"); + late final _sel_decomposedStringWithCompatibilityMapping1 = + _registerName1("decomposedStringWithCompatibilityMapping"); + late final _sel_precomposedStringWithCompatibilityMapping1 = + _registerName1("precomposedStringWithCompatibilityMapping"); + late final _sel_componentsSeparatedByString_1 = + _registerName1("componentsSeparatedByString:"); + late final _sel_componentsSeparatedByCharactersInSet_1 = + _registerName1("componentsSeparatedByCharactersInSet:"); + ffi.Pointer _objc_msgSend_147( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer separator, + ) { + return __objc_msgSend_147( + obj, + sel, + separator, + ); + } + + late final __objc_msgSend_147Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByTrimmingCharactersInSet_1 = + _registerName1("stringByTrimmingCharactersInSet:"); + ffi.Pointer _objc_msgSend_148( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + ) { + return __objc_msgSend_148( + obj, + sel, + set1, + ); + } + + late final __objc_msgSend_148Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByPaddingToLength_withString_startingAtIndex_1 = + _registerName1("stringByPaddingToLength:withString:startingAtIndex:"); + ffi.Pointer _objc_msgSend_149( + ffi.Pointer obj, + ffi.Pointer sel, + int newLength, + ffi.Pointer padString, + int padIndex, + ) { + return __objc_msgSend_149( + obj, + sel, + newLength, + padString, + padIndex, + ); + } + + late final __objc_msgSend_149Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); + + late final _sel_stringByFoldingWithOptions_locale_1 = + _registerName1("stringByFoldingWithOptions:locale:"); + ffi.Pointer _objc_msgSend_150( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer locale, + ) { + return __objc_msgSend_150( + obj, + sel, + options, + locale, + ); + } + + late final __objc_msgSend_150Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 = + _registerName1( + "stringByReplacingOccurrencesOfString:withString:options:range:"); + ffi.Pointer _objc_msgSend_151( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + int options, + NSRange searchRange, + ) { + return __objc_msgSend_151( + obj, + sel, + target, + replacement, + options, + searchRange, + ); + } + + late final __objc_msgSend_151Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange)>>('objc_msgSend'); + late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + NSRange)>(); + + late final _sel_stringByReplacingOccurrencesOfString_withString_1 = + _registerName1("stringByReplacingOccurrencesOfString:withString:"); + ffi.Pointer _objc_msgSend_152( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + ) { + return __objc_msgSend_152( + obj, + sel, + target, + replacement, + ); + } + + late final __objc_msgSend_152Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_stringByReplacingCharactersInRange_withString_1 = + _registerName1("stringByReplacingCharactersInRange:withString:"); + ffi.Pointer _objc_msgSend_153( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ffi.Pointer replacement, + ) { + return __objc_msgSend_153( + obj, + sel, + range, + replacement, + ); + } + + late final __objc_msgSend_153Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, NSRange, ffi.Pointer)>(); + + late final _sel_stringByApplyingTransform_reverse_1 = + _registerName1("stringByApplyingTransform:reverse:"); + ffi.Pointer _objc_msgSend_154( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer transform, + bool reverse, + ) { + return __objc_msgSend_154( + obj, + sel, + transform, + reverse, + ); + } + + late final __objc_msgSend_154Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_writeToURL_atomically_encoding_error_1 = + _registerName1("writeToURL:atomically:encoding:error:"); + bool _objc_msgSend_155( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_155( + obj, + sel, + url, + useAuxiliaryFile, + enc, + error, + ); + } + + late final __objc_msgSend_155Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); + + late final _sel_writeToFile_atomically_encoding_error_1 = + _registerName1("writeToFile:atomically:encoding:error:"); + bool _objc_msgSend_156( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_156( + obj, + sel, + path, + useAuxiliaryFile, + enc, + error, + ); + } + + late final __objc_msgSend_156Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); + + late final _sel_initWithCharactersNoCopy_length_freeWhenDone_1 = + _registerName1("initWithCharactersNoCopy:length:freeWhenDone:"); + instancetype _objc_msgSend_157( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer characters, + int length, + bool freeBuffer, + ) { + return __objc_msgSend_157( + obj, + sel, + characters, + length, + freeBuffer, + ); + } + + late final __objc_msgSend_157Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, bool)>(); + + late final _sel_initWithCharactersNoCopy_length_deallocator_1 = + _registerName1("initWithCharactersNoCopy:length:deallocator:"); + instancetype _objc_msgSend_158( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer chars, + int len, + ffi.Pointer<_ObjCBlock> deallocator, + ) { + return __objc_msgSend_158( + obj, + sel, + chars, + len, + deallocator, + ); + } + + late final __objc_msgSend_158Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_initWithCharacters_length_1 = + _registerName1("initWithCharacters:length:"); + instancetype _objc_msgSend_159( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer characters, + int length, + ) { + return __objc_msgSend_159( + obj, + sel, + characters, + length, + ); + } + + late final __objc_msgSend_159Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithUTF8String_1 = _registerName1("initWithUTF8String:"); + instancetype _objc_msgSend_160( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer nullTerminatedCString, + ) { + return __objc_msgSend_160( + obj, + sel, + nullTerminatedCString, + ); + } + + late final __objc_msgSend_160Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithFormat_1 = _registerName1("initWithFormat:"); + late final _sel_initWithFormat_arguments_1 = + _registerName1("initWithFormat:arguments:"); + instancetype _objc_msgSend_161( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer argList, + ) { + return __objc_msgSend_161( + obj, + sel, + format, + argList, + ); + } + + late final __objc_msgSend_161Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithFormat_locale_1 = + _registerName1("initWithFormat:locale:"); + instancetype _objc_msgSend_162( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer locale, + ) { + return __objc_msgSend_162( + obj, + sel, + format, + locale, + ); + } + + late final __objc_msgSend_162Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithFormat_locale_arguments_1 = + _registerName1("initWithFormat:locale:arguments:"); + instancetype _objc_msgSend_163( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer locale, + ffi.Pointer argList, + ) { + return __objc_msgSend_163( + obj, + sel, + format, + locale, + argList, + ); + } + + late final __objc_msgSend_163Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1("initWithValidatedFormat:validFormatSpecifiers:error:"); + instancetype _objc_msgSend_164( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer> error, + ) { + return __objc_msgSend_164( + obj, + sel, + format, + validFormatSpecifiers, + error, + ); + } + + late final __objc_msgSend_164Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:locale:error:"); + instancetype _objc_msgSend_165( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer locale, + ffi.Pointer> error, + ) { + return __objc_msgSend_165( + obj, + sel, + format, + validFormatSpecifiers, + locale, + error, + ); + } + + late final __objc_msgSend_165Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:arguments:error:"); + instancetype _objc_msgSend_166( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error, + ) { + return __objc_msgSend_166( + obj, + sel, + format, + validFormatSpecifiers, + argList, + error, + ); + } + + late final __objc_msgSend_166Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error:"); + instancetype _objc_msgSend_167( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer locale, + ffi.Pointer argList, + ffi.Pointer> error, + ) { + return __objc_msgSend_167( + obj, + sel, + format, + validFormatSpecifiers, + locale, + argList, + error, + ); + } + + late final __objc_msgSend_167Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithData_encoding_1 = + _registerName1("initWithData:encoding:"); + instancetype _objc_msgSend_168( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + int encoding, + ) { + return __objc_msgSend_168( + obj, + sel, + data, + encoding, + ); + } + + late final __objc_msgSend_168Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithBytes_length_encoding_1 = + _registerName1("initWithBytes:length:encoding:"); + instancetype _objc_msgSend_169( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + ) { + return __objc_msgSend_169( + obj, + sel, + bytes, + len, + encoding, + ); + } + + late final __objc_msgSend_169Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int)>(); + + late final _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 = + _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:"); + instancetype _objc_msgSend_170( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + bool freeBuffer, + ) { + return __objc_msgSend_170( + obj, + sel, + bytes, + len, + encoding, + freeBuffer, + ); + } + + late final __objc_msgSend_170Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, bool)>(); + + late final _sel_initWithBytesNoCopy_length_encoding_deallocator_1 = + _registerName1("initWithBytesNoCopy:length:encoding:deallocator:"); + instancetype _objc_msgSend_171( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + ffi.Pointer<_ObjCBlock> deallocator, + ) { + return __objc_msgSend_171( + obj, + sel, + bytes, + len, + encoding, + deallocator, + ); + } + + late final __objc_msgSend_171Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_string1 = _registerName1("string"); + late final _sel_stringWithString_1 = _registerName1("stringWithString:"); + late final _sel_stringWithCharacters_length_1 = + _registerName1("stringWithCharacters:length:"); + late final _sel_stringWithUTF8String_1 = + _registerName1("stringWithUTF8String:"); + late final _sel_stringWithFormat_1 = _registerName1("stringWithFormat:"); + late final _sel_localizedStringWithFormat_1 = + _registerName1("localizedStringWithFormat:"); + late final _sel_stringWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1("stringWithValidatedFormat:validFormatSpecifiers:error:"); + late final _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1( + "localizedStringWithValidatedFormat:validFormatSpecifiers:error:"); + late final _sel_initWithCString_encoding_1 = + _registerName1("initWithCString:encoding:"); + instancetype _objc_msgSend_172( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer nullTerminatedCString, + int encoding, + ) { + return __objc_msgSend_172( + obj, + sel, + nullTerminatedCString, + encoding, + ); + } + + late final __objc_msgSend_172Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_172 = __objc_msgSend_172Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_stringWithCString_encoding_1 = + _registerName1("stringWithCString:encoding:"); + late final _sel_initWithContentsOfURL_encoding_error_1 = + _registerName1("initWithContentsOfURL:encoding:error:"); + instancetype _objc_msgSend_173( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_173( + obj, + sel, + url, + enc, + error, + ); + } + + late final __objc_msgSend_173Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_173 = __objc_msgSend_173Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initWithContentsOfFile_encoding_error_1 = + _registerName1("initWithContentsOfFile:encoding:error:"); + instancetype _objc_msgSend_174( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_174( + obj, + sel, + path, + enc, + error, + ); + } + + late final __objc_msgSend_174Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_174 = __objc_msgSend_174Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_stringWithContentsOfURL_encoding_error_1 = + _registerName1("stringWithContentsOfURL:encoding:error:"); + late final _sel_stringWithContentsOfFile_encoding_error_1 = + _registerName1("stringWithContentsOfFile:encoding:error:"); + late final _sel_initWithContentsOfURL_usedEncoding_error_1 = + _registerName1("initWithContentsOfURL:usedEncoding:error:"); + instancetype _objc_msgSend_175( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_175( + obj, + sel, + url, + enc, + error, + ); + } + + late final __objc_msgSend_175Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_175 = __objc_msgSend_175Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithContentsOfFile_usedEncoding_error_1 = + _registerName1("initWithContentsOfFile:usedEncoding:error:"); + instancetype _objc_msgSend_176( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_176( + obj, + sel, + path, + enc, + error, + ); + } + + late final __objc_msgSend_176Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_176 = __objc_msgSend_176Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_stringWithContentsOfURL_usedEncoding_error_1 = + _registerName1("stringWithContentsOfURL:usedEncoding:error:"); + late final _sel_stringWithContentsOfFile_usedEncoding_error_1 = + _registerName1("stringWithContentsOfFile:usedEncoding:error:"); + late final _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 = + _registerName1( + "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:"); + int _objc_msgSend_177( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion, + ) { + return __objc_msgSend_177( + obj, + sel, + data, + opts, + string, + usedLossyConversion, + ); + } + + late final __objc_msgSend_177Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_177 = __objc_msgSend_177Ptr.asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); + + late final _sel_propertyList1 = _registerName1("propertyList"); + late final _sel_propertyListFromStringsFileFormat1 = + _registerName1("propertyListFromStringsFileFormat"); + ffi.Pointer _objc_msgSend_178( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_178( + obj, + sel, + ); + } + + late final __objc_msgSend_178Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_178 = __objc_msgSend_178Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_cString1 = _registerName1("cString"); + late final _sel_lossyCString1 = _registerName1("lossyCString"); + late final _sel_cStringLength1 = _registerName1("cStringLength"); + late final _sel_getCString_1 = _registerName1("getCString:"); + void _objc_msgSend_179( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + ) { + return __objc_msgSend_179( + obj, + sel, + bytes, + ); + } + + late final __objc_msgSend_179Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_179 = __objc_msgSend_179Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getCString_maxLength_1 = + _registerName1("getCString:maxLength:"); + void _objc_msgSend_180( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int maxLength, + ) { + return __objc_msgSend_180( + obj, + sel, + bytes, + maxLength, + ); + } + + late final __objc_msgSend_180Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_180 = __objc_msgSend_180Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_getCString_maxLength_range_remainingRange_1 = + _registerName1("getCString:maxLength:range:remainingRange:"); + void _objc_msgSend_181( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int maxLength, + NSRange aRange, + ffi.Pointer leftoverRange, + ) { + return __objc_msgSend_181( + obj, + sel, + bytes, + maxLength, + aRange, + leftoverRange, + ); + } + + late final __objc_msgSend_181Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_181 = __objc_msgSend_181Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, NSRange, ffi.Pointer)>(); + + late final _sel_writeToFile_atomically_1 = + _registerName1("writeToFile:atomically:"); + bool _objc_msgSend_182( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool useAuxiliaryFile, + ) { + return __objc_msgSend_182( + obj, + sel, + path, + useAuxiliaryFile, + ); + } + + late final __objc_msgSend_182Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_182 = __objc_msgSend_182Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_writeToURL_atomically_1 = + _registerName1("writeToURL:atomically:"); + bool _objc_msgSend_183( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool atomically, + ) { + return __objc_msgSend_183( + obj, + sel, + url, + atomically, + ); + } + + late final __objc_msgSend_183Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_183 = __objc_msgSend_183Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initWithContentsOfFile_1 = + _registerName1("initWithContentsOfFile:"); + late final _sel_initWithContentsOfURL_1 = + _registerName1("initWithContentsOfURL:"); + ffi.Pointer _objc_msgSend_184( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_184( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_184Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_184 = __objc_msgSend_184Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringWithContentsOfFile_1 = + _registerName1("stringWithContentsOfFile:"); + late final _sel_stringWithContentsOfURL_1 = + _registerName1("stringWithContentsOfURL:"); + late final _sel_initWithCStringNoCopy_length_freeWhenDone_1 = + _registerName1("initWithCStringNoCopy:length:freeWhenDone:"); + ffi.Pointer _objc_msgSend_185( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + bool freeBuffer, + ) { + return __objc_msgSend_185( + obj, + sel, + bytes, + length, + freeBuffer, + ); + } + + late final __objc_msgSend_185Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_185 = __objc_msgSend_185Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, bool)>(); + + late final _sel_initWithCString_length_1 = + _registerName1("initWithCString:length:"); + late final _sel_initWithCString_1 = _registerName1("initWithCString:"); + late final _sel_stringWithCString_length_1 = + _registerName1("stringWithCString:length:"); + late final _sel_stringWithCString_1 = _registerName1("stringWithCString:"); + late final _sel_getCharacters_1 = _registerName1("getCharacters:"); + void _objc_msgSend_186( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + ) { + return __objc_msgSend_186( + obj, + sel, + buffer, + ); + } + + late final __objc_msgSend_186Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_186 = __objc_msgSend_186Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_stringByAddingPercentEncodingWithAllowedCharacters_1 = + _registerName1("stringByAddingPercentEncodingWithAllowedCharacters:"); + ffi.Pointer _objc_msgSend_187( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer allowedCharacters, + ) { + return __objc_msgSend_187( + obj, + sel, + allowedCharacters, + ); + } + + late final __objc_msgSend_187Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_187 = __objc_msgSend_187Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByRemovingPercentEncoding1 = + _registerName1("stringByRemovingPercentEncoding"); + late final _sel_stringByAddingPercentEscapesUsingEncoding_1 = + _registerName1("stringByAddingPercentEscapesUsingEncoding:"); + ffi.Pointer _objc_msgSend_188( + ffi.Pointer obj, + ffi.Pointer sel, + int enc, + ) { + return __objc_msgSend_188( + obj, + sel, + enc, + ); + } + + late final __objc_msgSend_188Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_188 = __objc_msgSend_188Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_stringByReplacingPercentEscapesUsingEncoding_1 = + _registerName1("stringByReplacingPercentEscapesUsingEncoding:"); + late final _class_NSMutableString1 = _getClass1("NSMutableString"); + late final _sel_replaceCharactersInRange_withString_1 = + _registerName1("replaceCharactersInRange:withString:"); + void _objc_msgSend_189( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ffi.Pointer aString, + ) { + return __objc_msgSend_189( + obj, + sel, + range, + aString, + ); + } + + late final __objc_msgSend_189Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + NSRange, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_189 = __objc_msgSend_189Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, NSRange, + ffi.Pointer)>(); + + late final _sel_insertString_atIndex_1 = + _registerName1("insertString:atIndex:"); + void _objc_msgSend_190( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + int loc, + ) { + return __objc_msgSend_190( + obj, + sel, + aString, + loc, + ); + } + + late final __objc_msgSend_190Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_190 = __objc_msgSend_190Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_deleteCharactersInRange_1 = + _registerName1("deleteCharactersInRange:"); + void _objc_msgSend_191( + ffi.Pointer obj, + ffi.Pointer sel, + NSRange range, + ) { + return __objc_msgSend_191( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_191Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + NSRange)>>('objc_msgSend'); + late final __objc_msgSend_191 = __objc_msgSend_191Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, NSRange)>(); + + late final _sel_appendString_1 = _registerName1("appendString:"); + late final _sel_appendFormat_1 = _registerName1("appendFormat:"); + late final _sel_setString_1 = _registerName1("setString:"); + late final _sel_replaceOccurrencesOfString_withString_options_range_1 = + _registerName1("replaceOccurrencesOfString:withString:options:range:"); + int _objc_msgSend_192( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + int options, + NSRange searchRange, + ) { + return __objc_msgSend_192( + obj, + sel, + target, + replacement, + options, + searchRange, + ); + } + + late final __objc_msgSend_192Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + NSRange)>>('objc_msgSend'); + late final __objc_msgSend_192 = __objc_msgSend_192Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, NSRange)>(); + + late final _sel_applyTransform_reverse_range_updatedRange_1 = + _registerName1("applyTransform:reverse:range:updatedRange:"); + bool _objc_msgSend_193( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer transform, + bool reverse, + NSRange range, + ffi.Pointer resultingRange, + ) { + return __objc_msgSend_193( + obj, + sel, + transform, + reverse, + range, + resultingRange, + ); + } + + late final __objc_msgSend_193Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_193 = __objc_msgSend_193Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, NSRange, ffi.Pointer)>(); + + late final _sel_initWithCapacity_1 = _registerName1("initWithCapacity:"); + ffi.Pointer _objc_msgSend_194( + ffi.Pointer obj, + ffi.Pointer sel, + int capacity, + ) { + return __objc_msgSend_194( + obj, + sel, + capacity, + ); + } + + late final __objc_msgSend_194Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_194 = __objc_msgSend_194Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); + late final _class_NSSimpleCString1 = _getClass1("NSSimpleCString"); + late final _class_NSConstantString1 = _getClass1("NSConstantString"); + late final _class_NSURLQueryItem1 = _getClass1("NSURLQueryItem"); + late final _sel_initWithName_value_1 = _registerName1("initWithName:value:"); + instancetype _objc_msgSend_195( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer value, + ) { + return __objc_msgSend_195( + obj, + sel, + name, + value, + ); + } + + late final __objc_msgSend_195Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_195 = __objc_msgSend_195Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_queryItemWithName_value_1 = + _registerName1("queryItemWithName:value:"); + late final _sel_name1 = _registerName1("name"); + late final _sel_value1 = _registerName1("value"); + late final _class_NSURLComponents1 = _getClass1("NSURLComponents"); + late final _sel_initWithURL_resolvingAgainstBaseURL_1 = + _registerName1("initWithURL:resolvingAgainstBaseURL:"); + instancetype _objc_msgSend_196( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool resolve, + ) { + return __objc_msgSend_196( + obj, + sel, + url, + resolve, + ); + } + + late final __objc_msgSend_196Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_196 = __objc_msgSend_196Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_componentsWithURL_resolvingAgainstBaseURL_1 = + _registerName1("componentsWithURL:resolvingAgainstBaseURL:"); + late final _sel_componentsWithString_1 = + _registerName1("componentsWithString:"); + late final _sel_componentsWithString_encodingInvalidCharacters_1 = + _registerName1("componentsWithString:encodingInvalidCharacters:"); + late final _sel_URL1 = _registerName1("URL"); + late final _sel_URLRelativeToURL_1 = _registerName1("URLRelativeToURL:"); + ffi.Pointer _objc_msgSend_197( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_197( + obj, + sel, + baseURL, + ); + } + + late final __objc_msgSend_197Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_197 = __objc_msgSend_197Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setScheme_1 = _registerName1("setScheme:"); + void _objc_msgSend_198( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_198( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_198Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_198 = __objc_msgSend_198Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setUser_1 = _registerName1("setUser:"); + late final _sel_setPassword_1 = _registerName1("setPassword:"); + late final _sel_setHost_1 = _registerName1("setHost:"); + late final _sel_setPort_1 = _registerName1("setPort:"); + void _objc_msgSend_199( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_199( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_199Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_199 = __objc_msgSend_199Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setPath_1 = _registerName1("setPath:"); + late final _sel_setQuery_1 = _registerName1("setQuery:"); + late final _sel_setFragment_1 = _registerName1("setFragment:"); + late final _sel_percentEncodedUser1 = _registerName1("percentEncodedUser"); + late final _sel_setPercentEncodedUser_1 = + _registerName1("setPercentEncodedUser:"); + late final _sel_percentEncodedPassword1 = + _registerName1("percentEncodedPassword"); + late final _sel_setPercentEncodedPassword_1 = + _registerName1("setPercentEncodedPassword:"); + late final _sel_percentEncodedHost1 = _registerName1("percentEncodedHost"); + late final _sel_setPercentEncodedHost_1 = + _registerName1("setPercentEncodedHost:"); + late final _sel_percentEncodedPath1 = _registerName1("percentEncodedPath"); + late final _sel_setPercentEncodedPath_1 = + _registerName1("setPercentEncodedPath:"); + late final _sel_percentEncodedQuery1 = _registerName1("percentEncodedQuery"); + late final _sel_setPercentEncodedQuery_1 = + _registerName1("setPercentEncodedQuery:"); + late final _sel_percentEncodedFragment1 = + _registerName1("percentEncodedFragment"); + late final _sel_setPercentEncodedFragment_1 = + _registerName1("setPercentEncodedFragment:"); + late final _sel_encodedHost1 = _registerName1("encodedHost"); + late final _sel_setEncodedHost_1 = _registerName1("setEncodedHost:"); + late final _sel_rangeOfScheme1 = _registerName1("rangeOfScheme"); + NSRange _objc_msgSend_200( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_200( + obj, + sel, + ); + } + + late final __objc_msgSend_200Ptr = _lookup< + ffi.NativeFunction< + NSRange Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_200 = __objc_msgSend_200Ptr.asFunction< + NSRange Function(ffi.Pointer, ffi.Pointer)>(); + + void _objc_msgSend_200_stret( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_200_stret( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_200_stretPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_200_stret = __objc_msgSend_200_stretPtr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_rangeOfUser1 = _registerName1("rangeOfUser"); + late final _sel_rangeOfPassword1 = _registerName1("rangeOfPassword"); + late final _sel_rangeOfHost1 = _registerName1("rangeOfHost"); + late final _sel_rangeOfPort1 = _registerName1("rangeOfPort"); + late final _sel_rangeOfPath1 = _registerName1("rangeOfPath"); + late final _sel_rangeOfQuery1 = _registerName1("rangeOfQuery"); + late final _sel_rangeOfFragment1 = _registerName1("rangeOfFragment"); + late final _sel_queryItems1 = _registerName1("queryItems"); + late final _sel_setQueryItems_1 = _registerName1("setQueryItems:"); + void _objc_msgSend_201( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_201( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_201Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_201 = __objc_msgSend_201Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_percentEncodedQueryItems1 = + _registerName1("percentEncodedQueryItems"); + late final _sel_setPercentEncodedQueryItems_1 = + _registerName1("setPercentEncodedQueryItems:"); + late final _class_NSFileSecurity1 = _getClass1("NSFileSecurity"); +} + +class _ObjCWrapper implements ffi.Finalizable { + final ffi.Pointer _id; + final Foundation _lib; + bool _pendingRelease; + + _ObjCWrapper._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._objc_retain(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer2.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC object held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._objc_release(_id.cast()); + _lib._objc_releaseFinalizer2.detach(this); + } else { + throw StateError( + 'Released an ObjC object that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCWrapper && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer get pointer => _id; + + ffi.Pointer _retainAndReturnId() { + _lib._objc_retain(_id.cast()); + return _id; + } +} + +class NSString extends NSObject { + NSString._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSString] that points to the same underlying object as [other]. + static NSString castFrom(T other) { + return NSString._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSString] that wraps the given raw object pointer. + static NSString castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSString1); + } + + factory NSString(Foundation _lib, String str) { + final cstr = str.toNativeUtf16(); + final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); + pkg_ffi.calloc.free(cstr); + return nsstr; + } + + @override + String toString() { + final data = + dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); + return data!.bytes.cast().toDartString(length: length); + } + + /// NSString primitives. A minimal subclass of NSString just needs to implement these two, along with an init method appropriate for that subclass. We also recommend overriding getCharacters:range: for performance. + int get length { + return _lib._objc_msgSend_12(_id, _lib._sel_length1); + } + + int characterAtIndex_(int index) { + return _lib._objc_msgSend_105(_id, _lib._sel_characterAtIndex_1, index); + } + + /// The initializers available to subclasses. See further below for additional init methods. + @override + NSString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// To avoid breaking up character sequences such as Emoji, you can do: + /// [str substringFromIndex:[str rangeOfComposedCharacterSequenceAtIndex:index].location] + /// [str substringToIndex:NSMaxRange([str rangeOfComposedCharacterSequenceAtIndex:index])] + /// [str substringWithRange:[str rangeOfComposedCharacterSequencesForRange:range] + NSString substringFromIndex_(int from) { + final _ret = + _lib._objc_msgSend_106(_id, _lib._sel_substringFromIndex_1, from); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString substringToIndex_(int to) { + final _ret = _lib._objc_msgSend_106(_id, _lib._sel_substringToIndex_1, to); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Use with rangeOfComposedCharacterSequencesForRange: to avoid breaking up character sequences + NSString substringWithRange_(NSRange range) { + final _ret = + _lib._objc_msgSend_107(_id, _lib._sel_substringWithRange_1, range); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Use with rangeOfComposedCharacterSequencesForRange: to avoid breaking up character sequences + void getCharacters_range_( + ffi.Pointer buffer, NSRange range) { + _lib._objc_msgSend_108(_id, _lib._sel_getCharacters_range_1, buffer, range); + } + + /// In the compare: methods, the range argument specifies the subrange, rather than the whole, of the receiver to use in the comparison. The range is not applied to the search string. For example, [@"AB" compare:@"ABC" options:0 range:NSMakeRange(0,1)] compares "A" to "ABC", not "A" to "A", and will return NSOrderedAscending. It is an error to specify a range that is outside of the receiver's bounds, and an exception may be raised. + int compare_(NSString string) { + return _lib._objc_msgSend_109(_id, _lib._sel_compare_1, string._id); + } + + int compare_options_(NSString string, int mask) { + return _lib._objc_msgSend_110( + _id, _lib._sel_compare_options_1, string._id, mask); + } + + int compare_options_range_( + NSString string, int mask, NSRange rangeOfReceiverToCompare) { + return _lib._objc_msgSend_111(_id, _lib._sel_compare_options_range_1, + string._id, mask, rangeOfReceiverToCompare); + } + + /// locale arg used to be a dictionary pre-Leopard. We now accept NSLocale. Assumes the current locale if non-nil and non-NSLocale. nil continues to mean canonical compare, which doesn't depend on user's locale choice. + int compare_options_range_locale_(NSString string, int mask, + NSRange rangeOfReceiverToCompare, NSObject? locale) { + return _lib._objc_msgSend_112(_id, _lib._sel_compare_options_range_locale_1, + string._id, mask, rangeOfReceiverToCompare, locale?._id ?? ffi.nullptr); + } + + int caseInsensitiveCompare_(NSString string) { + return _lib._objc_msgSend_109( + _id, _lib._sel_caseInsensitiveCompare_1, string._id); + } + + int localizedCompare_(NSString string) { + return _lib._objc_msgSend_109( + _id, _lib._sel_localizedCompare_1, string._id); + } + + int localizedCaseInsensitiveCompare_(NSString string) { + return _lib._objc_msgSend_109( + _id, _lib._sel_localizedCaseInsensitiveCompare_1, string._id); + } + + /// localizedStandardCompare:, added in 10.6, should be used whenever file names or other strings are presented in lists and tables where Finder-like sorting is appropriate. The exact behavior of this method may be tweaked in future releases, and will be different under different localizations, so clients should not depend on the exact sorting order of the strings. + int localizedStandardCompare_(NSString string) { + return _lib._objc_msgSend_109( + _id, _lib._sel_localizedStandardCompare_1, string._id); + } + + bool isEqualToString_(NSString aString) { + return _lib._objc_msgSend_113( + _id, _lib._sel_isEqualToString_1, aString._id); + } + + /// These perform locale unaware prefix or suffix match. If you need locale awareness, use rangeOfString:options:range:locale:, passing NSAnchoredSearch (or'ed with NSBackwardsSearch for suffix, and NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch if needed) for options, NSMakeRange(0, [receiver length]) for range, and [NSLocale currentLocale] for locale. + bool hasPrefix_(NSString str) { + return _lib._objc_msgSend_113(_id, _lib._sel_hasPrefix_1, str._id); + } + + bool hasSuffix_(NSString str) { + return _lib._objc_msgSend_113(_id, _lib._sel_hasSuffix_1, str._id); + } + + NSString commonPrefixWithString_options_(NSString str, int mask) { + final _ret = _lib._objc_msgSend_114( + _id, _lib._sel_commonPrefixWithString_options_1, str._id, mask); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Simple convenience methods for string searching. containsString: returns YES if the target string is contained within the receiver. Same as calling rangeOfString:options: with no options, thus doing a case-sensitive, locale-unaware search. localizedCaseInsensitiveContainsString: is the case-insensitive variant which also takes the current locale into effect. Starting in 10.11 and iOS9, the new localizedStandardRangeOfString: or localizedStandardContainsString: APIs are even better convenience methods for user level searching. More sophisticated needs can be achieved by calling rangeOfString:options:range:locale: directly. + bool containsString_(NSString str) { + return _lib._objc_msgSend_113(_id, _lib._sel_containsString_1, str._id); + } + + bool localizedCaseInsensitiveContainsString_(NSString str) { + return _lib._objc_msgSend_113( + _id, _lib._sel_localizedCaseInsensitiveContainsString_1, str._id); + } + + /// The following two are the most appropriate methods for doing user-level string searches, similar to how searches are done generally in the system. The search is locale-aware, case and diacritic insensitive. As with other APIs, "standard" in the name implies "system default behavior," so the exact list of search options applied may change over time. If you need more control over the search options, please use the rangeOfString:options:range:locale: method. You can pass [NSLocale currentLocale] for searches in user's locale. + bool localizedStandardContainsString_(NSString str) { + return _lib._objc_msgSend_113( + _id, _lib._sel_localizedStandardContainsString_1, str._id); + } + + void localizedStandardRangeOfString_( + ffi.Pointer stret, NSString str) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_115_stret( + stret, _id, _lib._sel_localizedStandardRangeOfString_1, str._id) + : stret.ref = _lib._objc_msgSend_115( + _id, _lib._sel_localizedStandardRangeOfString_1, str._id); + } + + /// These methods perform string search, looking for the searchString within the receiver string. These return length==0 if the target string is not found. So, to check for containment: ([str rangeOfString:@"target"].length > 0). Note that the length of the range returned by these methods might be different than the length of the target string, due composed characters and such. + /// + /// Note that the first three methods do not take locale arguments, and perform the search in a non-locale aware fashion, which is not appropriate for user-level searching. To do user-level string searching, use the last method, specifying locale:[NSLocale currentLocale], or better yet, use localizedStandardRangeOfString: or localizedStandardContainsString:. + /// + /// The range argument specifies the subrange, rather than the whole, of the receiver to use in the search. It is an error to specify a range that is outside of the receiver's bounds, and an exception may be raised. + void rangeOfString_(ffi.Pointer stret, NSString searchString) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_115_stret( + stret, _id, _lib._sel_rangeOfString_1, searchString._id) + : stret.ref = _lib._objc_msgSend_115( + _id, _lib._sel_rangeOfString_1, searchString._id); + } + + void rangeOfString_options_( + ffi.Pointer stret, NSString searchString, int mask) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_116_stret(stret, _id, + _lib._sel_rangeOfString_options_1, searchString._id, mask) + : stret.ref = _lib._objc_msgSend_116( + _id, _lib._sel_rangeOfString_options_1, searchString._id, mask); + } + + void rangeOfString_options_range_(ffi.Pointer stret, + NSString searchString, int mask, NSRange rangeOfReceiverToSearch) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_117_stret( + stret, + _id, + _lib._sel_rangeOfString_options_range_1, + searchString._id, + mask, + rangeOfReceiverToSearch) + : stret.ref = _lib._objc_msgSend_117( + _id, + _lib._sel_rangeOfString_options_range_1, + searchString._id, + mask, + rangeOfReceiverToSearch); + } + + void rangeOfString_options_range_locale_( + ffi.Pointer stret, + NSString searchString, + int mask, + NSRange rangeOfReceiverToSearch, + NSLocale? locale) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_118_stret( + stret, + _id, + _lib._sel_rangeOfString_options_range_locale_1, + searchString._id, + mask, + rangeOfReceiverToSearch, + locale?._id ?? ffi.nullptr) + : stret.ref = _lib._objc_msgSend_118( + _id, + _lib._sel_rangeOfString_options_range_locale_1, + searchString._id, + mask, + rangeOfReceiverToSearch, + locale?._id ?? ffi.nullptr); + } + + /// These return the range of the first character from the set in the string, not the range of a sequence of characters. + /// + /// The range argument specifies the subrange, rather than the whole, of the receiver to use in the search. It is an error to specify a range that is outside of the receiver's bounds, and an exception may be raised. + void rangeOfCharacterFromSet_( + ffi.Pointer stret, NSCharacterSet searchSet) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_129_stret( + stret, _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id) + : stret.ref = _lib._objc_msgSend_129( + _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id); + } + + void rangeOfCharacterFromSet_options_( + ffi.Pointer stret, NSCharacterSet searchSet, int mask) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_130_stret(stret, _id, + _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask) + : stret.ref = _lib._objc_msgSend_130(_id, + _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask); + } + + void rangeOfCharacterFromSet_options_range_(ffi.Pointer stret, + NSCharacterSet searchSet, int mask, NSRange rangeOfReceiverToSearch) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_131_stret( + stret, + _id, + _lib._sel_rangeOfCharacterFromSet_options_range_1, + searchSet._id, + mask, + rangeOfReceiverToSearch) + : stret.ref = _lib._objc_msgSend_131( + _id, + _lib._sel_rangeOfCharacterFromSet_options_range_1, + searchSet._id, + mask, + rangeOfReceiverToSearch); + } + + void rangeOfComposedCharacterSequenceAtIndex_( + ffi.Pointer stret, int index) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_132_stret(stret, _id, + _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index) + : stret.ref = _lib._objc_msgSend_132( + _id, _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index); + } + + void rangeOfComposedCharacterSequencesForRange_( + ffi.Pointer stret, NSRange range) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_133_stret(stret, _id, + _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range) + : stret.ref = _lib._objc_msgSend_133( + _id, _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range); + } + + NSString stringByAppendingString_(NSString aString) { + final _ret = _lib._objc_msgSend_134( + _id, _lib._sel_stringByAppendingString_1, aString._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByAppendingFormat_(NSString format) { + final _ret = _lib._objc_msgSend_134( + _id, _lib._sel_stringByAppendingFormat_1, format._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// The following convenience methods all skip initial space characters (whitespaceSet) and ignore trailing characters. They are not locale-aware. NSScanner or NSNumberFormatter can be used for more powerful and locale-aware parsing of numbers. + double get doubleValue { + return _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_61_fpret(_id, _lib._sel_doubleValue1) + : _lib._objc_msgSend_61(_id, _lib._sel_doubleValue1); + } + + double get floatValue { + return _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_60_fpret(_id, _lib._sel_floatValue1) + : _lib._objc_msgSend_60(_id, _lib._sel_floatValue1); + } + + int get intValue { + return _lib._objc_msgSend_55(_id, _lib._sel_intValue1); + } + + int get integerValue { + return _lib._objc_msgSend_57(_id, _lib._sel_integerValue1); + } + + int get longLongValue { + return _lib._objc_msgSend_58(_id, _lib._sel_longLongValue1); + } + + /// Skips initial space characters (whitespaceSet), or optional -/+ sign followed by zeroes. Returns YES on encountering one of "Y", "y", "T", "t", or a digit 1-9. It ignores any trailing characters. + bool get boolValue { + return _lib._objc_msgSend_11(_id, _lib._sel_boolValue1); + } + + /// The following three return the canonical (non-localized) mappings. They are suitable for programming operations that require stable results not depending on the user's locale preference. For locale-aware case mapping for strings presented to users, use the "localized" methods below. + NSString get uppercaseString { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_uppercaseString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get lowercaseString { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_lowercaseString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get capitalizedString { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_capitalizedString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// The following three return the locale-aware case mappings. They are suitable for strings presented to the user. + NSString get localizedUppercaseString { + final _ret = + _lib._objc_msgSend_13(_id, _lib._sel_localizedUppercaseString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get localizedLowercaseString { + final _ret = + _lib._objc_msgSend_13(_id, _lib._sel_localizedLowercaseString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get localizedCapitalizedString { + final _ret = + _lib._objc_msgSend_13(_id, _lib._sel_localizedCapitalizedString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// The following methods perform localized case mappings based on the locale specified. Passing nil indicates the canonical mapping. For the user preference locale setting, specify +[NSLocale currentLocale]. + NSString uppercaseStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_135( + _id, _lib._sel_uppercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString lowercaseStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_135( + _id, _lib._sel_lowercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString capitalizedStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_135(_id, + _lib._sel_capitalizedStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void getLineStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer lineEndPtr, + ffi.Pointer contentsEndPtr, + NSRange range) { + _lib._objc_msgSend_136( + _id, + _lib._sel_getLineStart_end_contentsEnd_forRange_1, + startPtr, + lineEndPtr, + contentsEndPtr, + range); + } + + void lineRangeForRange_(ffi.Pointer stret, NSRange range) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_133_stret( + stret, _id, _lib._sel_lineRangeForRange_1, range) + : stret.ref = + _lib._objc_msgSend_133(_id, _lib._sel_lineRangeForRange_1, range); + } + + void getParagraphStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer parEndPtr, + ffi.Pointer contentsEndPtr, + NSRange range) { + _lib._objc_msgSend_136( + _id, + _lib._sel_getParagraphStart_end_contentsEnd_forRange_1, + startPtr, + parEndPtr, + contentsEndPtr, + range); + } + + void paragraphRangeForRange_(ffi.Pointer stret, NSRange range) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_133_stret( + stret, _id, _lib._sel_paragraphRangeForRange_1, range) + : stret.ref = _lib._objc_msgSend_133( + _id, _lib._sel_paragraphRangeForRange_1, range); + } + + /// In the enumerate methods, the blocks will be invoked inside an autorelease pool, so any values assigned inside the block should be retained. + void enumerateSubstringsInRange_options_usingBlock_(NSRange range, int opts, + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { + _lib._objc_msgSend_137( + _id, + _lib._sel_enumerateSubstringsInRange_options_usingBlock_1, + range, + opts, + block._id); + } + + void enumerateLinesUsingBlock_(ObjCBlock_ffiVoid_NSString_bool block) { + _lib._objc_msgSend_138( + _id, _lib._sel_enumerateLinesUsingBlock_1, block._id); + } + + /// Convenience to return null-terminated UTF8 representation + ffi.Pointer get UTF8String { + return _lib._objc_msgSend_35(_id, _lib._sel_UTF8String1); + } + + /// Result in O(1) time; a rough estimate + int get fastestEncoding { + return _lib._objc_msgSend_12(_id, _lib._sel_fastestEncoding1); + } + + /// Result in O(n) time; the encoding in which the string is most compact + int get smallestEncoding { + return _lib._objc_msgSend_12(_id, _lib._sel_smallestEncoding1); + } + + /// External representation + NSData? dataUsingEncoding_allowLossyConversion_(int encoding, bool lossy) { + final _ret = _lib._objc_msgSend_139(_id, + _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + /// External representation + NSData? dataUsingEncoding_(int encoding) { + final _ret = + _lib._objc_msgSend_140(_id, _lib._sel_dataUsingEncoding_1, encoding); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + bool canBeConvertedToEncoding_(int encoding) { + return _lib._objc_msgSend_141( + _id, _lib._sel_canBeConvertedToEncoding_1, encoding); + } + + /// "Autoreleased"; NULL return if encoding conversion not possible; for performance reasons, lifetime of this should not be considered longer than the lifetime of the receiving string (if the receiver string is freed, this might go invalid then, before the end of the autorelease scope). Use only with 8-bit encodings, and not encodings such as UTF-16 or UTF-32. + ffi.Pointer cStringUsingEncoding_(int encoding) { + return _lib._objc_msgSend_142( + _id, _lib._sel_cStringUsingEncoding_1, encoding); + } + + /// NO return if conversion not possible due to encoding errors or too small of a buffer. The buffer should include room for maxBufferCount bytes; this number should accomodate the expected size of the return value plus the NULL termination character, which this method adds. (So note that the maxLength passed to this method is one more than the one you would have passed to the deprecated getCString:maxLength:.) Use only with 8-bit encodings, and not encodings such as UTF-16 or UTF-32. + bool getCString_maxLength_encoding_( + ffi.Pointer buffer, int maxBufferCount, int encoding) { + return _lib._objc_msgSend_143( + _id, + _lib._sel_getCString_maxLength_encoding_1, + buffer, + maxBufferCount, + encoding); + } + + /// Use this to convert string section at a time into a fixed-size buffer, without any allocations. Does not NULL-terminate. + /// buffer is the buffer to write to; if NULL, this method can be used to computed size of needed buffer. + /// maxBufferCount is the length of the buffer in bytes. It's a good idea to make sure this is at least enough to hold one character's worth of conversion. + /// usedBufferCount is the length of the buffer used up by the current conversion. Can be NULL. + /// encoding is the encoding to convert to. + /// options specifies the options to apply. + /// range is the range to convert. + /// leftOver is the remaining range. Can be NULL. + /// YES return indicates some characters were converted. Conversion might usually stop when the buffer fills, + /// but it might also stop when the conversion isn't possible due to the chosen encoding. + bool getBytes_maxLength_usedLength_encoding_options_range_remainingRange_( + ffi.Pointer buffer, + int maxBufferCount, + ffi.Pointer usedBufferCount, + int encoding, + int options, + NSRange range, + ffi.Pointer leftover) { + return _lib._objc_msgSend_144( + _id, + _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1, + buffer, + maxBufferCount, + usedBufferCount, + encoding, + options, + range, + leftover); + } + + /// Result in O(1) time; the estimate may be way over what's needed. Returns 0 on error (overflow) + int maximumLengthOfBytesUsingEncoding_(int enc) { + return _lib._objc_msgSend_145( + _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc); + } + + /// Result in O(n) time; the result is exact. Returns 0 on error (cannot convert to specified encoding, or overflow) + int lengthOfBytesUsingEncoding_(int enc) { + return _lib._objc_msgSend_145( + _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc); + } + + static ffi.Pointer getAvailableStringEncodings( + Foundation _lib) { + return _lib._objc_msgSend_146( + _lib._class_NSString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + Foundation _lib, int encoding) { + final _ret = _lib._objc_msgSend_106(_lib._class_NSString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Should be rarely used + static int getDefaultCStringEncoding(Foundation _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSString1, _lib._sel_defaultCStringEncoding1); + } + + NSString get decomposedStringWithCanonicalMapping { + final _ret = _lib._objc_msgSend_13( + _id, _lib._sel_decomposedStringWithCanonicalMapping1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get precomposedStringWithCanonicalMapping { + final _ret = _lib._objc_msgSend_13( + _id, _lib._sel_precomposedStringWithCanonicalMapping1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get decomposedStringWithCompatibilityMapping { + final _ret = _lib._objc_msgSend_13( + _id, _lib._sel_decomposedStringWithCompatibilityMapping1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString get precomposedStringWithCompatibilityMapping { + final _ret = _lib._objc_msgSend_13( + _id, _lib._sel_precomposedStringWithCompatibilityMapping1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject componentsSeparatedByString_(NSString separator) { + final _ret = _lib._objc_msgSend_18( + _id, _lib._sel_componentsSeparatedByString_1, separator._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject componentsSeparatedByCharactersInSet_(NSCharacterSet separator) { + final _ret = _lib._objc_msgSend_147( + _id, _lib._sel_componentsSeparatedByCharactersInSet_1, separator._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString stringByTrimmingCharactersInSet_(NSCharacterSet set) { + final _ret = _lib._objc_msgSend_148( + _id, _lib._sel_stringByTrimmingCharactersInSet_1, set._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByPaddingToLength_withString_startingAtIndex_( + int newLength, NSString padString, int padIndex) { + final _ret = _lib._objc_msgSend_149( + _id, + _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1, + newLength, + padString._id, + padIndex); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Returns a string with the character folding options applied. theOptions is a mask of compare flags with *InsensitiveSearch suffix. + NSString stringByFoldingWithOptions_locale_(int options, NSLocale? locale) { + final _ret = _lib._objc_msgSend_150( + _id, + _lib._sel_stringByFoldingWithOptions_locale_1, + options, + locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Replace all occurrences of the target string in the specified range with replacement. Specified compare options are used for matching target. If NSRegularExpressionSearch is specified, the replacement is treated as a template, as in the corresponding NSRegularExpression methods, and no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch. + NSString stringByReplacingOccurrencesOfString_withString_options_range_( + NSString target, NSString replacement, int options, NSRange searchRange) { + final _ret = _lib._objc_msgSend_151( + _id, + _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1, + target._id, + replacement._id, + options, + searchRange); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Replace all occurrences of the target string with replacement. Invokes the above method with 0 options and range of the whole string. + NSString stringByReplacingOccurrencesOfString_withString_( + NSString target, NSString replacement) { + final _ret = _lib._objc_msgSend_152( + _id, + _lib._sel_stringByReplacingOccurrencesOfString_withString_1, + target._id, + replacement._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Replace characters in range with the specified string, returning new string. + NSString stringByReplacingCharactersInRange_withString_( + NSRange range, NSString replacement) { + final _ret = _lib._objc_msgSend_153( + _id, + _lib._sel_stringByReplacingCharactersInRange_withString_1, + range, + replacement._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Returns nil if reverse not applicable or transform is invalid + NSString? stringByApplyingTransform_reverse_( + NSString transform, bool reverse) { + final _ret = _lib._objc_msgSend_154(_id, + _lib._sel_stringByApplyingTransform_reverse_1, transform._id, reverse); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Write to specified url or path using the specified encoding. The optional error return is to indicate file system or encoding errors. + bool writeToURL_atomically_encoding_error_(NSURL url, bool useAuxiliaryFile, + int enc, ffi.Pointer> error) { + return _lib._objc_msgSend_155( + _id, + _lib._sel_writeToURL_atomically_encoding_error_1, + url._id, + useAuxiliaryFile, + enc, + error); + } + + bool writeToFile_atomically_encoding_error_( + NSString path, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error) { + return _lib._objc_msgSend_156( + _id, + _lib._sel_writeToFile_atomically_encoding_error_1, + path._id, + useAuxiliaryFile, + enc, + error); + } + + NSString get description { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_description1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int get hash { + return _lib._objc_msgSend_12(_id, _lib._sel_hash1); + } + + /// "NoCopy" is a hint + NSString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_157( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSString._(_ret, _lib, retain: false, release: true); + } + + NSString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_158( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: false, release: true); + } + + NSString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithUTF8String_(ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithString_(NSString aString) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithString_1, aString._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_(NSString format) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithFormat_1, format._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_arguments_( + NSString format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_161( + _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_initWithFormat_locale_1, + format._id, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_163( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format._id, + locale?._id ?? ffi.nullptr, + argList); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_166( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format._id, + validFormatSpecifiers._id, + argList, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_167( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _lib._objc_msgSend_168( + _id, _lib._sel_initWithData_encoding_1, data._id, encoding); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_169( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// "NoCopy" is a hint + NSString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_170( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: false, release: true); + } + + NSString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_171( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString string(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_string1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithString_(Foundation _lib, NSString string) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSString1, _lib._sel_stringWithString_1, string._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithCharacters_length_( + Foundation _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159(_lib._class_NSString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithUTF8String_( + Foundation _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160(_lib._class_NSString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithFormat_(Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSString1, _lib._sel_stringWithFormat_1, format._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString localizedStringWithFormat_(Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSString1, + _lib._sel_localizedStringWithFormat_1, format._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_172(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithCString_encoding_( + Foundation _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// These use the specified encoding. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + NSString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173(_id, + _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithContentsOfURL_encoding_error_(Foundation _lib, + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithContentsOfFile_encoding_error_(Foundation _lib, + NSString path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// These try to determine the encoding, and return the encoding which was used. Note that these methods might get "smarter" in subsequent releases of the system, and use additional techniques for recognizing encodings. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + NSString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithContentsOfURL_usedEncoding_error_( + Foundation _lib, + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString? stringWithContentsOfFile_usedEncoding_error_( + Foundation _lib, + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// This API is used to detect the string encoding of a given raw data. It can also do lossy string conversion. It converts the data to a string in the detected string encoding. The data object contains the raw bytes, and the option dictionary contains the hints and parameters for the analysis. The opts dictionary can be nil. If the string parameter is not NULL, the string created by the detected string encoding is returned. The lossy substitution string is emitted in the output string for characters that could not be converted when lossy conversion is enabled. The usedLossyConversion indicates if there is any lossy conversion in the resulted string. If no encoding can be detected, 0 is returned. + /// + /// The possible items for the dictionary are: + /// 1) an array of suggested string encodings (without specifying the 3rd option in this list, all string encodings are considered but the ones in the array will have a higher preference; moreover, the order of the encodings in the array is important: the first encoding has a higher preference than the second one in the array) + /// 2) an array of string encodings not to use (the string encodings in this list will not be considered at all) + /// 3) a boolean option indicating whether only the suggested string encodings are considered + /// 4) a boolean option indicating whether lossy is allowed + /// 5) an option that gives a specific string to substitude for mystery bytes + /// 6) the current user's language + /// 7) a boolean option indicating whether the data is generated by Windows + /// + /// If the values in the dictionary have wrong types (for example, the value of NSStringEncodingDetectionSuggestedEncodingsKey is not an array), an exception is thrown. + /// If the values in the dictionary are unknown (for example, the value in the array of suggested string encodings is not a valid encoding), the values will be ignored. + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + Foundation _lib, + NSData data, + NSObject? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_177( + _lib._class_NSString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data._id, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + /// These methods are no longer recommended since they do not work with property lists and strings files in binary plist format. Please use the APIs in NSPropertyList.h instead. + NSObject propertyList() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_propertyList1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? propertyListFromStringsFileFormat() { + final _ret = _lib._objc_msgSend_178( + _id, _lib._sel_propertyListFromStringsFileFormat1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + /// The following methods are deprecated and will be removed from this header file in the near future. These methods use NSString.defaultCStringEncoding as the encoding to convert to, which means the results depend on the user's language and potentially other settings. This might be appropriate in some cases, but often these methods are misused, resulting in issues when running in languages other then English. UTF8String in general is a much better choice when converting arbitrary NSStrings into 8-bit representations. Additional potential replacement methods are being introduced in NSString as appropriate. + ffi.Pointer cString() { + return _lib._objc_msgSend_35(_id, _lib._sel_cString1); + } + + ffi.Pointer lossyCString() { + return _lib._objc_msgSend_35(_id, _lib._sel_lossyCString1); + } + + int cStringLength() { + return _lib._objc_msgSend_12(_id, _lib._sel_cStringLength1); + } + + void getCString_(ffi.Pointer bytes) { + _lib._objc_msgSend_179(_id, _lib._sel_getCString_1, bytes); + } + + void getCString_maxLength_(ffi.Pointer bytes, int maxLength) { + _lib._objc_msgSend_180( + _id, _lib._sel_getCString_maxLength_1, bytes, maxLength); + } + + void getCString_maxLength_range_remainingRange_(ffi.Pointer bytes, + int maxLength, NSRange aRange, ffi.Pointer leftoverRange) { + _lib._objc_msgSend_181( + _id, + _lib._sel_getCString_maxLength_range_remainingRange_1, + bytes, + maxLength, + aRange, + leftoverRange); + } + + bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { + return _lib._objc_msgSend_182( + _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL url, bool atomically) { + return _lib._objc_msgSend_183( + _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); + } + + NSObject? initWithContentsOfFile_(NSString path) { + final _ret = _lib._objc_msgSend_25( + _id, _lib._sel_initWithContentsOfFile_1, path._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject? initWithContentsOfURL_(NSURL url) { + final _ret = + _lib._objc_msgSend_184(_id, _lib._sel_initWithContentsOfURL_1, url._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithContentsOfFile_(Foundation _lib, NSString path) { + final _ret = _lib._objc_msgSend_25( + _lib._class_NSString1, _lib._sel_stringWithContentsOfFile_1, path._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(Foundation _lib, NSURL url) { + final _ret = _lib._objc_msgSend_184( + _lib._class_NSString1, _lib._sel_stringWithContentsOfURL_1, url._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject? initWithCStringNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_185( + _id, + _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1, + bytes, + length, + freeBuffer); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject? initWithCString_length_(ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_172( + _id, _lib._sel_initWithCString_length_1, bytes, length); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject? initWithCString_(ffi.Pointer bytes) { + final _ret = + _lib._objc_msgSend_160(_id, _lib._sel_initWithCString_1, bytes); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + Foundation _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_( + Foundation _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_160( + _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// This method is unsafe because it could potentially cause buffer overruns. You should use -getCharacters:range: instead. + void getCharacters_(ffi.Pointer buffer) { + _lib._objc_msgSend_186(_id, _lib._sel_getCharacters_1, buffer); + } + + /// Returns a new string made from the receiver by replacing all characters not in the allowedCharacters set with percent encoded characters. UTF-8 encoding is used to determine the correct percent encoded characters. Entire URL strings cannot be percent-encoded. This method is intended to percent-encode a URL component or subcomponent string, NOT the entire URL string. Any characters in allowedCharacters outside of the 7-bit ASCII range are ignored. + NSString? stringByAddingPercentEncodingWithAllowedCharacters_( + NSCharacterSet allowedCharacters) { + final _ret = _lib._objc_msgSend_187( + _id, + _lib._sel_stringByAddingPercentEncodingWithAllowedCharacters_1, + allowedCharacters._id); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Returns a new string made from the receiver by replacing all percent encoded sequences with the matching UTF-8 characters. + NSString? get stringByRemovingPercentEncoding { + final _ret = + _lib._objc_msgSend_32(_id, _lib._sel_stringByRemovingPercentEncoding1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? stringByAddingPercentEscapesUsingEncoding_(int enc) { + final _ret = _lib._objc_msgSend_188( + _id, _lib._sel_stringByAddingPercentEscapesUsingEncoding_1, enc); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? stringByReplacingPercentEscapesUsingEncoding_(int enc) { + final _ret = _lib._objc_msgSend_188( + _id, _lib._sel_stringByReplacingPercentEscapesUsingEncoding_1, enc); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_new1); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSString1, _lib._sel_allocWithZone_1, zone); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_alloc1); + return NSString._(_ret, _lib, retain: false, release: true); + } +} + +extension StringToNSString on String { + NSString toNSString(Foundation lib) => NSString(lib, this); +} + +final class ObjCSel extends ffi.Opaque {} + +final class ObjCObject extends ffi.Opaque {} + +class NSObject extends _ObjCWrapper { + NSObject._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSObject] that points to the same underlying object as [other]. + static NSObject castFrom(T other) { + return NSObject._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSObject] that wraps the given raw object pointer. + static NSObject castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSObject._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSObject]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); + } + + static void load(Foundation _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); + } + + static void initialize(Foundation _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); + } + + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + void dealloc() { + _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + } + + void finalize() { + _lib._objc_msgSend_1(_id, _lib._sel_finalize1); + } + + NSObject copy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject mutableCopy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject copyWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject mutableCopyWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool instancesRespondToSelector_( + Foundation _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSObject1, + _lib._sel_instancesRespondToSelector_1, aSelector); + } + + static bool conformsToProtocol_(Foundation _lib, Protocol protocol) { + return _lib._objc_msgSend_5( + _lib._class_NSObject1, _lib._sel_conformsToProtocol_1, protocol._id); + } + + ffi.Pointer> methodForSelector_( + ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); + } + + static ffi.Pointer> + instanceMethodForSelector_( + Foundation _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_lib._class_NSObject1, + _lib._sel_instanceMethodForSelector_1, aSelector); + } + + void doesNotRecognizeSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); + } + + NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_8( + _id, _lib._sel_forwardingTargetForSelector_1, aSelector); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void forwardInvocation_(NSInvocation anInvocation) { + _lib._objc_msgSend_9(_id, _lib._sel_forwardInvocation_1, anInvocation._id); + } + + NSMethodSignature methodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_10( + _id, _lib._sel_methodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + static NSMethodSignature instanceMethodSignatureForSelector_( + Foundation _lib, ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_10(_lib._class_NSObject1, + _lib._sel_instanceMethodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + bool allowsWeakReference() { + return _lib._objc_msgSend_11(_id, _lib._sel_allowsWeakReference1); + } + + bool retainWeakReference() { + return _lib._objc_msgSend_11(_id, _lib._sel_retainWeakReference1); + } + + static bool isSubclassOfClass_(Foundation _lib, NSObject aClass) { + return _lib._objc_msgSend_0( + _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); + } + + static bool resolveClassMethod_(Foundation _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); + } + + static bool resolveInstanceMethod_( + Foundation _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); + } + + static int hash(Foundation _lib) { + return _lib._objc_msgSend_12(_lib._class_NSObject1, _lib._sel_hash1); + } + + static NSObject superclass(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject class1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString description(Foundation _lib) { + final _ret = + _lib._objc_msgSend_13(_lib._class_NSObject1, _lib._sel_description1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString debugDescription(Foundation _lib) { + final _ret = _lib._objc_msgSend_13( + _lib._class_NSObject1, _lib._sel_debugDescription1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void URL_resourceDataDidBecomeAvailable_(NSURL sender, NSData newBytes) { + _lib._objc_msgSend_100(_id, _lib._sel_URL_resourceDataDidBecomeAvailable_1, + sender._id, newBytes._id); + } + + void URLResourceDidFinishLoading_(NSURL sender) { + _lib._objc_msgSend_101( + _id, _lib._sel_URLResourceDidFinishLoading_1, sender._id); + } + + void URLResourceDidCancelLoading_(NSURL sender) { + _lib._objc_msgSend_101( + _id, _lib._sel_URLResourceDidCancelLoading_1, sender._id); + } + + void URL_resourceDidFailLoadingWithReason_(NSURL sender, NSString reason) { + _lib._objc_msgSend_102( + _id, + _lib._sel_URL_resourceDidFailLoadingWithReason_1, + sender._id, + reason._id); + } + + /// Given that an error alert has been presented document-modally to the user, and the user has chosen one of the error's recovery options, attempt recovery from the error, and send the selected message to the specified delegate. The option index is an index into the error's array of localized recovery options. The method selected by didRecoverSelector must have the same signature as: + /// + /// - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo; + /// + /// The value passed for didRecover must be YES if error recovery was completely successful, NO otherwise. + void + attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( + NSError error, + int recoveryOptionIndex, + NSObject? delegate, + ffi.Pointer didRecoverSelector, + ffi.Pointer contextInfo) { + _lib._objc_msgSend_103( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, + error._id, + recoveryOptionIndex, + delegate?._id ?? ffi.nullptr, + didRecoverSelector, + contextInfo); + } + + /// Given that an error alert has been presented applicaton-modally to the user, and the user has chosen one of the error's recovery options, attempt recovery from the error, and return YES if error recovery was completely successful, NO otherwise. The recovery option index is an index into the error's array of localized recovery options. + bool attemptRecoveryFromError_optionIndex_( + NSError error, int recoveryOptionIndex) { + return _lib._objc_msgSend_104( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_1, + error._id, + recoveryOptionIndex); + } +} + +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = NSObject; + +final class NSZone extends ffi.Opaque {} + +class Protocol extends _ObjCWrapper { + Protocol._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [Protocol] that points to the same underlying object as [other]. + static Protocol castFrom(T other) { + return Protocol._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [Protocol] that wraps the given raw object pointer. + static Protocol castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return Protocol._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [Protocol]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_Protocol1); + } +} + +class NSInvocation extends _ObjCWrapper { + NSInvocation._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSInvocation] that points to the same underlying object as [other]. + static NSInvocation castFrom(T other) { + return NSInvocation._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSInvocation] that wraps the given raw object pointer. + static NSInvocation castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSInvocation._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSInvocation]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInvocation1); + } +} + +class NSMethodSignature extends _ObjCWrapper { + NSMethodSignature._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMethodSignature] that points to the same underlying object as [other]. + static NSMethodSignature castFrom(T other) { + return NSMethodSignature._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMethodSignature] that wraps the given raw object pointer. + static NSMethodSignature castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMethodSignature._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMethodSignature]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMethodSignature1); + } +} + +class NSURL extends NSObject { + NSURL._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURL] that points to the same underlying object as [other]. + static NSURL castFrom(T other) { + return NSURL._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURL] that wraps the given raw object pointer. + static NSURL castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURL._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURL]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURL1); + } + + /// this call percent-encodes both the host and path, so this cannot be used to set a username/password or port in the hostname part or with a IPv6 '[...]' type address. NSURLComponents handles IPv6 addresses correctly. + NSURL? initWithScheme_host_path_( + NSString scheme, NSString? host, NSString path) { + final _ret = _lib._objc_msgSend_14( + _id, + _lib._sel_initWithScheme_host_path_1, + scheme._id, + host?._id ?? ffi.nullptr, + path._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a newly created file NSURL referencing the local file or directory at path, relative to a base URL. + NSURL initFileURLWithPath_isDirectory_relativeToURL_( + NSString path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_15( + _id, + _lib._sel_initFileURLWithPath_isDirectory_relativeToURL_1, + path._id, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Better to use initFileURLWithPath:isDirectory:relativeToURL: if you know if the path is a directory vs non-directory, as it saves an I/O. + NSURL initFileURLWithPath_relativeToURL_(NSString path, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_16( + _id, + _lib._sel_initFileURLWithPath_relativeToURL_1, + path._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithPath_isDirectory_(NSString path, bool isDir) { + final _ret = _lib._objc_msgSend_17( + _id, _lib._sel_initFileURLWithPath_isDirectory_1, path._id, isDir); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Better to use initFileURLWithPath:isDirectory: if you know if the path is a directory vs non-directory, as it saves an i/o. + NSURL initFileURLWithPath_(NSString path) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initFileURLWithPath_1, path._id); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created file NSURL referencing the local file or directory at path, relative to a base URL. + static NSURL fileURLWithPath_isDirectory_relativeToURL_( + Foundation _lib, NSString path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_19( + _lib._class_NSURL1, + _lib._sel_fileURLWithPath_isDirectory_relativeToURL_1, + path._id, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Better to use fileURLWithPath:isDirectory:relativeToURL: if you know if the path is a directory vs non-directory, as it saves an I/O. + static NSURL fileURLWithPath_relativeToURL_( + Foundation _lib, NSString path, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_20( + _lib._class_NSURL1, + _lib._sel_fileURLWithPath_relativeToURL_1, + path._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithPath_isDirectory_( + Foundation _lib, NSString path, bool isDir) { + final _ret = _lib._objc_msgSend_21(_lib._class_NSURL1, + _lib._sel_fileURLWithPath_isDirectory_1, path._id, isDir); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Better to use fileURLWithPath:isDirectory: if you know if the path is a directory vs non-directory, as it saves an i/o. + static NSURL fileURLWithPath_(Foundation _lib, NSString path) { + final _ret = _lib._objc_msgSend_22( + _lib._class_NSURL1, _lib._sel_fileURLWithPath_1, path._id); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a newly created URL referencing the local file or directory at the file system representation of the path. File system representation is a null-terminated C string with canonical UTF-8 encoding. + NSURL initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + ffi.Pointer path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_23( + _id, + _lib._sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, + path, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created URL referencing the local file or directory at the file system representation of the path. File system representation is a null-terminated C string with canonical UTF-8 encoding. + static NSURL fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + Foundation _lib, ffi.Pointer path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_24( + _lib._class_NSURL1, + _lib._sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, + path, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// These methods expect their string arguments to contain any percent escape codes that are necessary. It is an error for URLString to be nil. + NSURL? initWithString_(NSString URLString) { + final _ret = + _lib._objc_msgSend_25(_id, _lib._sel_initWithString_1, URLString._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? initWithString_relativeToURL_(NSString URLString, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_26( + _id, + _lib._sel_initWithString_relativeToURL_1, + URLString._id, + baseURL?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL? URLWithString_(Foundation _lib, NSString URLString) { + final _ret = _lib._objc_msgSend_25( + _lib._class_NSURL1, _lib._sel_URLWithString_1, URLString._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL? URLWithString_relativeToURL_( + Foundation _lib, NSString URLString, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSURL1, + _lib._sel_URLWithString_relativeToURL_1, + URLString._id, + baseURL?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes an `NSURL` with a URL string and the option to add (or skip) IDNA- and percent-encoding of invalid characters. + /// If `encodingInvalidCharacters` is false, and the URL string is invalid according to RFC 3986, `nil` is returned. + /// If `encodingInvalidCharacters` is true, `NSURL` will try to encode the string to create a valid URL. + /// If the URL string is still invalid after encoding, `nil` is returned. + /// + /// - Parameter URLString: The URL string. + /// - Parameter encodingInvalidCharacters: True if `NSURL` should try to encode an invalid URL string, false otherwise. + /// - Returns: An `NSURL` instance for a valid URL, or `nil` if the URL is invalid. + NSURL? initWithString_encodingInvalidCharacters_( + NSString URLString, bool encodingInvalidCharacters) { + final _ret = _lib._objc_msgSend_27( + _id, + _lib._sel_initWithString_encodingInvalidCharacters_1, + URLString._id, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created `NSURL` with a URL string and the option to add (or skip) IDNA- and percent-encoding of invalid characters. + /// If `encodingInvalidCharacters` is false, and the URL string is invalid according to RFC 3986, `nil` is returned. + /// If `encodingInvalidCharacters` is true, `NSURL` will try to encode the string to create a valid URL. + /// If the URL string is still invalid after encoding, `nil` is returned. + /// + /// - Parameter URLString: The URL string. + /// - Parameter encodingInvalidCharacters: True if `NSURL` should try to encode an invalid URL string, false otherwise. + /// - Returns: An `NSURL` instance for a valid URL, or `nil` if the URL is invalid. + static NSURL? URLWithString_encodingInvalidCharacters_( + Foundation _lib, NSString URLString, bool encodingInvalidCharacters) { + final _ret = _lib._objc_msgSend_27( + _lib._class_NSURL1, + _lib._sel_URLWithString_encodingInvalidCharacters_1, + URLString._id, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a newly created NSURL using the contents of the given data, relative to a base URL. If the data representation is not a legal URL string as ASCII bytes, the URL object may not behave as expected. + NSURL initWithDataRepresentation_relativeToURL_(NSData data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_29( + _id, + _lib._sel_initWithDataRepresentation_relativeToURL_1, + data._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created NSURL using the contents of the given data, relative to a base URL. If the data representation is not a legal URL string as ASCII bytes, the URL object may not behave as expected. + static NSURL URLWithDataRepresentation_relativeToURL_( + Foundation _lib, NSData data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_30( + _lib._class_NSURL1, + _lib._sel_URLWithDataRepresentation_relativeToURL_1, + data._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a newly created absolute NSURL using the contents of the given data, relative to a base URL. If the data representation is not a legal URL string as ASCII bytes, the URL object may not behave as expected. + NSURL initAbsoluteURLWithDataRepresentation_relativeToURL_( + NSData data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_29( + _id, + _lib._sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1, + data._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created absolute NSURL using the contents of the given data, relative to a base URL. If the data representation is not a legal URL string as ASCII bytes, the URL object may not behave as expected. + static NSURL absoluteURLWithDataRepresentation_relativeToURL_( + Foundation _lib, NSData data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_30( + _lib._class_NSURL1, + _lib._sel_absoluteURLWithDataRepresentation_relativeToURL_1, + data._id, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns the data representation of the URL's relativeString. If the URL was initialized with -initWithData:relativeToURL:, the data representation returned are the same bytes as those used at initialization; otherwise, the data representation returned are the bytes of the relativeString encoded with NSUTF8StringEncoding. + NSData get dataRepresentation { + final _ret = _lib._objc_msgSend_31(_id, _lib._sel_dataRepresentation1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSString? get absoluteString { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_absoluteString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// The relative portion of a URL. If baseURL is nil, or if the receiver is itself absolute, this is the same as absoluteString + NSString get relativeString { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_relativeString1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// may be nil. + NSURL? get baseURL { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_baseURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// if the receiver is itself absolute, this will return self. + NSURL? get absoluteURL { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_absoluteURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Any URL is composed of these two basic pieces. The full URL would be the concatenation of [myURL scheme], ':', [myURL resourceSpecifier] + NSString? get scheme { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_scheme1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get resourceSpecifier { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_resourceSpecifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// If the URL conforms to rfc 1808 (the most common form of URL), the following accessors will return the various components; otherwise they return nil. The litmus test for conformance is as recommended in RFC 1808 - whether the first two characters of resourceSpecifier is @"//". In all cases, they return the component's value after resolving the receiver against its base URL. + NSString? get host { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_host1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSNumber? get port { + final _ret = _lib._objc_msgSend_65(_id, _lib._sel_port1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSString? get user { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_user1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get password { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_password1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get path { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_path1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get fragment { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_fragment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get parameterString { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_parameterString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get query { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_query1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// The same as path if baseURL is nil + NSString? get relativePath { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_relativePath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Determines if a given URL string's path represents a directory (i.e. the path component in the URL string ends with a '/' character). This does not check the resource the URL refers to. + bool get hasDirectoryPath { + return _lib._objc_msgSend_11(_id, _lib._sel_hasDirectoryPath1); + } + + /// Returns the URL's path in file system representation. File system representation is a null-terminated C string with canonical UTF-8 encoding. + bool getFileSystemRepresentation_maxLength_( + ffi.Pointer buffer, int maxBufferLength) { + return _lib._objc_msgSend_66( + _id, + _lib._sel_getFileSystemRepresentation_maxLength_1, + buffer, + maxBufferLength); + } + + /// Returns the URL's path in file system representation. File system representation is a null-terminated C string with canonical UTF-8 encoding. The returned C string will be automatically freed just as a returned object would be released; your code should copy the representation or use getFileSystemRepresentation:maxLength: if it needs to store the representation outside of the autorelease context in which the representation is created. + ffi.Pointer get fileSystemRepresentation { + return _lib._objc_msgSend_35(_id, _lib._sel_fileSystemRepresentation1); + } + + /// Whether the scheme is file:; if [myURL isFileURL] is YES, then [myURL path] is suitable for input into NSFileManager or NSPathUtilities. + bool get fileURL { + return _lib._objc_msgSend_11(_id, _lib._sel_isFileURL1); + } + + NSURL? get standardizedURL { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_standardizedURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns whether the URL is a file reference URL. Symbol is present in iOS 4, but performs no operation. + bool isFileReferenceURL() { + return _lib._objc_msgSend_11(_id, _lib._sel_isFileReferenceURL1); + } + + /// Returns a file reference URL that refers to the same resource as a specified file URL. File reference URLs use a URL path syntax that identifies a file system object by reference, not by path. This form of file URL remains valid when the file system path of the URL’s underlying resource changes. An error will occur if the url parameter is not a file URL. File reference URLs cannot be created to file system objects which do not exist or are not reachable. In some areas of the file system hierarchy, file reference URLs cannot be generated to the leaf node of the URL path. A file reference URL's path should never be persistently stored because is not valid across system restarts, and across remounts of volumes -- if you want to create a persistent reference to a file system object, use a bookmark (see -bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:). Symbol is present in iOS 4, but performs no operation. + NSURL? fileReferenceURL() { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_fileReferenceURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns a file path URL that refers to the same resource as a specified URL. File path URLs use a file system style path. An error will occur if the url parameter is not a file URL. A file reference URL's resource must exist and be reachable to be converted to a file path URL. Symbol is present in iOS 4, but performs no operation. + NSURL? get filePathURL { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_filePathURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns the resource value identified by a given resource key. This method first checks if the URL object already caches the resource value. If so, it returns the cached resource value to the caller. If not, then this method synchronously obtains the resource value from the backing store, adds the resource value to the URL object's cache, and returns the resource value to the caller. The type of the resource value varies by resource property (see resource key definitions). If this method returns YES and value is populated with nil, it means the resource property is not available for the specified resource and no errors occurred when determining the resource property was not available. If this method returns NO, the optional error is populated. This method is currently applicable only to URLs for file system resources. Symbol is present in iOS 4, but performs no operation. + bool getResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_72( + _id, _lib._sel_getResourceValue_forKey_error_1, value, key._id, error); + } + + /// Returns the resource values identified by specified array of resource keys. This method first checks if the URL object already caches the resource values. If so, it returns the cached resource values to the caller. If not, then this method synchronously obtains the resource values from the backing store, adds the resource values to the URL object's cache, and returns the resource values to the caller. The type of the resource values vary by property (see resource key definitions). If the result dictionary does not contain a resource value for one or more of the requested resource keys, it means those resource properties are not available for the specified resource and no errors occurred when determining those resource properties were not available. If this method returns NULL, the optional error is populated. This method is currently applicable only to URLs for file system resources. Symbol is present in iOS 4, but performs no operation. + NSDictionary? resourceValuesForKeys_error_( + NSObject keys, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_73( + _id, _lib._sel_resourceValuesForKeys_error_1, keys._id, error); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + /// Sets the resource value identified by a given resource key. This method writes the new resource value out to the backing store. Attempts to set a read-only resource property or to set a resource property not supported by the resource are ignored and are not considered errors. If this method returns NO, the optional error is populated. This method is currently applicable only to URLs for file system resources. Symbol is present in iOS 4, but performs no operation. + bool setResourceValue_forKey_error_(NSObject? value, NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_74(_id, _lib._sel_setResourceValue_forKey_error_1, + value?._id ?? ffi.nullptr, key._id, error); + } + + /// Sets any number of resource values of a URL's resource. This method writes the new resource values out to the backing store. Attempts to set read-only resource properties or to set resource properties not supported by the resource are ignored and are not considered errors. If an error occurs after some resource properties have been successfully changed, the userInfo dictionary in the returned error contains an array of resource keys that were not set with the key kCFURLKeysOfUnsetValuesKey. The order in which the resource values are set is not defined. If you need to guarantee the order resource values are set, you should make multiple requests to this method or to -setResourceValue:forKey:error: to guarantee the order. If this method returns NO, the optional error is populated. This method is currently applicable only to URLs for file system resources. Symbol is present in iOS 4, but performs no operation. + bool setResourceValues_error_( + NSDictionary keyedValues, ffi.Pointer> error) { + return _lib._objc_msgSend_75( + _id, _lib._sel_setResourceValues_error_1, keyedValues._id, error); + } + + /// Removes the cached resource value identified by a given resource value key from the URL object. Removing a cached resource value may remove other cached resource values because some resource values are cached as a set of values, and because some resource values depend on other resource values (temporary resource values have no dependencies). This method is currently applicable only to URLs for file system resources. + void removeCachedResourceValueForKey_(NSString key) { + _lib._objc_msgSend_76( + _id, _lib._sel_removeCachedResourceValueForKey_1, key._id); + } + + /// Removes all cached resource values and all temporary resource values from the URL object. This method is currently applicable only to URLs for file system resources. + void removeAllCachedResourceValues() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResourceValues1); + } + + /// Sets a temporary resource value on the URL object. Temporary resource values are for client use. Temporary resource values exist only in memory and are never written to the resource's backing store. Once set, a temporary resource value can be copied from the URL object with -getResourceValue:forKey:error: or -resourceValuesForKeys:error:. To remove a temporary resource value from the URL object, use -removeCachedResourceValueForKey:. Care should be taken to ensure the key that identifies a temporary resource value is unique and does not conflict with system defined keys (using reverse domain name notation in your temporary resource value keys is recommended). This method is currently applicable only to URLs for file system resources. + void setTemporaryResourceValue_forKey_(NSObject? value, NSString key) { + _lib._objc_msgSend_77(_id, _lib._sel_setTemporaryResourceValue_forKey_1, + value?._id ?? ffi.nullptr, key._id); + } + + /// Returns bookmark data for the URL, created with specified options and resource values. If this method returns nil, the optional error is populated. + NSData? + bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_( + int options, + NSObject? keys, + NSURL? relativeURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_78( + _id, + _lib._sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1, + options, + keys?._id ?? ffi.nullptr, + relativeURL?._id ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a newly created NSURL that refers to a location specified by resolving bookmark data. If this method returns nil, the optional error is populated. + NSURL? + initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + NSData bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_79( + _id, + _lib._sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, + bookmarkData._id, + options, + relativeURL?._id ?? ffi.nullptr, + isStale, + error); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Creates and Initializes an NSURL that refers to a location specified by resolving bookmark data. If this method returns nil, the optional error is populated. + static NSURL? + URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + Foundation _lib, + NSData bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURL1, + _lib._sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, + bookmarkData._id, + options, + relativeURL?._id ?? ffi.nullptr, + isStale, + error); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns the resource values for properties identified by a specified array of keys contained in specified bookmark data. If the result dictionary does not contain a resource value for one or more of the requested resource keys, it means those resource properties are not available in the bookmark data. + static NSDictionary? resourceValuesForKeys_fromBookmarkData_( + Foundation _lib, NSObject keys, NSData bookmarkData) { + final _ret = _lib._objc_msgSend_80( + _lib._class_NSURL1, + _lib._sel_resourceValuesForKeys_fromBookmarkData_1, + keys._id, + bookmarkData._id); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + /// Creates an alias file on disk at a specified location with specified bookmark data. bookmarkData must have been created with the NSURLBookmarkCreationSuitableForBookmarkFile option. bookmarkFileURL must either refer to an existing file (which will be overwritten), or to location in an existing directory. If this method returns NO, the optional error is populated. + static bool writeBookmarkData_toURL_options_error_( + Foundation _lib, + NSData bookmarkData, + NSURL bookmarkFileURL, + int options, + ffi.Pointer> error) { + return _lib._objc_msgSend_81( + _lib._class_NSURL1, + _lib._sel_writeBookmarkData_toURL_options_error_1, + bookmarkData._id, + bookmarkFileURL._id, + options, + error); + } + + /// Initializes and returns bookmark data derived from an alias file pointed to by a specified URL. If bookmarkFileURL refers to an alias file created prior to OS X v10.6 that contains Alias Manager information but no bookmark data, this method synthesizes bookmark data for the file. If this method returns nil, the optional error is populated. + static NSData? bookmarkDataWithContentsOfURL_error_(Foundation _lib, + NSURL bookmarkFileURL, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_82( + _lib._class_NSURL1, + _lib._sel_bookmarkDataWithContentsOfURL_error_1, + bookmarkFileURL._id, + error); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + /// Creates and initializes a NSURL that refers to the location specified by resolving the alias file at url. If the url argument does not refer to an alias file as defined by the NSURLIsAliasFileKey property, the NSURL returned is the same as url argument. This method fails and returns nil if the url argument is unreachable, or if the original file or directory could not be located or is not reachable, or if the original file or directory is on a volume that could not be located or mounted. If this method fails, the optional error is populated. The NSURLBookmarkResolutionWithSecurityScope option is not supported by this method. + static NSURL? URLByResolvingAliasFileAtURL_options_error_(Foundation _lib, + NSURL url, int options, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_83( + _lib._class_NSURL1, + _lib._sel_URLByResolvingAliasFileAtURL_options_error_1, + url._id, + options, + error); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Given a NSURL created by resolving a bookmark data created with security scope, make the resource referenced by the url accessible to the process. Each call to startAccessingSecurityScopedResource that returns YES must be balanced with a call to stopAccessingSecurityScopedResource when access to this resource is no longer needed by the client. Calls to start and stop accessing the resource are reference counted and may be nested, which allows the pair of calls to be logically scoped. + bool startAccessingSecurityScopedResource() { + return _lib._objc_msgSend_11( + _id, _lib._sel_startAccessingSecurityScopedResource1); + } + + /// Removes one "accessing" reference to the security scope. When all references are removed, it revokes the access granted to the url by the initial prior successful call to startAccessingSecurityScopedResource. + void stopAccessingSecurityScopedResource() { + _lib._objc_msgSend_1(_id, _lib._sel_stopAccessingSecurityScopedResource1); + } + + /// Get resource values from URLs of 'promised' items. A promised item is not guaranteed to have its contents in the file system until you use NSFileCoordinator to perform a coordinated read on its URL, which causes the contents to be downloaded or otherwise generated. Promised item URLs are returned by various APIs, including currently: + /// - NSMetadataQueryUbiquitousDataScope + /// - NSMetadataQueryUbiquitousDocumentsScope + /// - An NSFilePresenter presenting the contents of the directory located by -URLForUbiquitousContainerIdentifier: or a subdirectory thereof + /// + /// The following methods behave identically to their similarly named methods above (-getResourceValue:forKey:error:, etc.), except that they allow you to get resource values and check for presence regardless of whether the promised item's contents currently exist at the URL. You must use these APIs instead of the normal NSURL resource value APIs if and only if any of the following are true: + /// - You are using a URL that you know came directly from one of the above APIs + /// - You are inside the accessor block of a coordinated read or write that used NSFileCoordinatorReadingImmediatelyAvailableMetadataOnly, NSFileCoordinatorWritingForDeleting, NSFileCoordinatorWritingForMoving, or NSFileCoordinatorWritingContentIndependentMetadataOnly + /// + /// Most of the NSURL resource value keys will work with these APIs. However, there are some that are tied to the item's contents that will not work, such as NSURLContentAccessDateKey or NSURLGenerationIdentifierKey. If one of these keys is used, the method will return YES, but the value for the key will be nil. + bool getPromisedItemResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_72( + _id, + _lib._sel_getPromisedItemResourceValue_forKey_error_1, + value, + key._id, + error); + } + + NSDictionary? promisedItemResourceValuesForKeys_error_( + NSObject keys, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_73(_id, + _lib._sel_promisedItemResourceValuesForKeys_error_1, keys._id, error); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool checkPromisedItemIsReachableAndReturnError_( + ffi.Pointer> error) { + return _lib._objc_msgSend_84( + _id, _lib._sel_checkPromisedItemIsReachableAndReturnError_1, error); + } + + /// The following methods work on the path portion of a URL in the same manner that the NSPathUtilities methods on NSString do. + static NSURL? fileURLWithPathComponents_( + Foundation _lib, NSObject components) { + final _ret = _lib._objc_msgSend_85(_lib._class_NSURL1, + _lib._sel_fileURLWithPathComponents_1, components._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSObject? get pathComponents { + final _ret = _lib._objc_msgSend_69(_id, _lib._sel_pathComponents1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString? get lastPathComponent { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_lastPathComponent1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get pathExtension { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_pathExtension1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSURL? URLByAppendingPathComponent_(NSString pathComponent) { + final _ret = _lib._objc_msgSend_86( + _id, _lib._sel_URLByAppendingPathComponent_1, pathComponent._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? URLByAppendingPathComponent_isDirectory_( + NSString pathComponent, bool isDirectory) { + final _ret = _lib._objc_msgSend_87( + _id, + _lib._sel_URLByAppendingPathComponent_isDirectory_1, + pathComponent._id, + isDirectory); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByDeletingLastPathComponent { + final _ret = + _lib._objc_msgSend_33(_id, _lib._sel_URLByDeletingLastPathComponent1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? URLByAppendingPathExtension_(NSString pathExtension) { + final _ret = _lib._objc_msgSend_86( + _id, _lib._sel_URLByAppendingPathExtension_1, pathExtension._id); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByDeletingPathExtension { + final _ret = + _lib._objc_msgSend_33(_id, _lib._sel_URLByDeletingPathExtension1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns whether the URL's resource exists and is reachable. This method synchronously checks if the resource's backing store is reachable. Checking reachability is appropriate when making decisions that do not require other immediate operations on the resource, e.g. periodic maintenance of UI state that depends on the existence of a specific document. When performing operations such as opening a file or copying resource properties, it is more efficient to simply try the operation and handle failures. If this method returns NO, the optional error is populated. This method is currently applicable only to URLs for file system resources. For other URL types, NO is returned. Symbol is present in iOS 4, but performs no operation. + bool checkResourceIsReachableAndReturnError_( + ffi.Pointer> error) { + return _lib._objc_msgSend_84( + _id, _lib._sel_checkResourceIsReachableAndReturnError_1, error); + } + + NSURL? get URLByStandardizingPath { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_URLByStandardizingPath1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByResolvingSymlinksInPath { + final _ret = + _lib._objc_msgSend_33(_id, _lib._sel_URLByResolvingSymlinksInPath1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Blocks to load the data if necessary. If shouldUseCache is YES, then if an equivalent URL has already been loaded and cached, its resource data will be returned immediately. If shouldUseCache is NO, a new load will be started + NSData? resourceDataUsingCache_(bool shouldUseCache) { + final _ret = _lib._objc_msgSend_88( + _id, _lib._sel_resourceDataUsingCache_1, shouldUseCache); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + /// Starts an asynchronous load of the data, registering delegate to receive notification. Only one such background load can proceed at a time. + void loadResourceDataNotifyingClient_usingCache_( + NSObject client, bool shouldUseCache) { + _lib._objc_msgSend_89( + _id, + _lib._sel_loadResourceDataNotifyingClient_usingCache_1, + client._id, + shouldUseCache); + } + + NSObject? propertyForKey_(NSString propertyKey) { + final _ret = + _lib._objc_msgSend_25(_id, _lib._sel_propertyForKey_1, propertyKey._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// These attempt to write the given arguments for the resource specified by the URL; they return success or failure + bool setResourceData_(NSData data) { + return _lib._objc_msgSend_90(_id, _lib._sel_setResourceData_1, data._id); + } + + bool setProperty_forKey_(NSObject property, NSString propertyKey) { + return _lib._objc_msgSend_91( + _id, _lib._sel_setProperty_forKey_1, property._id, propertyKey._id); + } + + /// Sophisticated clients will want to ask for this, then message the handle directly. If shouldUseCache is NO, a newly instantiated handle is returned, even if an equivalent URL has been loaded + NSURLHandle? URLHandleUsingCache_(bool shouldUseCache) { + final _ret = _lib._objc_msgSend_99( + _id, _lib._sel_URLHandleUsingCache_1, shouldUseCache); + return _ret.address == 0 + ? null + : NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + @override + NSURL init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_new1); + return NSURL._(_ret, _lib, retain: false, release: true); + } + + static NSURL allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURL1, _lib._sel_allocWithZone_1, zone); + return NSURL._(_ret, _lib, retain: false, release: true); + } + + static NSURL alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_alloc1); + return NSURL._(_ret, _lib, retain: false, release: true); + } +} + +class NSData extends _ObjCWrapper { + NSData._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSData] that points to the same underlying object as [other]. + static NSData castFrom(T other) { + return NSData._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSData] that wraps the given raw object pointer. + static NSData castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSData._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSData]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSData1); + } + + ffi.Pointer get bytes { + return _lib._objc_msgSend_28(_id, _lib._sel_bytes1); + } +} + +class NSNumber extends NSValue { + NSNumber._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSNumber] that points to the same underlying object as [other]. + static NSNumber castFrom(T other) { + return NSNumber._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSNumber] that wraps the given raw object pointer. + static NSNumber castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSNumber._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSNumber]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNumber1); + } + + @override + NSNumber? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithChar_(int value) { + final _ret = _lib._objc_msgSend_38(_id, _lib._sel_initWithChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedChar_(int value) { + final _ret = + _lib._objc_msgSend_39(_id, _lib._sel_initWithUnsignedChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithShort_(int value) { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_initWithShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedShort_(int value) { + final _ret = + _lib._objc_msgSend_41(_id, _lib._sel_initWithUnsignedShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithInt_(int value) { + final _ret = _lib._objc_msgSend_42(_id, _lib._sel_initWithInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedInt_(int value) { + final _ret = + _lib._objc_msgSend_43(_id, _lib._sel_initWithUnsignedInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithLong_(int value) { + final _ret = _lib._objc_msgSend_44(_id, _lib._sel_initWithLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedLong_(int value) { + final _ret = + _lib._objc_msgSend_45(_id, _lib._sel_initWithUnsignedLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithLongLong_(int value) { + final _ret = + _lib._objc_msgSend_46(_id, _lib._sel_initWithLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedLongLong_(int value) { + final _ret = + _lib._objc_msgSend_47(_id, _lib._sel_initWithUnsignedLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithFloat_(double value) { + final _ret = _lib._objc_msgSend_48(_id, _lib._sel_initWithFloat_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithDouble_(double value) { + final _ret = _lib._objc_msgSend_49(_id, _lib._sel_initWithDouble_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithBool_(bool value) { + final _ret = _lib._objc_msgSend_50(_id, _lib._sel_initWithBool_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithInteger_(int value) { + final _ret = _lib._objc_msgSend_44(_id, _lib._sel_initWithInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedInteger_(int value) { + final _ret = + _lib._objc_msgSend_45(_id, _lib._sel_initWithUnsignedInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + int get charValue { + return _lib._objc_msgSend_51(_id, _lib._sel_charValue1); + } + + int get unsignedCharValue { + return _lib._objc_msgSend_52(_id, _lib._sel_unsignedCharValue1); + } + + int get shortValue { + return _lib._objc_msgSend_53(_id, _lib._sel_shortValue1); + } + + int get unsignedShortValue { + return _lib._objc_msgSend_54(_id, _lib._sel_unsignedShortValue1); + } + + int get intValue { + return _lib._objc_msgSend_55(_id, _lib._sel_intValue1); + } + + int get unsignedIntValue { + return _lib._objc_msgSend_56(_id, _lib._sel_unsignedIntValue1); + } + + int get longValue { + return _lib._objc_msgSend_57(_id, _lib._sel_longValue1); + } + + int get unsignedLongValue { + return _lib._objc_msgSend_12(_id, _lib._sel_unsignedLongValue1); + } + + int get longLongValue { + return _lib._objc_msgSend_58(_id, _lib._sel_longLongValue1); + } + + int get unsignedLongLongValue { + return _lib._objc_msgSend_59(_id, _lib._sel_unsignedLongLongValue1); + } + + double get floatValue { + return _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_60_fpret(_id, _lib._sel_floatValue1) + : _lib._objc_msgSend_60(_id, _lib._sel_floatValue1); + } + + double get doubleValue { + return _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_61_fpret(_id, _lib._sel_doubleValue1) + : _lib._objc_msgSend_61(_id, _lib._sel_doubleValue1); + } + + bool get boolValue { + return _lib._objc_msgSend_11(_id, _lib._sel_boolValue1); + } + + int get integerValue { + return _lib._objc_msgSend_57(_id, _lib._sel_integerValue1); + } + + int get unsignedIntegerValue { + return _lib._objc_msgSend_12(_id, _lib._sel_unsignedIntegerValue1); + } + + NSString get stringValue { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_stringValue1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int compare_(NSNumber otherNumber) { + return _lib._objc_msgSend_62(_id, _lib._sel_compare_1, otherNumber._id); + } + + bool isEqualToNumber_(NSNumber number) { + return _lib._objc_msgSend_63(_id, _lib._sel_isEqualToNumber_1, number._id); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSNumber initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_36( + _id, _lib._sel_initWithBytes_objCType_1, value, type); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + @override + NSNumber init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_new1); + return NSNumber._(_ret, _lib, retain: false, release: true); + } + + static NSNumber allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSNumber1, _lib._sel_allocWithZone_1, zone); + return NSNumber._(_ret, _lib, retain: false, release: true); + } + + static NSNumber alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_alloc1); + return NSNumber._(_ret, _lib, retain: false, release: true); + } +} + +class NSValue extends NSObject { + NSValue._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSValue] that points to the same underlying object as [other]. + static NSValue castFrom(T other) { + return NSValue._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSValue] that wraps the given raw object pointer. + static NSValue castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSValue._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSValue]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSValue1); + } + + void getValue_size_(ffi.Pointer value, int size) { + _lib._objc_msgSend_34(_id, _lib._sel_getValue_size_1, value, size); + } + + ffi.Pointer get objCType { + return _lib._objc_msgSend_35(_id, _lib._sel_objCType1); + } + + NSValue initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_36( + _id, _lib._sel_initWithBytes_objCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + NSValue? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSValue._(_ret, _lib, retain: true, release: true); + } + + @override + NSValue init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_new1); + return NSValue._(_ret, _lib, retain: false, release: true); + } + + static NSValue allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSValue1, _lib._sel_allocWithZone_1, zone); + return NSValue._(_ret, _lib, retain: false, release: true); + } + + static NSValue alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_alloc1); + return NSValue._(_ret, _lib, retain: false, release: true); + } +} + +class NSCoder extends _ObjCWrapper { + NSCoder._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCoder] that points to the same underlying object as [other]. + static NSCoder castFrom(T other) { + return NSCoder._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCoder] that wraps the given raw object pointer. + static NSCoder castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCoder._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCoder]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCoder1); + } +} + +abstract class NSComparisonResult { + static const int NSOrderedAscending = -1; + static const int NSOrderedSame = 0; + static const int NSOrderedDescending = 1; +} + +class NSError extends NSObject { + NSError._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSError] that points to the same underlying object as [other]. + static NSError castFrom(T other) { + return NSError._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSError] that wraps the given raw object pointer. + static NSError castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSError._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSError]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSError1); + } + + /// Domain cannot be nil; dict may be nil if no userInfo desired. + NSError initWithDomain_code_userInfo_( + NSString domain, int code, NSDictionary? dict) { + final _ret = _lib._objc_msgSend_67( + _id, + _lib._sel_initWithDomain_code_userInfo_1, + domain._id, + code, + dict?._id ?? ffi.nullptr); + return NSError._(_ret, _lib, retain: true, release: true); + } + + static NSError errorWithDomain_code_userInfo_( + Foundation _lib, NSString domain, int code, NSDictionary? dict) { + final _ret = _lib._objc_msgSend_67( + _lib._class_NSError1, + _lib._sel_errorWithDomain_code_userInfo_1, + domain._id, + code, + dict?._id ?? ffi.nullptr); + return NSError._(_ret, _lib, retain: true, release: true); + } + + /// These define the error. Domains are described by names that are arbitrary strings used to differentiate groups of codes; for custom domain using reverse-DNS naming will help avoid conflicts. Codes are domain-specific. + NSString get domain { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_domain1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int get code { + return _lib._objc_msgSend_57(_id, _lib._sel_code1); + } + + /// Additional info which may be used to describe the error further. Examples of keys that might be included in here are "Line Number", "Failed URL", etc. Embedding other errors in here can also be used as a way to communicate underlying reasons for failures; for instance "File System Error" embedded in the userInfo of an NSError returned from a higher level document object. If the embedded error information is itself NSError, the standard key NSUnderlyingErrorKey can be used. + NSDictionary get userInfo { + final _ret = _lib._objc_msgSend_68(_id, _lib._sel_userInfo1); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + /// The primary user-presentable message for the error, for instance for NSFileReadNoPermissionError: "The file "File Name" couldn't be opened because you don't have permission to view it.". This message should ideally indicate what failed and why it failed. This value either comes from NSLocalizedDescriptionKey, or NSLocalizedFailureErrorKey+NSLocalizedFailureReasonErrorKey, or NSLocalizedFailureErrorKey. The steps this takes to construct the description include: + /// 1. Look for NSLocalizedDescriptionKey in userInfo, use value as-is if present. + /// 2. Look for NSLocalizedFailureErrorKey in userInfo. If present, use, combining with value for NSLocalizedFailureReasonErrorKey if available. + /// 3. Fetch NSLocalizedDescriptionKey from userInfoValueProvider, use value as-is if present. + /// 4. Fetch NSLocalizedFailureErrorKey from userInfoValueProvider. If present, use, combining with value for NSLocalizedFailureReasonErrorKey if available. + /// 5. Look for NSLocalizedFailureReasonErrorKey in userInfo or from userInfoValueProvider; combine with generic "Operation failed" message. + /// 6. Last resort localized but barely-presentable string manufactured from domain and code. The result is never nil. + NSString get localizedDescription { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_localizedDescription1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Return a complete sentence which describes why the operation failed. For instance, for NSFileReadNoPermissionError: "You don't have permission.". In many cases this will be just the "because" part of the error message (but as a complete sentence, which makes localization easier). Default implementation of this picks up the value of NSLocalizedFailureReasonErrorKey from the userInfo dictionary. If not present, it consults the userInfoValueProvider for the domain, and if that returns nil, this also returns nil. + NSString? get localizedFailureReason { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_localizedFailureReason1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Return the string that can be displayed as the "informative" (aka "secondary") message on an alert panel. For instance, for NSFileReadNoPermissionError: "To view or change permissions, select the item in the Finder and choose File > Get Info.". Default implementation of this picks up the value of NSLocalizedRecoverySuggestionErrorKey from the userInfo dictionary. If not present, it consults the userInfoValueProvider for the domain, and if that returns nil, this also returns nil. + NSString? get localizedRecoverySuggestion { + final _ret = + _lib._objc_msgSend_32(_id, _lib._sel_localizedRecoverySuggestion1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Return titles of buttons that are appropriate for displaying in an alert. These should match the string provided as a part of localizedRecoverySuggestion. The first string would be the title of the right-most and default button, the second one next to it, and so on. If used in an alert the corresponding default return values are NSAlertFirstButtonReturn + n. Default implementation of this picks up the value of NSLocalizedRecoveryOptionsErrorKey from the userInfo dictionary. If not present, it consults the userInfoValueProvider for the domain, and if that returns nil, this also returns nil. nil return usually implies no special suggestion, which would imply a single "OK" button. + NSObject? get localizedRecoveryOptions { + final _ret = + _lib._objc_msgSend_69(_id, _lib._sel_localizedRecoveryOptions1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Return an object that conforms to the NSErrorRecoveryAttempting informal protocol. The recovery attempter must be an object that can correctly interpret an index into the array returned by localizedRecoveryOptions. The default implementation of this picks up the value of NSRecoveryAttempterErrorKey from the userInfo dictionary. If not present, it consults the userInfoValueProvider for the domain. If that returns nil, this also returns nil. + NSObject? get recoveryAttempter { + final _ret = _lib._objc_msgSend_69(_id, _lib._sel_recoveryAttempter1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Return the help anchor that can be used to create a help button to accompany the error when it's displayed to the user. This is done automatically by +[NSAlert alertWithError:], which the presentError: variants in NSApplication go through. The default implementation of this picks up the value of the NSHelpAnchorErrorKey from the userInfo dictionary. If not present, it consults the userInfoValueProvider for the domain. If that returns nil, this also returns nil. + NSString? get helpAnchor { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_helpAnchor1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Return a list of underlying errors, if any. It includes the values of both NSUnderlyingErrorKey and NSMultipleUnderlyingErrorsKey. If there are no underlying errors, returns an empty array. + NSObject get underlyingErrors { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_underlyingErrors1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Specify a block which will be called from the implementations of localizedDescription, localizedFailureReason, localizedRecoverySuggestion, localizedRecoveryOptions, recoveryAttempter, helpAnchor, and debugDescription when the underlying value for these is not present in the userInfo dictionary of NSError instances with the specified domain. The provider will be called with the userInfo key corresponding to the queried property: For instance, NSLocalizedDescriptionKey for localizedDescription. The provider should return nil for any keys it is not able to provide and, very importantly, any keys it does not recognize (since we may extend the list of keys in future releases). + /// + /// The specified block will be called synchronously at the time when the above properties are queried. The results are not cached. + /// + /// This provider is optional. It enables localization and formatting of error messages to be done lazily; rather than populating the userInfo at NSError creation time, these keys will be fetched on-demand when asked for. + /// + /// It is expected that only the “owner” of an NSError domain specifies the provider for the domain, and this is done once. This facility is not meant for consumers of errors to customize the userInfo entries. This facility should not be used to customize the behaviors of error domains provided by the system. + /// + /// If an appropriate result for the requested key cannot be provided, return nil rather than choosing to manufacture a generic fallback response such as "Operation could not be completed, error 42." NSError will take care of the fallback cases. + static void setUserInfoValueProviderForDomain_provider_(Foundation _lib, + NSString errorDomain, ObjCBlock_ObjCObject_NSError_NSString? provider) { + _lib._objc_msgSend_70( + _lib._class_NSError1, + _lib._sel_setUserInfoValueProviderForDomain_provider_1, + errorDomain._id, + provider?._id ?? ffi.nullptr); + } + + static ObjCBlock_ObjCObject_NSError_NSString? userInfoValueProviderForDomain_( + Foundation _lib, + NSError err, + NSString userInfoKey, + NSString errorDomain) { + final _ret = _lib._objc_msgSend_71( + _lib._class_NSError1, + _lib._sel_userInfoValueProviderForDomain_1, + err._id, + userInfoKey._id, + errorDomain._id); + return _ret.address == 0 + ? null + : ObjCBlock_ObjCObject_NSError_NSString._(_ret, _lib, + retain: true, release: true); + } + + @override + NSError init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSError._(_ret, _lib, retain: true, release: true); + } + + static NSError new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_new1); + return NSError._(_ret, _lib, retain: false, release: true); + } + + static NSError allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSError1, _lib._sel_allocWithZone_1, zone); + return NSError._(_ret, _lib, retain: false, release: true); + } + + static NSError alloc(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_alloc1); + return NSError._(_ret, _lib, retain: false, release: true); + } +} + +class NSDictionary extends _ObjCWrapper { + NSDictionary._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDictionary] that points to the same underlying object as [other]. + static NSDictionary castFrom(T other) { + return NSDictionary._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSDictionary] that wraps the given raw object pointer. + static NSDictionary castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDictionary._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDictionary]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDictionary1); + } +} + +class _ObjCBlockBase implements ffi.Finalizable { + final ffi.Pointer<_ObjCBlock> _id; + final Foundation _lib; + bool _pendingRelease; + + _ObjCBlockBase._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._Block_copy(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer11.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC block held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._Block_release(_id.cast()); + _lib._objc_releaseFinalizer11.detach(this); + } else { + throw StateError( + 'Released an ObjC block that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCBlockBase && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer<_ObjCBlock> get pointer => _id; + + ffi.Pointer<_ObjCBlock> _retainAndReturnId() { + _lib._Block_copy(_id.cast()); + return _id; + } +} + +ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry = Function( + ffi.Pointer, ffi.Pointer)>{}; +int _ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex; + _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { + ObjCBlock_ObjCObject_NSError_NSString._( + ffi.Pointer<_ObjCBlock> id, Foundation lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ObjCObject_NSError_NSString.fromFunctionPointer( + Foundation lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ObjCObject_NSError_NSString.fromFunction( + Foundation lib, NSObject? Function(NSError, NSString) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline) + .cast(), + _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSError._(arg0, lib, retain: true, release: true), NSString._(arg1, lib, retain: true, release: true)) + ?._retainAndReturnId() ?? + ffi.nullptr)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + NSObject? call(NSError arg0, NSString arg1) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>() + (_id, arg0._id, arg1._id) + .address == + 0 + ? null + : NSObject._( + _id.ref.invoke + .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, ffi.Pointer arg1)>>() + .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>()(_id, arg0._id, arg1._id), + _lib, + retain: false, + release: true); +} + +final class _ObjCBlockDesc extends ffi.Struct { + @ffi.UnsignedLong() + external int reserved; + + @ffi.UnsignedLong() + external int size; + + external ffi.Pointer copy_helper; + + external ffi.Pointer dispose_helper; + + external ffi.Pointer signature; +} + +final class _ObjCBlock extends ffi.Struct { + external ffi.Pointer isa; + + @ffi.Int() + external int flags; + + @ffi.Int() + external int reserved; + + external ffi.Pointer invoke; + + external ffi.Pointer<_ObjCBlockDesc> descriptor; + + external ffi.Pointer target; +} + +/// Working with Bookmarks and alias (bookmark) files +abstract class NSURLBookmarkCreationOptions { + /// This option does nothing and has no effect on bookmark resolution + static const int NSURLBookmarkCreationPreferFileIDResolution = 256; + + /// creates bookmark data with "less" information, which may be smaller but still be able to resolve in certain ways + static const int NSURLBookmarkCreationMinimalBookmark = 512; + + /// include the properties required by writeBookmarkData:toURL:options: in the bookmark data created + static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; + + /// include information in the bookmark data which allows the same sandboxed process to access the resource after being relaunched + static const int NSURLBookmarkCreationWithSecurityScope = 2048; + + /// if used with kCFURLBookmarkCreationWithSecurityScope, at resolution time only read access to the resource will be granted + static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; + + /// Disable automatic embedding of an implicit security scope. The resolving process will not be able gain access to the resource by security scope, either implicitly or explicitly, through the returned URL. Not applicable to security-scoped bookmarks. + static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = + 536870912; +} + +abstract class NSURLBookmarkResolutionOptions { + /// don't perform any user interaction during bookmark resolution + static const int NSURLBookmarkResolutionWithoutUI = 256; + + /// don't mount a volume during bookmark resolution + static const int NSURLBookmarkResolutionWithoutMounting = 512; + + /// use the secure information included at creation time to provide the ability to access the resource in a sandboxed process + static const int NSURLBookmarkResolutionWithSecurityScope = 1024; + + /// Disable implicitly starting access of the ephemeral security-scoped resource during resolution. Instead, call `-[NSURL startAccessingSecurityScopedResource]` on the returned URL when ready to use the resource. Not applicable to security-scoped bookmarks. + static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; +} + +class NSURLHandle extends NSObject { + NSURLHandle._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLHandle] that points to the same underlying object as [other]. + static NSURLHandle castFrom(T other) { + return NSURLHandle._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLHandle] that wraps the given raw object pointer. + static NSURLHandle castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLHandle._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLHandle]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLHandle1); + } + + static void registerURLHandleClass_( + Foundation _lib, NSObject anURLHandleSubclass) { + _lib._objc_msgSend_92(_lib._class_NSURLHandle1, + _lib._sel_registerURLHandleClass_1, anURLHandleSubclass._id); + } + + static NSObject URLHandleClassForURL_(Foundation _lib, NSURL anURL) { + final _ret = _lib._objc_msgSend_93( + _lib._class_NSURLHandle1, _lib._sel_URLHandleClassForURL_1, anURL._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int status() { + return _lib._objc_msgSend_94(_id, _lib._sel_status1); + } + + NSString failureReason() { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_failureReason1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void addClient_(NSObject client) { + _lib._objc_msgSend_92(_id, _lib._sel_addClient_1, client._id); + } + + void removeClient_(NSObject client) { + _lib._objc_msgSend_92(_id, _lib._sel_removeClient_1, client._id); + } + + void loadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_loadInBackground1); + } + + void cancelLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_cancelLoadInBackground1); + } + + NSData resourceData() { + final _ret = _lib._objc_msgSend_31(_id, _lib._sel_resourceData1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData availableResourceData() { + final _ret = _lib._objc_msgSend_31(_id, _lib._sel_availableResourceData1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + int expectedResourceDataSize() { + return _lib._objc_msgSend_58(_id, _lib._sel_expectedResourceDataSize1); + } + + void flushCachedData() { + _lib._objc_msgSend_1(_id, _lib._sel_flushCachedData1); + } + + void backgroundLoadDidFailWithReason_(NSString reason) { + _lib._objc_msgSend_76( + _id, _lib._sel_backgroundLoadDidFailWithReason_1, reason._id); + } + + void didLoadBytes_loadComplete_(NSData newBytes, bool yorn) { + _lib._objc_msgSend_95( + _id, _lib._sel_didLoadBytes_loadComplete_1, newBytes._id, yorn); + } + + static bool canInitWithURL_(Foundation _lib, NSURL anURL) { + return _lib._objc_msgSend_96( + _lib._class_NSURLHandle1, _lib._sel_canInitWithURL_1, anURL._id); + } + + static NSURLHandle cachedHandleForURL_(Foundation _lib, NSURL anURL) { + final _ret = _lib._objc_msgSend_97( + _lib._class_NSURLHandle1, _lib._sel_cachedHandleForURL_1, anURL._id); + return NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithURL_cached_(NSURL anURL, bool willCache) { + final _ret = _lib._objc_msgSend_98( + _id, _lib._sel_initWithURL_cached_1, anURL._id, willCache); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject propertyForKey_(NSString propertyKey) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_propertyForKey_1, propertyKey._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject propertyForKeyIfAvailable_(NSString propertyKey) { + final _ret = _lib._objc_msgSend_18( + _id, _lib._sel_propertyForKeyIfAvailable_1, propertyKey._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool writeProperty_forKey_(NSObject propertyValue, NSString propertyKey) { + return _lib._objc_msgSend_91(_id, _lib._sel_writeProperty_forKey_1, + propertyValue._id, propertyKey._id); + } + + bool writeData_(NSData data) { + return _lib._objc_msgSend_90(_id, _lib._sel_writeData_1, data._id); + } + + NSData loadInForeground() { + final _ret = _lib._objc_msgSend_31(_id, _lib._sel_loadInForeground1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void beginLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_beginLoadInBackground1); + } + + void endLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_endLoadInBackground1); + } + + @override + NSURLHandle init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + static NSURLHandle new1(Foundation _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_new1); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } + + static NSURLHandle allocWithZone_(Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLHandle1, _lib._sel_allocWithZone_1, zone); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } + + static NSURLHandle alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_alloc1); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } +} + +abstract class NSURLHandleStatus { + static const int NSURLHandleNotLoaded = 0; + static const int NSURLHandleLoadSucceeded = 1; + static const int NSURLHandleLoadInProgress = 2; + static const int NSURLHandleLoadFailed = 3; +} + +final class NSRange extends ffi.Struct { + @ffi.UnsignedLong() + external int location; + + @ffi.UnsignedLong() + external int length; +} + +/// These options apply to the various search/find and comparison methods (except where noted). +abstract class NSStringCompareOptions { + static const int NSCaseInsensitiveSearch = 1; + + /// Exact character-by-character equivalence + static const int NSLiteralSearch = 2; + + /// Search from end of source string + static const int NSBackwardsSearch = 4; + + /// Search is limited to start (or end, if NSBackwardsSearch) of source string + static const int NSAnchoredSearch = 8; + + /// Added in 10.2; Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find + static const int NSNumericSearch = 64; + + /// If specified, ignores diacritics (o-umlaut == o) + static const int NSDiacriticInsensitiveSearch = 128; + + /// If specified, ignores width differences ('a' == UFF41) + static const int NSWidthInsensitiveSearch = 256; + + /// If specified, comparisons are forced to return either NSOrderedAscending or NSOrderedDescending if the strings are equivalent but not strictly equal, for stability when sorting (e.g. "aaa" > "AAA" with NSCaseInsensitiveSearch specified) + static const int NSForcedOrderingSearch = 512; + + /// Applies to rangeOfString:..., stringByReplacingOccurrencesOfString:..., and replaceOccurrencesOfString:... methods only; the search string is treated as an ICU-compatible regular expression; if set, no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch + static const int NSRegularExpressionSearch = 1024; +} + +class NSLocale extends _ObjCWrapper { + NSLocale._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSLocale] that points to the same underlying object as [other]. + static NSLocale castFrom(T other) { + return NSLocale._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSLocale] that wraps the given raw object pointer. + static NSLocale castFromPointer(Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSLocale._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSLocale]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSLocale1); + } +} + +class NSCharacterSet extends NSObject { + NSCharacterSet._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCharacterSet] that points to the same underlying object as [other]. + static NSCharacterSet castFrom(T other) { + return NSCharacterSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCharacterSet] that wraps the given raw object pointer. + static NSCharacterSet castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCharacterSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCharacterSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSCharacterSet1); + } + + static NSCharacterSet getControlCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_controlCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getWhitespaceCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_whitespaceCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getWhitespaceAndNewlineCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119(_lib._class_NSCharacterSet1, + _lib._sel_whitespaceAndNewlineCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getDecimalDigitCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_decimalDigitCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getLetterCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_letterCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getLowercaseLetterCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_lowercaseLetterCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getUppercaseLetterCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_uppercaseLetterCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getNonBaseCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_nonBaseCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getAlphanumericCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_alphanumericCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getDecomposableCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_decomposableCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getIllegalCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_illegalCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getPunctuationCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_punctuationCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getCapitalizedLetterCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_capitalizedLetterCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getSymbolCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_symbolCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet getNewlineCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_newlineCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet characterSetWithRange_( + Foundation _lib, NSRange aRange) { + final _ret = _lib._objc_msgSend_120( + _lib._class_NSCharacterSet1, _lib._sel_characterSetWithRange_1, aRange); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet characterSetWithCharactersInString_( + Foundation _lib, NSString aString) { + final _ret = _lib._objc_msgSend_121(_lib._class_NSCharacterSet1, + _lib._sel_characterSetWithCharactersInString_1, aString._id); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet characterSetWithBitmapRepresentation_( + Foundation _lib, NSData data) { + final _ret = _lib._objc_msgSend_122(_lib._class_NSCharacterSet1, + _lib._sel_characterSetWithBitmapRepresentation_1, data._id); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? characterSetWithContentsOfFile_( + Foundation _lib, NSString fName) { + final _ret = _lib._objc_msgSend_123(_lib._class_NSCharacterSet1, + _lib._sel_characterSetWithContentsOfFile_1, fName._id); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + NSCharacterSet initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_124(_id, _lib._sel_initWithCoder_1, coder._id); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + bool characterIsMember_(int aCharacter) { + return _lib._objc_msgSend_125( + _id, _lib._sel_characterIsMember_1, aCharacter); + } + + NSData get bitmapRepresentation { + final _ret = _lib._objc_msgSend_31(_id, _lib._sel_bitmapRepresentation1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSCharacterSet get invertedSet { + final _ret = _lib._objc_msgSend_119(_id, _lib._sel_invertedSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + bool longCharacterIsMember_(int theLongChar) { + return _lib._objc_msgSend_126( + _id, _lib._sel_longCharacterIsMember_1, theLongChar); + } + + bool isSupersetOfSet_(NSCharacterSet theOtherSet) { + return _lib._objc_msgSend_127( + _id, _lib._sel_isSupersetOfSet_1, theOtherSet._id); + } + + bool hasMemberInPlane_(int thePlane) { + return _lib._objc_msgSend_128(_id, _lib._sel_hasMemberInPlane_1, thePlane); + } + + /// Returns a character set containing the characters allowed in a URL's user subcomponent. + static NSCharacterSet getURLUserAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLUserAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + /// Returns a character set containing the characters allowed in a URL's password subcomponent. + static NSCharacterSet getURLPasswordAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLPasswordAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + /// Returns a character set containing the characters allowed in a URL's host subcomponent. + static NSCharacterSet getURLHostAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLHostAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + /// Returns a character set containing the characters allowed in a URL's path component. ';' is a legal path character, but it is recommended that it be percent-encoded for best compatibility with NSURL (-stringByAddingPercentEncodingWithAllowedCharacters: will percent-encode any ';' characters if you pass the URLPathAllowedCharacterSet). + static NSCharacterSet getURLPathAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLPathAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + /// Returns a character set containing the characters allowed in a URL's query component. + static NSCharacterSet getURLQueryAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLQueryAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + /// Returns a character set containing the characters allowed in a URL's fragment component. + static NSCharacterSet getURLFragmentAllowedCharacterSet(Foundation _lib) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSCharacterSet1, _lib._sel_URLFragmentAllowedCharacterSet1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSCharacterSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_new1); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCharacterSet1, _lib._sel_allocWithZone_1, zone); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_alloc1); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } +} + +abstract class NSStringEnumerationOptions { + /// Equivalent to lineRangeForRange: + static const int NSStringEnumerationByLines = 0; + + /// Equivalent to paragraphRangeForRange: + static const int NSStringEnumerationByParagraphs = 1; + + /// Equivalent to rangeOfComposedCharacterSequencesForRange: + static const int NSStringEnumerationByComposedCharacterSequences = 2; + static const int NSStringEnumerationByWords = 3; + static const int NSStringEnumerationBySentences = 4; + + /// Enumerate text editing cursor positions. It could separate characters within a grapheme cluster. + static const int NSStringEnumerationByCaretPositions = 5; + + /// Enumerate text editing positions for backwards deletion. It could separate characters within a grapheme cluster. + static const int NSStringEnumerationByDeletionClusters = 6; + + /// ...and combine any of the desired additional options: + static const int NSStringEnumerationReverse = 256; + static const int NSStringEnumerationSubstringNotRequired = 512; + + /// User's default locale + static const int NSStringEnumerationLocalized = 1024; +} + +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + NSRange arg1, + NSRange arg2, + ffi.Pointer arg3) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, NSRange arg1, + NSRange arg2, ffi.Pointer arg3)>>() + .asFunction< + void Function(ffi.Pointer, NSRange, NSRange, + ffi.Pointer)>()(arg0, arg1, arg2, arg3); +final _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry = , NSRange, NSRange, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( + void Function(ffi.Pointer, NSRange, NSRange, + ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + NSRange arg1, + NSRange arg2, + ffi.Pointer arg3) => + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2, arg3); + +class ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._( + ffi.Pointer<_ObjCBlock> id, Foundation lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunctionPointer( + Foundation lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, NSRange arg1, + NSRange arg2, ffi.Pointer arg3)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + NSRange, + NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunction(Foundation lib, + void Function(NSString?, NSRange, NSRange, ffi.Pointer) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + NSRange, + NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( + (ffi.Pointer arg0, NSRange arg1, NSRange arg2, + ffi.Pointer arg3) => + fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.listener(Foundation lib, + void Function(NSString?, NSRange, NSRange, ffi.Pointer) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + NSRange, + NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( + (ffi.Pointer arg0, NSRange arg1, NSRange arg2, + ffi.Pointer arg3) => + fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), + lib); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + NSRange, + NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSString? arg0, NSRange arg1, NSRange arg2, + ffi.Pointer arg3) => + _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + NSRange arg1, + NSRange arg2, + ffi.Pointer arg3)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + NSRange, + NSRange, + ffi.Pointer)>()( + _id, arg0?._id ?? ffi.nullptr, arg1, arg2, arg3); +} + +void _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_NSString_bool_closureRegistry = + , ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSString_bool_registerClosure( + void Function(ffi.Pointer, ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[block.ref.target.address]!( + arg0, arg1); + +class ObjCBlock_ffiVoid_NSString_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_bool._(ffi.Pointer<_ObjCBlock> id, Foundation lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_bool.fromFunctionPointer( + Foundation lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_bool.fromFunction( + Foundation lib, void Function(NSString, ffi.Pointer) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSString_bool_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + NSString._(arg0, lib, retain: true, release: true), + arg1))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSString_bool.listener( + Foundation lib, void Function(NSString, ffi.Pointer) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSString_bool_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSString._(arg0, lib, retain: true, release: true), + arg1))), + lib); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSString arg0, ffi.Pointer arg1) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + ffi.Pointer)>()(_id, arg0._id, arg1); +} + +abstract class NSStringEncodingConversionOptions { + static const int NSStringEncodingConversionAllowLossy = 1; + static const int NSStringEncodingConversionExternalRepresentation = 2; +} + +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction, int)>()( + arg0, arg1); +final _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry = + , int)>{}; +int _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( + void Function(ffi.Pointer, int) fn) { + final id = + ++_ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1) => + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._( + ffi.Pointer<_ObjCBlock> id, Foundation lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunctionPointer( + Foundation lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunction( + Foundation lib, void Function(ffi.Pointer, int) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( + (ffi.Pointer arg0, int arg1) => + fn(arg0, arg1))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.listener( + Foundation lib, void Function(ffi.Pointer, int) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.UnsignedLong)>.listener( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( + (ffi.Pointer arg0, int arg1) => + fn(arg0, arg1))), + lib); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + ffi.UnsignedLong)>? _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + int)>()(_id, arg0, arg1); +} + +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction, int)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry = + , int)>{}; +int _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( + void Function(ffi.Pointer, int) fn) { + final id = ++_ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._( + ffi.Pointer<_ObjCBlock> id, Foundation lib, + {bool retain = false, bool release = true}) + : super._(id, lib, retain: retain, release: release); + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunctionPointer( + Foundation lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunction( + Foundation lib, void Function(ffi.Pointer, int) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), + lib); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.listener( + Foundation lib, void Function(ffi.Pointer, int) fn) + : this._( + lib._newBlock1( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer<_ObjCBlock>, + ffi.Pointer, + ffi.UnsignedLong)>.listener( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), + lib); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + ffi.UnsignedLong)>? _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + int)>()(_id, arg0, arg1); +} + +class NSMutableString extends NSString { + NSMutableString._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableString] that points to the same underlying object as [other]. + static NSMutableString castFrom(T other) { + return NSMutableString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableString] that wraps the given raw object pointer. + static NSMutableString castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableString1); + } + + /// NSMutableString primitive (funnel) method. See below for the other mutation methods. + void replaceCharactersInRange_withString_(NSRange range, NSString aString) { + _lib._objc_msgSend_189(_id, _lib._sel_replaceCharactersInRange_withString_1, + range, aString._id); + } + + /// Additional mutation methods. For subclassers these are all available implemented in terms of the primitive replaceCharactersInRange:range: method. + void insertString_atIndex_(NSString aString, int loc) { + _lib._objc_msgSend_190( + _id, _lib._sel_insertString_atIndex_1, aString._id, loc); + } + + void deleteCharactersInRange_(NSRange range) { + _lib._objc_msgSend_191(_id, _lib._sel_deleteCharactersInRange_1, range); + } + + void appendString_(NSString aString) { + _lib._objc_msgSend_76(_id, _lib._sel_appendString_1, aString._id); + } + + void appendFormat_(NSString format) { + _lib._objc_msgSend_76(_id, _lib._sel_appendFormat_1, format._id); + } + + void setString_(NSString aString) { + _lib._objc_msgSend_76(_id, _lib._sel_setString_1, aString._id); + } + + /// This method replaces all occurrences of the target string with the replacement string, in the specified range of the receiver string, and returns the number of replacements. NSBackwardsSearch means the search is done from the end of the range (the results could be different); NSAnchoredSearch means only anchored (but potentially multiple) instances will be replaced. NSLiteralSearch and NSCaseInsensitiveSearch also apply. NSNumericSearch is ignored. Use NSMakeRange(0, [receiver length]) to process whole string. If NSRegularExpressionSearch is specified, the replacement is treated as a template, as in the corresponding NSRegularExpression methods, and no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch. + int replaceOccurrencesOfString_withString_options_range_( + NSString target, NSString replacement, int options, NSRange searchRange) { + return _lib._objc_msgSend_192( + _id, + _lib._sel_replaceOccurrencesOfString_withString_options_range_1, + target._id, + replacement._id, + options, + searchRange); + } + + /// Perform string transliteration. The transformation represented by transform is applied to the given range of string in place. Only the specified range will be modified, but the transform may look at portions of the string outside that range for context. If supplied, resultingRange is modified to reflect the new range corresponding to the original range. reverse indicates that the inverse transform should be used instead, if it exists. Attempting to use an invalid transform identifier or reverse an irreversible transform will return NO; otherwise YES is returned, even if no characters are actually transformed. You can pass one of the predefined transforms listed above (NSStringTransformLatinToKatakana, etc), or any valid ICU transform ID as defined in the ICU User Guide. Arbitrary ICU transform rules are not supported. + bool applyTransform_reverse_range_updatedRange_(NSString transform, + bool reverse, NSRange range, ffi.Pointer resultingRange) { + return _lib._objc_msgSend_193( + _id, + _lib._sel_applyTransform_reverse_range_updatedRange_1, + transform._id, + reverse, + range, + resultingRange); + } + + /// In addition to these two, NSMutableString responds properly to all NSString creation methods. + NSMutableString initWithCapacity_(int capacity) { + final _ret = + _lib._objc_msgSend_194(_id, _lib._sel_initWithCapacity_1, capacity); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithCapacity_(Foundation _lib, int capacity) { + final _ret = _lib._objc_msgSend_194( + _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + /// The initializers available to subclasses. See further below for additional init methods. + @override + NSMutableString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static ffi.Pointer getAvailableStringEncodings( + Foundation _lib) { + return _lib._objc_msgSend_146( + _lib._class_NSMutableString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + Foundation _lib, int encoding) { + final _ret = _lib._objc_msgSend_106(_lib._class_NSMutableString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Should be rarely used + static int getDefaultCStringEncoding(Foundation _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableString1, _lib._sel_defaultCStringEncoding1); + } + + /// "NoCopy" is a hint + @override + NSMutableString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_157( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_158( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithString_(NSString aString) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithString_1, aString._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_(NSString format) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithFormat_1, format._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_arguments_( + NSString format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_161( + _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_initWithFormat_locale_1, + format._id, locale?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_163( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format._id, + locale?._id ?? ffi.nullptr, + argList); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? + initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_166( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format._id, + validFormatSpecifiers._id, + argList, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_167( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _lib._objc_msgSend_168( + _id, _lib._sel_initWithData_encoding_1, data._id, encoding); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_169( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + /// "NoCopy" is a hint + @override + NSMutableString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_170( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_171( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString string(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_string1); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithString_(Foundation _lib, NSString string) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSMutableString1, _lib._sel_stringWithString_1, string._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithCharacters_length_( + Foundation _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159(_lib._class_NSMutableString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithUTF8String_( + Foundation _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160(_lib._class_NSMutableString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithFormat_(Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSMutableString1, _lib._sel_stringWithFormat_1, format._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString localizedStringWithFormat_( + Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSMutableString1, + _lib._sel_localizedStringWithFormat_1, format._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? + stringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSMutableString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSMutableString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_172(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithCString_encoding_( + Foundation _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSMutableString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + /// These use the specified encoding. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSMutableString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173(_id, + _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfURL_encoding_error_( + Foundation _lib, + NSURL url, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfFile_encoding_error_( + Foundation _lib, + NSString path, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + /// These try to determine the encoding, and return the encoding which was used. Note that these methods might get "smarter" in subsequent releases of the system, and use additional techniques for recognizing encodings. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSMutableString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfURL_usedEncoding_error_( + Foundation _lib, + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfFile_usedEncoding_error_( + Foundation _lib, + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + /// This API is used to detect the string encoding of a given raw data. It can also do lossy string conversion. It converts the data to a string in the detected string encoding. The data object contains the raw bytes, and the option dictionary contains the hints and parameters for the analysis. The opts dictionary can be nil. If the string parameter is not NULL, the string created by the detected string encoding is returned. The lossy substitution string is emitted in the output string for characters that could not be converted when lossy conversion is enabled. The usedLossyConversion indicates if there is any lossy conversion in the resulted string. If no encoding can be detected, 0 is returned. + /// + /// The possible items for the dictionary are: + /// 1) an array of suggested string encodings (without specifying the 3rd option in this list, all string encodings are considered but the ones in the array will have a higher preference; moreover, the order of the encodings in the array is important: the first encoding has a higher preference than the second one in the array) + /// 2) an array of string encodings not to use (the string encodings in this list will not be considered at all) + /// 3) a boolean option indicating whether only the suggested string encodings are considered + /// 4) a boolean option indicating whether lossy is allowed + /// 5) an option that gives a specific string to substitude for mystery bytes + /// 6) the current user's language + /// 7) a boolean option indicating whether the data is generated by Windows + /// + /// If the values in the dictionary have wrong types (for example, the value of NSStringEncodingDetectionSuggestedEncodingsKey is not an array), an exception is thrown. + /// If the values in the dictionary are unknown (for example, the value in the array of suggested string encodings is not a valid encoding), the values will be ignored. + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + Foundation _lib, + NSData data, + NSObject? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_177( + _lib._class_NSMutableString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data._id, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + static NSObject? stringWithContentsOfFile_(Foundation _lib, NSString path) { + final _ret = _lib._objc_msgSend_25(_lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_1, path._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(Foundation _lib, NSURL url) { + final _ret = _lib._objc_msgSend_184(_lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_1, url._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + Foundation _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSMutableString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_( + Foundation _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_160( + _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_new1); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableString1, _lib._sel_allocWithZone_1, zone); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_alloc1); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } +} + +class NSSimpleCString extends NSString { + NSSimpleCString._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSSimpleCString] that points to the same underlying object as [other]. + static NSSimpleCString castFrom(T other) { + return NSSimpleCString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSSimpleCString] that wraps the given raw object pointer. + static NSSimpleCString castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSSimpleCString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSSimpleCString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSSimpleCString1); + } + + /// The initializers available to subclasses. See further below for additional init methods. + @override + NSSimpleCString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static ffi.Pointer getAvailableStringEncodings( + Foundation _lib) { + return _lib._objc_msgSend_146( + _lib._class_NSSimpleCString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + Foundation _lib, int encoding) { + final _ret = _lib._objc_msgSend_106(_lib._class_NSSimpleCString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Should be rarely used + static int getDefaultCStringEncoding(Foundation _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSSimpleCString1, _lib._sel_defaultCStringEncoding1); + } + + /// "NoCopy" is a hint + @override + NSSimpleCString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_157( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + @override + NSSimpleCString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_158( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator?._id ?? ffi.nullptr); + return NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + @override + NSSimpleCString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString initWithString_(NSString aString) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithString_1, aString._id); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString initWithFormat_(NSString format) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithFormat_1, format._id); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString initWithFormat_arguments_( + NSString format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_161( + _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_initWithFormat_locale_1, + format._id, locale?._id ?? ffi.nullptr); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_163( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format._id, + locale?._id ?? ffi.nullptr, + argList); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? + initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_166( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format._id, + validFormatSpecifiers._id, + argList, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_167( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _lib._objc_msgSend_168( + _id, _lib._sel_initWithData_encoding_1, data._id, encoding); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_169( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + /// "NoCopy" is a hint + @override + NSSimpleCString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_170( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + @override + NSSimpleCString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_171( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + static NSSimpleCString string(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSSimpleCString1, _lib._sel_string1); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString stringWithString_(Foundation _lib, NSString string) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSSimpleCString1, _lib._sel_stringWithString_1, string._id); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString stringWithCharacters_length_( + Foundation _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159(_lib._class_NSSimpleCString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithUTF8String_( + Foundation _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160(_lib._class_NSSimpleCString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString stringWithFormat_(Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18( + _lib._class_NSSimpleCString1, _lib._sel_stringWithFormat_1, format._id); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString localizedStringWithFormat_( + Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSSimpleCString1, + _lib._sel_localizedStringWithFormat_1, format._id); + return NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? + stringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSSimpleCString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSSimpleCString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_172(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithCString_encoding_( + Foundation _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSSimpleCString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + /// These use the specified encoding. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSSimpleCString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173(_id, + _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithContentsOfURL_encoding_error_( + Foundation _lib, + NSURL url, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173( + _lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithContentsOfFile_encoding_error_( + Foundation _lib, + NSString path, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + /// These try to determine the encoding, and return the encoding which was used. Note that these methods might get "smarter" in subsequent releases of the system, and use additional techniques for recognizing encodings. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSSimpleCString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + @override + NSSimpleCString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithContentsOfURL_usedEncoding_error_( + Foundation _lib, + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString? stringWithContentsOfFile_usedEncoding_error_( + Foundation _lib, + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSSimpleCString._(_ret, _lib, retain: true, release: true); + } + + /// This API is used to detect the string encoding of a given raw data. It can also do lossy string conversion. It converts the data to a string in the detected string encoding. The data object contains the raw bytes, and the option dictionary contains the hints and parameters for the analysis. The opts dictionary can be nil. If the string parameter is not NULL, the string created by the detected string encoding is returned. The lossy substitution string is emitted in the output string for characters that could not be converted when lossy conversion is enabled. The usedLossyConversion indicates if there is any lossy conversion in the resulted string. If no encoding can be detected, 0 is returned. + /// + /// The possible items for the dictionary are: + /// 1) an array of suggested string encodings (without specifying the 3rd option in this list, all string encodings are considered but the ones in the array will have a higher preference; moreover, the order of the encodings in the array is important: the first encoding has a higher preference than the second one in the array) + /// 2) an array of string encodings not to use (the string encodings in this list will not be considered at all) + /// 3) a boolean option indicating whether only the suggested string encodings are considered + /// 4) a boolean option indicating whether lossy is allowed + /// 5) an option that gives a specific string to substitude for mystery bytes + /// 6) the current user's language + /// 7) a boolean option indicating whether the data is generated by Windows + /// + /// If the values in the dictionary have wrong types (for example, the value of NSStringEncodingDetectionSuggestedEncodingsKey is not an array), an exception is thrown. + /// If the values in the dictionary are unknown (for example, the value in the array of suggested string encodings is not a valid encoding), the values will be ignored. + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + Foundation _lib, + NSData data, + NSObject? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_177( + _lib._class_NSSimpleCString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data._id, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + static NSObject? stringWithContentsOfFile_(Foundation _lib, NSString path) { + final _ret = _lib._objc_msgSend_25(_lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfFile_1, path._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(Foundation _lib, NSURL url) { + final _ret = _lib._objc_msgSend_184(_lib._class_NSSimpleCString1, + _lib._sel_stringWithContentsOfURL_1, url._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + Foundation _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSSimpleCString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_( + Foundation _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_160( + _lib._class_NSSimpleCString1, _lib._sel_stringWithCString_1, bytes); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSSimpleCString new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSSimpleCString1, _lib._sel_new1); + return NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + static NSSimpleCString allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSSimpleCString1, _lib._sel_allocWithZone_1, zone); + return NSSimpleCString._(_ret, _lib, retain: false, release: true); + } + + static NSSimpleCString alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSSimpleCString1, _lib._sel_alloc1); + return NSSimpleCString._(_ret, _lib, retain: false, release: true); + } +} + +class NSConstantString extends NSSimpleCString { + NSConstantString._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSConstantString] that points to the same underlying object as [other]. + static NSConstantString castFrom(T other) { + return NSConstantString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSConstantString] that wraps the given raw object pointer. + static NSConstantString castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSConstantString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSConstantString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSConstantString1); + } + + /// The initializers available to subclasses. See further below for additional init methods. + @override + NSConstantString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static ffi.Pointer getAvailableStringEncodings( + Foundation _lib) { + return _lib._objc_msgSend_146( + _lib._class_NSConstantString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + Foundation _lib, int encoding) { + final _ret = _lib._objc_msgSend_106(_lib._class_NSConstantString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + /// Should be rarely used + static int getDefaultCStringEncoding(Foundation _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSConstantString1, _lib._sel_defaultCStringEncoding1); + } + + /// "NoCopy" is a hint + @override + NSConstantString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_157( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSConstantString._(_ret, _lib, retain: false, release: true); + } + + @override + NSConstantString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_158( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator?._id ?? ffi.nullptr); + return NSConstantString._(_ret, _lib, retain: false, release: true); + } + + @override + NSConstantString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString initWithString_(NSString aString) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithString_1, aString._id); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString initWithFormat_(NSString format) { + final _ret = + _lib._objc_msgSend_18(_id, _lib._sel_initWithFormat_1, format._id); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString initWithFormat_arguments_( + NSString format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_161( + _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_initWithFormat_locale_1, + format._id, locale?._id ?? ffi.nullptr); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_163( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format._id, + locale?._id ?? ffi.nullptr, + argList); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? + initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_166( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format._id, + validFormatSpecifiers._id, + argList, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_167( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format._id, + validFormatSpecifiers._id, + locale?._id ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _lib._objc_msgSend_168( + _id, _lib._sel_initWithData_encoding_1, data._id, encoding); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_169( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + /// "NoCopy" is a hint + @override + NSConstantString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_170( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: false, release: true); + } + + @override + NSConstantString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _lib._objc_msgSend_171( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: false, release: true); + } + + static NSConstantString string(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSConstantString1, _lib._sel_string1); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString stringWithString_(Foundation _lib, NSString string) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSConstantString1, + _lib._sel_stringWithString_1, string._id); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString stringWithCharacters_length_( + Foundation _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_159(_lib._class_NSConstantString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithUTF8String_( + Foundation _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_160(_lib._class_NSConstantString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString stringWithFormat_(Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSConstantString1, + _lib._sel_stringWithFormat_1, format._id); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString localizedStringWithFormat_( + Foundation _lib, NSString format) { + final _ret = _lib._objc_msgSend_18(_lib._class_NSConstantString1, + _lib._sel_localizedStringWithFormat_1, format._id); + return NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? + stringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSConstantString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + Foundation _lib, + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSConstantString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format._id, + validFormatSpecifiers._id, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_172(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithCString_encoding_( + Foundation _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSConstantString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + /// These use the specified encoding. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSConstantString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173(_id, + _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithContentsOfURL_encoding_error_( + Foundation _lib, + NSURL url, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_173( + _lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithContentsOfFile_encoding_error_( + Foundation _lib, + NSString path, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + /// These try to determine the encoding, and return the encoding which was used. Note that these methods might get "smarter" in subsequent releases of the system, and use additional techniques for recognizing encodings. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). + @override + NSConstantString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + @override + NSConstantString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithContentsOfURL_usedEncoding_error_( + Foundation _lib, + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_175( + _lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString? stringWithContentsOfFile_usedEncoding_error_( + Foundation _lib, + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_176( + _lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path._id, + enc, + error); + return _ret.address == 0 + ? null + : NSConstantString._(_ret, _lib, retain: true, release: true); + } + + /// This API is used to detect the string encoding of a given raw data. It can also do lossy string conversion. It converts the data to a string in the detected string encoding. The data object contains the raw bytes, and the option dictionary contains the hints and parameters for the analysis. The opts dictionary can be nil. If the string parameter is not NULL, the string created by the detected string encoding is returned. The lossy substitution string is emitted in the output string for characters that could not be converted when lossy conversion is enabled. The usedLossyConversion indicates if there is any lossy conversion in the resulted string. If no encoding can be detected, 0 is returned. + /// + /// The possible items for the dictionary are: + /// 1) an array of suggested string encodings (without specifying the 3rd option in this list, all string encodings are considered but the ones in the array will have a higher preference; moreover, the order of the encodings in the array is important: the first encoding has a higher preference than the second one in the array) + /// 2) an array of string encodings not to use (the string encodings in this list will not be considered at all) + /// 3) a boolean option indicating whether only the suggested string encodings are considered + /// 4) a boolean option indicating whether lossy is allowed + /// 5) an option that gives a specific string to substitude for mystery bytes + /// 6) the current user's language + /// 7) a boolean option indicating whether the data is generated by Windows + /// + /// If the values in the dictionary have wrong types (for example, the value of NSStringEncodingDetectionSuggestedEncodingsKey is not an array), an exception is thrown. + /// If the values in the dictionary are unknown (for example, the value in the array of suggested string encodings is not a valid encoding), the values will be ignored. + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + Foundation _lib, + NSData data, + NSObject? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_177( + _lib._class_NSConstantString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data._id, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + static NSObject? stringWithContentsOfFile_(Foundation _lib, NSString path) { + final _ret = _lib._objc_msgSend_25(_lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfFile_1, path._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(Foundation _lib, NSURL url) { + final _ret = _lib._objc_msgSend_184(_lib._class_NSConstantString1, + _lib._sel_stringWithContentsOfURL_1, url._id); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + Foundation _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_172(_lib._class_NSConstantString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject? stringWithCString_( + Foundation _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_160( + _lib._class_NSConstantString1, _lib._sel_stringWithCString_1, bytes); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSConstantString new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSConstantString1, _lib._sel_new1); + return NSConstantString._(_ret, _lib, retain: false, release: true); + } + + static NSConstantString allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSConstantString1, _lib._sel_allocWithZone_1, zone); + return NSConstantString._(_ret, _lib, retain: false, release: true); + } + + static NSConstantString alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSConstantString1, _lib._sel_alloc1); + return NSConstantString._(_ret, _lib, retain: false, release: true); + } +} + +/// NSURLQueryItem encapsulates a single query name-value pair. The name and value strings of a query name-value pair are not percent encoded. For use with the NSURLComponents queryItems property. +class NSURLQueryItem extends NSObject { + NSURLQueryItem._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLQueryItem] that points to the same underlying object as [other]. + static NSURLQueryItem castFrom(T other) { + return NSURLQueryItem._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLQueryItem] that wraps the given raw object pointer. + static NSURLQueryItem castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLQueryItem._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLQueryItem]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLQueryItem1); + } + + NSURLQueryItem initWithName_value_(NSString name, NSString? value) { + final _ret = _lib._objc_msgSend_195(_id, _lib._sel_initWithName_value_1, + name._id, value?._id ?? ffi.nullptr); + return NSURLQueryItem._(_ret, _lib, retain: true, release: true); + } + + static NSURLQueryItem queryItemWithName_value_( + Foundation _lib, NSString name, NSString? value) { + final _ret = _lib._objc_msgSend_195( + _lib._class_NSURLQueryItem1, + _lib._sel_queryItemWithName_value_1, + name._id, + value?._id ?? ffi.nullptr); + return NSURLQueryItem._(_ret, _lib, retain: true, release: true); + } + + NSString get name { + final _ret = _lib._objc_msgSend_13(_id, _lib._sel_name1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get value { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_value1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLQueryItem init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLQueryItem._(_ret, _lib, retain: true, release: true); + } + + static NSURLQueryItem new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLQueryItem1, _lib._sel_new1); + return NSURLQueryItem._(_ret, _lib, retain: false, release: true); + } + + static NSURLQueryItem allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLQueryItem1, _lib._sel_allocWithZone_1, zone); + return NSURLQueryItem._(_ret, _lib, retain: false, release: true); + } + + static NSURLQueryItem alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLQueryItem1, _lib._sel_alloc1); + return NSURLQueryItem._(_ret, _lib, retain: false, release: true); + } +} + +class NSURLComponents extends NSObject { + NSURLComponents._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLComponents] that points to the same underlying object as [other]. + static NSURLComponents castFrom(T other) { + return NSURLComponents._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLComponents] that wraps the given raw object pointer. + static NSURLComponents castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLComponents._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLComponents]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLComponents1); + } + + /// Initialize a NSURLComponents with all components undefined. Designated initializer. + @override + NSURLComponents init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initialize a NSURLComponents with the components of a URL. If resolvingAgainstBaseURL is YES and url is a relative URL, the components of [url absoluteURL] are used. If the url string from the NSURL is malformed, nil is returned. + NSURLComponents? initWithURL_resolvingAgainstBaseURL_( + NSURL url, bool resolve) { + final _ret = _lib._objc_msgSend_196( + _id, _lib._sel_initWithURL_resolvingAgainstBaseURL_1, url._id, resolve); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created NSURLComponents with the components of a URL. If resolvingAgainstBaseURL is YES and url is a relative URL, the components of [url absoluteURL] are used. If the url string from the NSURL is malformed, nil is returned. + static NSURLComponents? componentsWithURL_resolvingAgainstBaseURL_( + Foundation _lib, NSURL url, bool resolve) { + final _ret = _lib._objc_msgSend_196( + _lib._class_NSURLComponents1, + _lib._sel_componentsWithURL_resolvingAgainstBaseURL_1, + url._id, + resolve); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initialize a NSURLComponents with a URL string. If the URLString is malformed, nil is returned. + NSURLComponents? initWithString_(NSString URLString) { + final _ret = + _lib._objc_msgSend_25(_id, _lib._sel_initWithString_1, URLString._id); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created NSURLComponents with a URL string. If the URLString is malformed, nil is returned. + static NSURLComponents? componentsWithString_( + Foundation _lib, NSString URLString) { + final _ret = _lib._objc_msgSend_25(_lib._class_NSURLComponents1, + _lib._sel_componentsWithString_1, URLString._id); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initializes an `NSURLComponents` with a URL string and the option to add (or skip) IDNA- and percent-encoding of invalid characters. + /// If `encodingInvalidCharacters` is false, and the URL string is invalid according to RFC 3986, `nil` is returned. + /// If `encodingInvalidCharacters` is true, `NSURLComponents` will try to encode the string to create a valid URL. + /// If the URL string is still invalid after encoding, `nil` is returned. + /// + /// - Parameter URLString: The URL string. + /// - Parameter encodingInvalidCharacters: True if `NSURLComponents` should try to encode an invalid URL string, false otherwise. + /// - Returns: An `NSURLComponents` instance for a valid URL, or `nil` if the URL is invalid. + NSURLComponents? initWithString_encodingInvalidCharacters_( + NSString URLString, bool encodingInvalidCharacters) { + final _ret = _lib._objc_msgSend_27( + _id, + _lib._sel_initWithString_encodingInvalidCharacters_1, + URLString._id, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Initializes and returns a newly created `NSURLComponents` with a URL string and the option to add (or skip) IDNA- and percent-encoding of invalid characters. + /// If `encodingInvalidCharacters` is false, and the URL string is invalid according to RFC 3986, `nil` is returned. + /// If `encodingInvalidCharacters` is true, `NSURLComponents` will try to encode the string to create a valid URL. + /// If the URL string is still invalid after encoding, nil is returned. + /// + /// - Parameter URLString: The URL string. + /// - Parameter encodingInvalidCharacters: True if `NSURLComponents` should try to encode an invalid URL string, false otherwise. + /// - Returns: An `NSURLComponents` instance for a valid URL, or `nil` if the URL is invalid. + static NSURLComponents? componentsWithString_encodingInvalidCharacters_( + Foundation _lib, NSString URLString, bool encodingInvalidCharacters) { + final _ret = _lib._objc_msgSend_27( + _lib._class_NSURLComponents1, + _lib._sel_componentsWithString_encodingInvalidCharacters_1, + URLString._id, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURLComponents._(_ret, _lib, retain: true, release: true); + } + + /// Returns a URL created from the NSURLComponents. If the NSURLComponents has an authority component (user, password, host or port) and a path component, then the path must either begin with "/" or be an empty string. If the NSURLComponents does not have an authority component (user, password, host or port) and has a path component, the path component must not start with "//". If those requirements are not met, nil is returned. + NSURL? get URL { + final _ret = _lib._objc_msgSend_33(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns a URL created from the NSURLComponents relative to a base URL. If the NSURLComponents has an authority component (user, password, host or port) and a path component, then the path must either begin with "/" or be an empty string. If the NSURLComponents does not have an authority component (user, password, host or port) and has a path component, the path component must not start with "//". If those requirements are not met, nil is returned. + NSURL? URLRelativeToURL_(NSURL? baseURL) { + final _ret = _lib._objc_msgSend_197( + _id, _lib._sel_URLRelativeToURL_1, baseURL?._id ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + /// Returns a URL string created from the NSURLComponents. If the NSURLComponents has an authority component (user, password, host or port) and a path component, then the path must either begin with "/" or be an empty string. If the NSURLComponents does not have an authority component (user, password, host or port) and has a path component, the path component must not start with "//". If those requirements are not met, nil is returned. + NSString? get string { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_string1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Attempting to set the scheme with an invalid scheme string will cause an exception. + NSString? get scheme { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_scheme1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Attempting to set the scheme with an invalid scheme string will cause an exception. + set scheme(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setScheme_1, value?._id ?? ffi.nullptr); + } + + NSString? get user { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_user1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set user(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setUser_1, value?._id ?? ffi.nullptr); + } + + NSString? get password { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_password1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set password(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPassword_1, value?._id ?? ffi.nullptr); + } + + NSString? get host { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_host1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set host(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setHost_1, value?._id ?? ffi.nullptr); + } + + /// Attempting to set a negative port number will cause an exception. + NSNumber? get port { + final _ret = _lib._objc_msgSend_65(_id, _lib._sel_port1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + /// Attempting to set a negative port number will cause an exception. + set port(NSNumber? value) { + return _lib._objc_msgSend_199( + _id, _lib._sel_setPort_1, value?._id ?? ffi.nullptr); + } + + NSString? get path { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_path1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set path(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPath_1, value?._id ?? ffi.nullptr); + } + + NSString? get query { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_query1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set query(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setQuery_1, value?._id ?? ffi.nullptr); + } + + NSString? get fragment { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_fragment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set fragment(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setFragment_1, value?._id ?? ffi.nullptr); + } + + /// Getting these properties retains any percent encoding these components may have. Setting these properties assumes the component string is already correctly percent encoded. Attempting to set an incorrectly percent encoded string will cause an exception. Although ';' is a legal path character, it is recommended that it be percent-encoded for best compatibility with NSURL (-stringByAddingPercentEncodingWithAllowedCharacters: will percent-encode any ';' characters if you pass the URLPathAllowedCharacterSet). + NSString? get percentEncodedUser { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedUser1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// Getting these properties retains any percent encoding these components may have. Setting these properties assumes the component string is already correctly percent encoded. Attempting to set an incorrectly percent encoded string will cause an exception. Although ';' is a legal path character, it is recommended that it be percent-encoded for best compatibility with NSURL (-stringByAddingPercentEncodingWithAllowedCharacters: will percent-encode any ';' characters if you pass the URLPathAllowedCharacterSet). + set percentEncodedUser(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedUser_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentEncodedPassword { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedPassword1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentEncodedPassword(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedPassword_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentEncodedHost { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedHost1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentEncodedHost(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedHost_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentEncodedPath { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentEncodedPath(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedPath_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentEncodedQuery { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedQuery1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentEncodedQuery(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedQuery_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentEncodedFragment { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_percentEncodedFragment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentEncodedFragment(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setPercentEncodedFragment_1, value?._id ?? ffi.nullptr); + } + + NSString? get encodedHost { + final _ret = _lib._objc_msgSend_32(_id, _lib._sel_encodedHost1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set encodedHost(NSString? value) { + return _lib._objc_msgSend_198( + _id, _lib._sel_setEncodedHost_1, value?._id ?? ffi.nullptr); + } + + /// These properties return the character range of a component in the URL string returned by -[NSURLComponents string]. If the component does not exist in the NSURLComponents object, {NSNotFound, 0} is returned. Note: Zero length components are legal. For example, the URL string "scheme://:@/?#" has a zero length user, password, host, query and fragment; the URL strings "scheme:" and "" both have a zero length path. + void getRangeOfScheme(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfScheme1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfScheme1); + } + + void getRangeOfUser(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfUser1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfUser1); + } + + void getRangeOfPassword(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfPassword1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfPassword1); + } + + void getRangeOfHost(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfHost1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfHost1); + } + + void getRangeOfPort(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfPort1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfPort1); + } + + void getRangeOfPath(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfPath1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfPath1); + } + + void getRangeOfQuery(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfQuery1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfQuery1); + } + + void getRangeOfFragment(ffi.Pointer stret) { + _lib._objc_msgSend_useVariants1 + ? _lib._objc_msgSend_200_stret(stret, _id, _lib._sel_rangeOfFragment1) + : stret.ref = _lib._objc_msgSend_200(_id, _lib._sel_rangeOfFragment1); + } + + /// The query component as an array of NSURLQueryItems for this NSURLComponents. + /// + /// Each NSURLQueryItem represents a single key-value pair, + /// + /// Note that a name may appear more than once in a single query string, so the name values are not guaranteed to be unique. If the NSURLComponents has an empty query component, returns an empty array. If the NSURLComponents has no query component, returns nil. + /// + /// The queryItems getter returns an array of NSURLQueryItems in the order in which they appear in the original query string. Any percent-encoding in a NSURLQueryItem name or value is removed. + /// + /// The queryItems setter combines an array containing any number of NSURLQueryItems, each of which represents a single key-value pair, into a query string and sets the NSURLComponents query property. If the NSURLQueryItems name or value strings contain any characters not allowed in a URL's query component, those characters are percent-encoded. In addition, any '&' and '=' characters in a NSURLQueryItem name are percent-encoded. Passing an empty array sets the query component of the NSURLComponents to an empty string. Passing nil removes the query component of the NSURLComponents. + /// + /// - note: If a NSURLQueryItem name-value pair is empty (i.e. the query string starts with '&', ends with '&', or has "&&" within it), you get a NSURLQueryItem with a zero-length name and a nil value. If a NSURLQueryItem name-value pair has nothing before the equals sign, you get a zero-length name. If a NSURLQueryItem name-value pair has nothing after the equals sign, you get a zero-length value. If a NSURLQueryItem name-value pair has no equals sign, the NSURLQueryItem name-value pair string is the name and you get a nil value. + NSObject? get queryItems { + final _ret = _lib._objc_msgSend_69(_id, _lib._sel_queryItems1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// The query component as an array of NSURLQueryItems for this NSURLComponents. + /// + /// Each NSURLQueryItem represents a single key-value pair, + /// + /// Note that a name may appear more than once in a single query string, so the name values are not guaranteed to be unique. If the NSURLComponents has an empty query component, returns an empty array. If the NSURLComponents has no query component, returns nil. + /// + /// The queryItems getter returns an array of NSURLQueryItems in the order in which they appear in the original query string. Any percent-encoding in a NSURLQueryItem name or value is removed. + /// + /// The queryItems setter combines an array containing any number of NSURLQueryItems, each of which represents a single key-value pair, into a query string and sets the NSURLComponents query property. If the NSURLQueryItems name or value strings contain any characters not allowed in a URL's query component, those characters are percent-encoded. In addition, any '&' and '=' characters in a NSURLQueryItem name are percent-encoded. Passing an empty array sets the query component of the NSURLComponents to an empty string. Passing nil removes the query component of the NSURLComponents. + /// + /// - note: If a NSURLQueryItem name-value pair is empty (i.e. the query string starts with '&', ends with '&', or has "&&" within it), you get a NSURLQueryItem with a zero-length name and a nil value. If a NSURLQueryItem name-value pair has nothing before the equals sign, you get a zero-length name. If a NSURLQueryItem name-value pair has nothing after the equals sign, you get a zero-length value. If a NSURLQueryItem name-value pair has no equals sign, the NSURLQueryItem name-value pair string is the name and you get a nil value. + set queryItems(NSObject? value) { + return _lib._objc_msgSend_201( + _id, _lib._sel_setQueryItems_1, value?._id ?? ffi.nullptr); + } + + /// The percentEncodedQueryItems getter returns an array of NSURLQueryItems in the order in which they appear in the original query string. Any percent-encoding in a NSURLQueryItem name or value is retained. + /// + /// The percentEncodedQueryItems setter combines an array containing any number of NSURLQueryItems, each of which represents a single key-value pair, into a query string and sets the NSURLComponents query property. This property assumes the NSURLQueryItem names and values are already correctly percent-encoded, and that the NSURLQueryItem names do not contain the query item delimiter characters '&' and '='. Attempting to set an incorrectly percent-encoded NSURLQueryItem or a NSURLQueryItem name with the query item delimiter characters '&' and '=' will cause an exception. + NSObject? get percentEncodedQueryItems { + final _ret = + _lib._objc_msgSend_69(_id, _lib._sel_percentEncodedQueryItems1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + /// The percentEncodedQueryItems getter returns an array of NSURLQueryItems in the order in which they appear in the original query string. Any percent-encoding in a NSURLQueryItem name or value is retained. + /// + /// The percentEncodedQueryItems setter combines an array containing any number of NSURLQueryItems, each of which represents a single key-value pair, into a query string and sets the NSURLComponents query property. This property assumes the NSURLQueryItem names and values are already correctly percent-encoded, and that the NSURLQueryItem names do not contain the query item delimiter characters '&' and '='. Attempting to set an incorrectly percent-encoded NSURLQueryItem or a NSURLQueryItem name with the query item delimiter characters '&' and '=' will cause an exception. + set percentEncodedQueryItems(NSObject? value) { + return _lib._objc_msgSend_201(_id, _lib._sel_setPercentEncodedQueryItems_1, + value?._id ?? ffi.nullptr); + } + + static NSURLComponents new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLComponents1, _lib._sel_new1); + return NSURLComponents._(_ret, _lib, retain: false, release: true); + } + + static NSURLComponents allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLComponents1, _lib._sel_allocWithZone_1, zone); + return NSURLComponents._(_ret, _lib, retain: false, release: true); + } + + static NSURLComponents alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLComponents1, _lib._sel_alloc1); + return NSURLComponents._(_ret, _lib, retain: false, release: true); + } +} + +/// NSFileSecurity encapsulates a file system object's security information. NSFileSecurity and CFFileSecurity are toll-free bridged. Use the CFFileSecurity API for access to the low-level file security properties encapsulated by NSFileSecurity. +class NSFileSecurity extends NSObject { + NSFileSecurity._(ffi.Pointer id, Foundation lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSFileSecurity] that points to the same underlying object as [other]. + static NSFileSecurity castFrom(T other) { + return NSFileSecurity._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSFileSecurity] that wraps the given raw object pointer. + static NSFileSecurity castFromPointer( + Foundation lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSFileSecurity._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSFileSecurity]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSFileSecurity1); + } + + NSFileSecurity? initWithCoder_(NSCoder coder) { + final _ret = + _lib._objc_msgSend_37(_id, _lib._sel_initWithCoder_1, coder._id); + return _ret.address == 0 + ? null + : NSFileSecurity._(_ret, _lib, retain: true, release: true); + } + + @override + NSFileSecurity init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFileSecurity._(_ret, _lib, retain: true, release: true); + } + + static NSFileSecurity new1(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileSecurity1, _lib._sel_new1); + return NSFileSecurity._(_ret, _lib, retain: false, release: true); + } + + static NSFileSecurity allocWithZone_( + Foundation _lib, ffi.Pointer zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFileSecurity1, _lib._sel_allocWithZone_1, zone); + return NSFileSecurity._(_ret, _lib, retain: false, release: true); + } + + static NSFileSecurity alloc(Foundation _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileSecurity1, _lib._sel_alloc1); + return NSFileSecurity._(_ret, _lib, retain: false, release: true); + } +} diff --git a/packages/celest_auth/lib/src/native/darwin/foundation.yaml b/packages/celest_auth/lib/src/native/darwin/foundation.yaml new file mode 100644 index 00000000..5ed24ce6 --- /dev/null +++ b/packages/celest_auth/lib/src/native/darwin/foundation.yaml @@ -0,0 +1,80 @@ +format_version: 1.0.0 +files: + package:celest_auth/src/native/darwin/foundation.ffi.dart: + used-config: + ffi-native: false + symbols: + ObjCObject: + name: ObjCObject + ObjCSel: + name: ObjCSel + c:@E@NSComparisonResult: + name: NSComparisonResult + c:@E@NSStringCompareOptions: + name: NSStringCompareOptions + c:@E@NSStringEncodingConversionOptions: + name: NSStringEncodingConversionOptions + c:@E@NSStringEnumerationOptions: + name: NSStringEnumerationOptions + c:@E@NSURLBookmarkCreationOptions: + name: NSURLBookmarkCreationOptions + c:@E@NSURLBookmarkResolutionOptions: + name: NSURLBookmarkResolutionOptions + c:@E@NSURLHandleStatus: + name: NSURLHandleStatus + c:@S@_NSRange: + name: NSRange + c:@S@_NSZone: + name: NSZone + c:objc(cs)NSCharacterSet: + name: NSCharacterSet + c:objc(cs)NSCoder: + name: NSCoder + c:objc(cs)NSConstantString: + name: NSConstantString + c:objc(cs)NSData: + name: NSData + c:objc(cs)NSDictionary: + name: NSDictionary + c:objc(cs)NSError: + name: NSError + c:objc(cs)NSFileSecurity: + name: NSFileSecurity + c:objc(cs)NSInvocation: + name: NSInvocation + c:objc(cs)NSLocale: + name: NSLocale + c:objc(cs)NSMethodSignature: + name: NSMethodSignature + c:objc(cs)NSMutableString: + name: NSMutableString + c:objc(cs)NSNumber: + name: NSNumber + c:objc(cs)NSObject: + name: NSObject + c:objc(cs)NSSimpleCString: + name: NSSimpleCString + c:objc(cs)NSString: + name: NSString + c:objc(cs)NSURL: + name: NSURL + c:objc(cs)NSURLComponents: + name: NSURLComponents + c:objc(cs)NSURLHandle: + name: NSURLHandle + c:objc(cs)NSURLQueryItem: + name: NSURLQueryItem + c:objc(cs)NSValue: + name: NSValue + c:objc(cs)Protocol: + name: Protocol + "objcBlock: cptx1f*? c7w328 egoeft": + name: ObjCBlock_ObjCObject_NSError_NSString + "objcBlock: ejnfxy 3u6ow8* gyejpi": + name: ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong + "objcBlock: ejnfxy egoeft bool*": + name: ObjCBlock_ffiVoid_NSString_bool + "objcBlock: ejnfxy egoeft? dxgaxi dxgaxi bool*": + name: ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool + "objcBlock: ejnfxy ejnfxy* gyejpi": + name: ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong diff --git a/packages/celest_auth/lib/src/platform/auth_platform.android.dart b/packages/celest_auth/lib/src/platform/auth_platform.android.dart new file mode 100644 index 00000000..00e6efc1 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform.android.dart @@ -0,0 +1,7 @@ +import 'package:celest_auth/src/platform/auth_platform_impl.vm.dart'; + +final class AuthPlatformAndroid extends AuthPlatformImpl { + AuthPlatformAndroid({ + required super.protocol, + }) : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform.dart b/packages/celest_auth/lib/src/platform/auth_platform.dart new file mode 100644 index 00000000..539c78f5 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform.dart @@ -0,0 +1,19 @@ +import 'package:celest_auth/src/platform/auth_platform_impl.vm.dart' + if (dart.library.js_interop) 'package:celest_auth/src/platform/auth_platform_impl.web.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/auth/auth_protocol.dart'; +import 'package:meta/meta.dart'; + +abstract base class AuthPlatform { + factory AuthPlatform({ + required AuthProtocol protocol, + }) = AuthPlatformImpl; + + @protected + AuthPlatform.base({ + required this.protocol, + }); + + @protected + final AuthProtocol protocol; +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform.darwin.dart b/packages/celest_auth/lib/src/platform/auth_platform.darwin.dart new file mode 100644 index 00000000..00ce36cd --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform.darwin.dart @@ -0,0 +1,7 @@ +import 'package:celest_auth/src/platform/auth_platform_impl.vm.dart'; + +final class AuthPlatformDarwin extends AuthPlatformImpl { + AuthPlatformDarwin({ + required super.protocol, + }) : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform.native.dart b/packages/celest_auth/lib/src/platform/auth_platform.native.dart new file mode 100644 index 00000000..b1259132 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform.native.dart @@ -0,0 +1,100 @@ +import 'dart:io'; + +import 'package:celest_auth/src/platform/auth_platform_impl.vm.dart'; + +final class AuthPlatformNative extends AuthPlatformImpl { + AuthPlatformNative({ + required super.protocol, + }) : super.base(); + + // /// Launches the given URL. + // Future _launchUrl(String url) async { + // final String command; + // if (os.isWindows) { + // command = 'powershell'; + // } else if (os.isLinux) { + // command = 'xdg-open'; + // } else if (os.isMacOS) { + // command = 'open'; + // } else { + // throw UnsupportedError('Unsupported OS: ${os.operatingSystem}'); + // } + + // final arguments = os.isWindows ? ['start-process', '"$url"'] : [url]; + // final couldNotLaunch = '"$command ${arguments.join(' ')}" command failed'; + // try { + // final res = await Process.run( + // command, + // arguments, + // stdoutEncoding: utf8, + // stderrEncoding: utf8, + // ); + // if (res.exitCode != 0) { + // throw UrlLauncherException( + // couldNotLaunch, + // underlyingException: '${res.stdout}\n${res.stderr}', + // ); + // } + // } on Exception catch (e) { + // throw UrlLauncherException( + // couldNotLaunch, + // underlyingException: e, + // ); + // } + // } + + // @override + // Future> startSignIn({ + // required Uri uri, + // String? callbackUrlScheme, + // }) async { + // final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0); + // await _launchUrl(uri.toString()); + // await for (final request in server) { + // final method = request.method; + // if (method != 'GET') { + // await request.respond( + // HttpStatus.methodNotAllowed, + // 'Request must be GET', + // ); + // continue; + // } + // if (request.uri.path != signInRedirectUri.path) { + // await request.respond(HttpStatus.notFound, 'Not found'); + // continue; + // } + // final queryParams = request.uri.queryParameters; + // if ((!queryParams.containsKey('code') && + // !queryParams.containsKey('error')) || + // !queryParams.containsKey('state')) { + // await request.respond( + // HttpStatus.badRequest, + // 'Missing parameter', + // ); + // continue; + // } + // await request.respond( + // HttpStatus.ok, + // _htmlForParams(queryParams, signIn: true), + // headers: { + // 'Content-Type': 'text/html', + // }, + // ); + // return queryParams; + // } + // } +} + +extension on HttpRequest { + Future respond( + int statusCode, + String body, { + Map? headers, + }) async { + response.statusCode = statusCode; + headers?.forEach(response.headers.add); + response.writeln(body); + await response.flush(); + await response.close(); + } +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform.web.dart b/packages/celest_auth/lib/src/platform/auth_platform.web.dart new file mode 100644 index 00000000..45a2f7e8 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform.web.dart @@ -0,0 +1,22 @@ +import 'package:celest_auth/src/platform/auth_platform_impl.web.dart'; +import 'package:path/path.dart'; +import 'package:web/web.dart'; + +final class AuthPlatformWeb extends AuthPlatformImpl { + AuthPlatformWeb({ + required super.protocol, + }) : super.base(); + + String get _baseUrl { + final baseElement = document.querySelector('base') as HTMLBaseElement?; + final basePath = baseElement?.href ?? '/'; + return url.join(window.location.origin, basePath); + } + + Future> startSignIn({ + required Uri uri, + String? callbackUrlScheme, + }) async { + throw UnimplementedError(); + } +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform_impl.vm.dart b/packages/celest_auth/lib/src/platform/auth_platform_impl.vm.dart new file mode 100644 index 00000000..cb1a2fe7 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform_impl.vm.dart @@ -0,0 +1,34 @@ +import 'package:celest_auth/src/platform/auth_platform.android.dart'; +import 'package:celest_auth/src/platform/auth_platform.dart'; +import 'package:celest_auth/src/platform/auth_platform.darwin.dart'; +import 'package:celest_auth/src/platform/auth_platform.native.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/auth/auth_protocol.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/util/globals.dart'; +import 'package:meta/meta.dart'; +import 'package:os_detect/os_detect.dart' as os; + +abstract base class AuthPlatformImpl extends AuthPlatform { + factory AuthPlatformImpl({ + required AuthProtocol protocol, + }) { + if (kIsDartNative) { + return AuthPlatformNative(protocol: protocol); + } + if (os.isIOS || os.isMacOS) { + return AuthPlatformDarwin(protocol: protocol); + } + if (os.isAndroid) { + return AuthPlatformAndroid(protocol: protocol); + } + throw UnsupportedError( + 'The current platform is not supported: ${os.operatingSystem}', + ); + } + + @protected + AuthPlatformImpl.base({ + required super.protocol, + }) : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/auth_platform_impl.web.dart b/packages/celest_auth/lib/src/platform/auth_platform_impl.web.dart new file mode 100644 index 00000000..8ae1da0c --- /dev/null +++ b/packages/celest_auth/lib/src/platform/auth_platform_impl.web.dart @@ -0,0 +1,26 @@ +import 'package:celest_auth/src/platform/auth_platform.dart'; +import 'package:celest_auth/src/platform/auth_platform.web.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/auth/auth_protocol.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/util/globals.dart'; +import 'package:meta/meta.dart'; +import 'package:os_detect/os_detect.dart' as os; + +abstract base class AuthPlatformImpl extends AuthPlatform { + factory AuthPlatformImpl({ + required AuthProtocol protocol, + }) { + if (kIsWeb) { + return AuthPlatformWeb(protocol: protocol); + } + throw UnsupportedError( + 'The current platform is not supported: ${os.operatingSystem}', + ); + } + + @protected + AuthPlatformImpl.base({ + required super.protocol, + }) : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_exception_impl.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_exception_impl.dart new file mode 100644 index 00000000..782c7694 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_exception_impl.dart @@ -0,0 +1,36 @@ +// ignore: implementation_imports +import 'package:celest_core/src/auth/passkeys/passkey_exception.dart'; + +// TODO(dnys1): Make sealed +final class PasskeyExceptionImpl implements PasskeyException { + const PasskeyExceptionImpl({required this.message}); + + @override + final String message; + + @override + String toString() => 'PasskeyException: $message'; +} + +final class PasskeyCancellationException extends PasskeyExceptionImpl { + const PasskeyCancellationException() + : super(message: 'Passkey registration was canceled by the user'); +} + +final class PasskeyUnknownException extends PasskeyExceptionImpl { + const PasskeyUnknownException([String? message]) + : super( + message: message ?? + 'An unknown error occurred during passkey registration', + ); +} + +final class PasskeyUnsupportedException extends PasskeyExceptionImpl { + const PasskeyUnsupportedException() + : super(message: 'Passkeys are not supported on this platform'); +} + +final class PasskeyFailedException extends PasskeyExceptionImpl { + const PasskeyFailedException([String? message]) + : super(message: message ?? 'Passkey registration failed'); +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.android.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.android.dart new file mode 100644 index 00000000..eed903d7 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.android.dart @@ -0,0 +1,182 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:celest_auth/src/native/android/jni_bindings.ffi.dart' + hide Exception; +import 'package:celest_auth/src/native/android/jni_helpers.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform_impl.vm.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; +import 'package:jni/jni.dart'; + +final class PasskeyPlatformAndroid extends PasskeyPlatformImpl { + PasskeyPlatformAndroid() : super.base() { + Jni.initDLApi(); + } + + late final Activity _mainActivity = + Activity.fromRef(Jni.getCurrentActivity()); + late final CelestAuth _celestAuth = CelestAuth(_mainActivity); + CancellationSignal? _cancellationSignal; + + // Throws with java.lang.NoSuchMethodError: no static method + // "Landroidx/credentials/CredentialManager;.create(Landroid/content/Context;)Landroidx/credentials/CredentialManager;" + // late final CredentialManager _credentialManager = + // CredentialManager.create(_mainActivityContext); + + @override + Future get isSupported async { + final callback = Completer(); + final client = Fido.getFido2ApiClient(_mainActivity); + final isAvailable = client.isUserVerifyingPlatformAuthenticatorAvailable(); + final onSuccess = OnSuccessListener.implement( + $OnSuccessListenerImpl( + TResult: isAvailable.TResult, + onSuccess: callback.complete, + ), + ); + final onError = OnFailureListener.implement( + // TODO(dnys1): Convert to PasskeyException + $OnFailureListenerImpl(onFailure: (error) { + callback.completeError(error); + }), + ); + isAvailable + ..addOnSuccessListener(onSuccess) + ..addOnFailureListener(onError); + final result = await callback.future; + return result.booleanValue(); + } + + @override + void cancel() { + _cancellationSignal?.cancel(); + _cancellationSignal = null; + } + + @override + Future register( + PasskeyRegistrationOptions options, + ) async { + final requestJson = jsonEncode(options.toJson()).toJString(); + final responseCallback = Completer(); + _cancellationSignal = _celestAuth.register( + requestJson, + CredentialManagerCallback.implement( + $CredentialManagerCallbackImpl( + R: CreateCredentialResponse.type, + E: CreateCredentialException.type, + onResult: responseCallback.complete, + onError: responseCallback.completeError, + ), + ), + ); + try { + final response = await responseCallback.future; + final passkeyJson = response + .as(CreatePublicKeyCredentialResponse.type) + .getRegistrationResponseJson() + .toDartString(); + return PasskeyCredential.fromJson( + jsonDecode(passkeyJson) as Map, + ); + } on CreateCredentialException catch (e) { + if (e.instanceOf(CreatePublicKeyCredentialDomException.type)) { + // Handle the passkey DOM errors thrown according to the + // WebAuthn spec using e.domError + throw Exception( + 'An error occurred while creating a passkey, please check logs for additional details.', + ); + } + if (e.instanceOf(CreateCredentialCancellationException.type)) { + // The user intentionally canceled the operation and chose not + // to register the credential. + throw Exception( + "The user intentionally canceled the operation and chose not to register the credential. Check logs for additional details."); + } + if (e.instanceOf(CreateCredentialInterruptedException.type)) { + // Retry-able error. Consider retrying the call. + throw Exception( + "The operation was interrupted, please retry the call. Check logs for additional details."); + } + if (e.instanceOf(CreateCredentialProviderConfigurationException.type)) { + // Your app is missing the provider configuration dependency. + // Most likely, you're missing "credentials-play-services-auth". + throw Exception( + "Your app is missing the provider configuration dependency. Check logs for additional details."); + } + if (e.instanceOf(CreateCredentialUnknownException.type)) { + throw Exception( + "An unknown error occurred while creating passkey. Check logs for additional details."); + } + if (e.instanceOf(CreateCredentialCustomException.type)) { + // You have encountered an error from a 3rd-party SDK. If you + // make the API call with a request object that's a subclass of + // CreateCustomCredentialRequest using a 3rd-party SDK, then you + // should check for any custom exception type constants within + // that SDK to match with e.type. Otherwise, drop or log the + // exception. + throw Exception( + "An unknown error occurred from a 3rd party SDK. Check logs for additional details."); + } + throw Exception( + "Unexpected exception type: ${e.getType().toDartString()}", + ); + } + } + + @override + Future authenticate( + PasskeyAuthenticationOptions options, + ) async { + final requestJson = jsonEncode(options.toJson()).toJString(); + // final jRequest = GetCredentialRequest_Builder() + // .addCredentialOption( + // GetPublicKeyCredentialOption.new3(requestJson), + // ) + // .build(); + final responseCallback = Completer(); + _cancellationSignal = _celestAuth.authenticate( + requestJson, + CredentialManagerCallback.implement( + $CredentialManagerCallbackImpl( + R: GetCredentialResponse.type, + E: GetCredentialException.type, + onResult: responseCallback.complete, + onError: responseCallback.completeError, + ), + ), + ); + try { + final response = await responseCallback.future; + final passkeyJson = response + .getCredential() + .as(PublicKeyCredential.type) + .getAuthenticationResponseJson() + .toDartString(); + return PasskeyCredential.fromJson( + jsonDecode(passkeyJson) as Map, + ); + } on GetCredentialException catch (e) { + if (e.instanceOf(GetCredentialCancellationException.type)) { + // The user intentionally canceled the operation and chose not + // to authenticate the credential. + throw Exception( + "The user intentionally canceled the operation and chose not to authenticate the credential. Check logs for additional details."); + } + if (e.instanceOf(NoCredentialException.type)) { + // TODO(dnys1): Handle + } + if (e.instanceOf(GetPublicKeyCredentialDomException.type)) { + final message = e.getMessage().toDartString(); + if (message == 'Failed to decrypt credential.') { + // TODO(dnys1): Sync account not available + } + } + throw Exception( + 'Unexpected exception type: ${e.getType().toDartString()}', + ); + } + } +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.dart new file mode 100644 index 00000000..d1432f29 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.dart @@ -0,0 +1,30 @@ +import 'package:celest_auth/src/platform/passkeys/passkey_platform_impl.vm.dart' + if (dart.library.js_interop) 'package:celest_auth/src/platform/passkeys/passkey_platform_impl.web.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; +import 'package:meta/meta.dart'; + +abstract base class PasskeyPlatform { + factory PasskeyPlatform() = PasskeyPlatformImpl; + + @protected + PasskeyPlatform.base(); + + /// Returns `true` if the platform supports passkeys. + /// + /// If the platform does not support passkeys, the [register] and [authenticate] + /// methods will throw a [PasskeyException]. + Future get isSupported; + + /// Cancels the in-progress passkey operation, if any. + void cancel(); + + /// Registers a new passkey. + Future register( + PasskeyRegistrationOptions options, + ); + + /// Authenticates with an existing passkey. + Future authenticate( + PasskeyAuthenticationOptions options, + ); +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.darwin.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.darwin.dart new file mode 100644 index 00000000..e9b7d975 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.darwin.dart @@ -0,0 +1,120 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi'; + +import 'package:celest_auth/src/native/darwin/celest_auth.ffi.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_exception_impl.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform_impl.vm.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/util/globals.dart'; +import 'package:ffi/ffi.dart'; + +final class PasskeyPlatformDarwin extends PasskeyPlatformImpl { + PasskeyPlatformDarwin() : super.base(); + + late final _platform = CelestAuthDarwin(DynamicLibrary.process()); + late final _celestAuth = CelestAuth.new1(_platform); + + @override + Future get isSupported async { + return kIsFlutter && _celestAuth.isPasskeysSupported; + } + + @override + void cancel() => _celestAuth.cancel(); + + @override + Future register( + PasskeyRegistrationOptions options, + ) async { + final completer = Completer(); + final onSuccess = ObjCBlock_ffiVoid_Uint8.listener(_platform, (json) { + if (json == nullptr) { + return completer.completeError(StateError('Bad ptr')); + } + final response = PasskeyCredential.fromJson( + jsonDecode(json.cast().toDartString()) as Map, + ); + completer.complete(response); + _celestAuth.freePointer_(json); + }); + final onError = ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8.listener( + _platform, + (code, error) { + if (error == nullptr) { + return completer.completeError(StateError('Bad pointer')); + } + final message = error.cast().toDartString(); + final exception = _CelestAuthError(code).toException(message); + completer.completeError(exception); + _celestAuth.freePointer_(error); + }, + ); + _celestAuth.registerWithRequest_onSuccess_onError_( + jsonEncode(options.toJson()).toNSString(_platform), + onSuccess, + onError, + ); + + // Await here so the blocks are not GC'd before they are called. + final response = await completer.future; + return response; + } + + @override + Future authenticate( + PasskeyAuthenticationOptions options, + ) async { + final completer = Completer(); + final onSuccess = ObjCBlock_ffiVoid_Uint8.listener(_platform, (json) { + if (json == nullptr) { + return completer.completeError(StateError('Bad ptr')); + } + final response = PasskeyCredential.fromJson( + jsonDecode(json.cast().toDartString()) as Map, + ); + completer.complete(response); + _celestAuth.freePointer_(json); + }); + final onError = ObjCBlock_ffiVoid_CelestAuthErrorCode_Uint8.listener( + _platform, + (code, error) { + if (error == nullptr) { + return completer.completeError(StateError('Bad pointer')); + } + final message = error.cast().toString(); + final exception = _CelestAuthError(code).toException(message); + completer.completeError(exception); + _celestAuth.freePointer_(error); + }, + ); + _celestAuth.authenticateWithRequest_onSuccess_onError_( + jsonEncode(options.toJson()).toNSString(_platform), + onSuccess, + onError, + ); + + // Await here so the blocks are not GC'd before they are called. + final response = await completer.future; + return response; + } +} + +extension type _CelestAuthError(int code) { + Object toException(String message) { + return switch (code) { + CelestAuthErrorCode.CelestAuthErrorCodeCanceled => + const PasskeyCancellationException(), + CelestAuthErrorCode.CelestAuthErrorCodeUnsupported => + const PasskeyUnsupportedException(), + CelestAuthErrorCode.CelestAuthErrorCodeFailed => + PasskeyFailedException(message), + // This shouldn't happen + CelestAuthErrorCode.CelestAuthErrorCodeSerde => StateError(message), + // This shouldn't happen + CelestAuthErrorCode.CelestAuthErrorCodeNotHandled => StateError(message), + _ => PasskeyUnknownException(message), + }; + } +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.web.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.web.dart new file mode 100644 index 00000000..44e424ce --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform.web.dart @@ -0,0 +1,216 @@ +import 'dart:convert'; +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; +import 'dart:typed_data'; + +import 'package:celest_auth/src/platform/passkeys/passkey_exception_impl.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform_impl.web.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_exception.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart' + hide AuthenticatorSelectionCriteria; +import 'package:web/web.dart' + hide + COSEAlgorithmIdentifier, + AuthenticatorTransport, + AuthenticatorAttachment, + UserVerificationRequirement, + ResidentKeyRequirement; + +final class PasskeyPlatformWeb extends PasskeyPlatformImpl { + PasskeyPlatformWeb() : super.base(); + + AbortController? _abortController; + + @override + Future get isSupported async { + final publicKeyCredential = window.getProperty('PublicKeyCredential'.toJS); + if (!publicKeyCredential.typeofEquals('function')) { + return false; + } + // TODO(dnys1): Check conditional mediation for autofill support. + // https://web.dev/articles/passkey-registration#feature_detection + return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() + .toDart + .then((value) => value.toDart); + } + + @override + void cancel() { + _abortController?.abort('User canceled'.toJS); + _abortController = null; + } + + @override + Future register( + PasskeyRegistrationOptions options, + ) async { + _abortController = AbortController(); + final credential = await window.navigator.credentials + .create( + CredentialCreationOptions( + signal: _abortController!.signal, + publicKey: PublicKeyCredentialCreationOptions( + challenge: options.challenge.buffer.toJS, + pubKeyCredParams: [ + for (final param in options.publicKeyCredentialParameters) + PublicKeyCredentialParameters( + alg: param.algorithm, + type: param.type, + ), + ].toJS, + rp: PublicKeyCredentialRpEntity( + id: options.rpId, + )..name = options.rpName, + user: PublicKeyCredentialUserEntity( + id: utf8.encode(options.userId).buffer.toJS, + displayName: options.userDisplayName, + )..name = options.userName, + attestation: options.attestation, + authenticatorSelection: AuthenticatorSelectionCriteria( + authenticatorAttachment: + options.authenticatorSelection.authenticatorAttachment!, + requireResidentKey: + options.authenticatorSelection.requireResidentKey, + residentKey: options.authenticatorSelection.residentKey!, + userVerification: + options.authenticatorSelection.userVerification, + ), + timeout: options.timeout.inMilliseconds, + ), + ), + ) + .toDart + .onError( + (error, stackTrace) => Error.throwWithStackTrace( + (error as RegistrationError).toPasskeyException(), + stackTrace, + ), + ) as PublicKeyCredential?; + if (credential == null) { + throw const PasskeyExceptionImpl( + message: 'Registration was not completed'); + } + assert(credential.type == 'public-key'); + final response = credential.response as AuthenticatorAttestationResponse; + return PasskeyCredential( + id: credential.id, + rawId: credential.rawId.toDart.asUint8List(), + response: PasskeyRegistrationResponse( + clientDataJson: response.clientDataJSON.toDart.asUint8List(), + attestationObject: response.attestationObject.toDart.asUint8List(), + transports: response.transports, + publicKeyAlgorithm: response.publicKeyAlgorithm, + publicKey: response.publicKey, + authenticatorData: response.authenticatorData, + ), + authenticatorAttachment: + credential.authenticatorAttachment as AuthenticatorAttachment?, + ); + } + + @override + Future authenticate( + PasskeyAuthenticationOptions options, + ) async { + _abortController = AbortController(); + final credential = await window.navigator.credentials + .get( + CredentialRequestOptions( + signal: _abortController!.signal, + publicKey: PublicKeyCredential.parseRequestOptionsFromJSON( + options.toJson().jsify() as PublicKeyCredentialRequestOptionsJSON, + ), + ), + ) + .toDart + .onError( + (error, stackTrace) => Error.throwWithStackTrace( + (error as AuthenticationError).toPasskeyException(), + stackTrace, + ), + ) as PublicKeyCredential?; + if (credential == null) { + throw const PasskeyExceptionImpl( + message: 'Authentication was not completed', + ); + } + assert(credential.type == 'public-key'); + final response = credential.response as AuthenticatorAssertionResponse; + return PasskeyCredential( + id: credential.id, + rawId: credential.rawId.toDart.asUint8List(), + response: PasskeyAuthenticationResponse( + clientDataJson: response.clientDataJSON.toDart.asUint8List(), + authenticatorData: response.authenticatorData.toDart.asUint8List(), + signature: response.signature.toDart.asUint8List(), + userHandle: response.userHandle?.toDart.asUint8List(), + ), + authenticatorAttachment: + credential.authenticatorAttachment as AuthenticatorAttachment?, + ); + } +} + +extension on AuthenticatorAttestationResponse { + List? get transports { + // Continue to play it safe with `getTransports()` for now, even when L3 + // types say it's required + if (!getProperty('getTransports'.toJS).typeofEquals('function')) { + return null; + } + final transports = getTransports(); + return transports.toDart.cast(); + } + + COSEAlgorithmIdentifier? get publicKeyAlgorithm { + // L3 says this is required, but browser and webview support are still + // not guaranteed. + if (!getProperty('getPublicKeyAlgorithm'.toJS).typeofEquals('function')) { + return null; + } + return getPublicKeyAlgorithm() as COSEAlgorithmIdentifier; + } + + Uint8List? get publicKey { + // L3 says this is required, but browser and webview support are still + // not guaranteed. + if (!getProperty('getPublicKey'.toJS).typeofEquals('function')) { + return null; + } + final publicKey = getPublicKey(); + return publicKey?.toDart.asUint8List(); + } + + Uint8List? get authenticatorData { + // L3 says this is required, but browser and webview support are still + // not guaranteed. + if (!getProperty('getAuthenticatorData'.toJS).typeofEquals('function')) { + return null; + } + final authenticatorData = getAuthenticatorData(); + return authenticatorData.toDart.asUint8List(); + } +} + +@JS('Error') +extension type JSError._(JSObject e) implements JSObject { + external String get message; + external String get name; + external String get stack; +} + +extension type RegistrationError._(JSError _) implements JSError { + // TODO(dnys1): Cover all cases + // https://github.com/MasterKale/SimpleWebAuthn/blob/634ceabdb05f4b5e56132fff7c57598caa2401a8/packages/browser/src/helpers/identifyRegistrationError.ts#L7 + PasskeyException toPasskeyException() { + return PasskeyExceptionImpl(message: '$name: $message'); + } +} + +extension type AuthenticationError._(JSError _) implements JSError { + // TODO(dnys1): Cover all cases + // https://github.com/MasterKale/SimpleWebAuthn/blob/634ceabdb05f4b5e56132fff7c57598caa2401a8/packages/browser/src/helpers/identifyAuthenticationError.ts#L7 + PasskeyException toPasskeyException() { + return PasskeyExceptionImpl(message: '$name: $message'); + } +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.vm.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.vm.dart new file mode 100644 index 00000000..de10c065 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.vm.dart @@ -0,0 +1,22 @@ +import 'package:celest_auth/src/platform/passkeys/passkey_platform.android.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform.darwin.dart'; +import 'package:meta/meta.dart'; +import 'package:os_detect/os_detect.dart' as os; + +abstract base class PasskeyPlatformImpl extends PasskeyPlatform { + factory PasskeyPlatformImpl() { + if (os.isIOS || os.isMacOS) { + return PasskeyPlatformDarwin(); + } + if (os.isAndroid) { + return PasskeyPlatformAndroid(); + } + throw UnsupportedError( + 'The current platform is not supported: ${os.operatingSystem}', + ); + } + + @protected + PasskeyPlatformImpl.base() : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.web.dart b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.web.dart new file mode 100644 index 00000000..9a946fa3 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/passkeys/passkey_platform_impl.web.dart @@ -0,0 +1,20 @@ +import 'package:celest_auth/src/platform/passkeys/passkey_platform.dart'; +import 'package:celest_auth/src/platform/passkeys/passkey_platform.web.dart'; +// ignore: implementation_imports +import 'package:celest_core/src/util/globals.dart'; +import 'package:meta/meta.dart'; +import 'package:os_detect/os_detect.dart' as os; + +abstract base class PasskeyPlatformImpl extends PasskeyPlatform { + factory PasskeyPlatformImpl() { + if (kIsWeb) { + return PasskeyPlatformWeb(); + } + throw UnsupportedError( + 'The current platform is not supported: ${os.operatingSystem}', + ); + } + + @protected + PasskeyPlatformImpl.base() : super.base(); +} diff --git a/packages/celest_auth/lib/src/platform/social/oauth_parameters.dart b/packages/celest_auth/lib/src/platform/social/oauth_parameters.dart new file mode 100644 index 00000000..56152ef9 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/social/oauth_parameters.dart @@ -0,0 +1,278 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +library amplify_auth_cognito.hostedui.oauth_parameters; + +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:built_value/standard_json_plugin.dart'; + +part 'oauth_parameters.g.dart'; + +/// Error codes of a failed OAuth flow. +/// +/// References: +/// - [OAuth 2.0 Error Codes](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1) +/// - [OIDC Error Codes](https://openid.net/specs/openid-connect-core-1_0.html#AuthError) +class OAuthErrorCode extends EnumClass { + const OAuthErrorCode._(super.name); + + /// The request is missing a required parameter, includes an invalid parameter + /// value, includes a parameter more than once, or is otherwise malformed. + @BuiltValueEnumConst(wireName: 'invalid_request') + static const OAuthErrorCode invalidRequest = _$invalidRequest; + + /// The client is not authorized to request an authorization code using this + /// method. + @BuiltValueEnumConst(wireName: 'unauthorized_client') + static const OAuthErrorCode unauthorizedClient = _$unauthorizedClient; + + /// The resource owner or authorization server denied the request. + @BuiltValueEnumConst(wireName: 'access_denied') + static const OAuthErrorCode accessDenied = _$accessDenied; + + /// The authorization server does not support obtaining an authorization code + /// using this method. + @BuiltValueEnumConst(wireName: 'unsupported_response_type') + static const OAuthErrorCode unsupportedResponseType = + _$unsupportedResponseType; + + /// The requested scope is invalid, unknown, or malformed. + @BuiltValueEnumConst(wireName: 'invalid_scope') + static const OAuthErrorCode invalidScope = _$invalidScope; + + /// The authorization server encountered an unexpected condition that + /// prevented it from fulfilling the request. + /// + /// (This error code is needed because a 500 Internal Server Error HTTP status + /// code cannot be returned to the client via an HTTP redirect.) + @BuiltValueEnumConst(wireName: 'server_error') + static const OAuthErrorCode serverError = _$serverError; + + /// The authorization server is currently unable to handle the request due to + /// a temporary overloading or maintenance of the server. + /// + /// (This error code is needed because a 503 Service Unavailable HTTP status + /// code cannot be returned to the client via an HTTP redirect.) + @BuiltValueEnumConst(wireName: 'temporarily_unavailable') + static const OAuthErrorCode temporarilyUnavailable = _$temporarilyUnavailable; + + /// The Authorization Server requires End-User interaction of some form to + /// proceed. + /// + /// This error MAY be returned when the `prompt` parameter value in the + /// Authentication Request is `none`, but the Authentication Request cannot be + /// completed without displaying a user interface for End-User interaction. + @BuiltValueEnumConst(wireName: 'interaction_required') + static const OAuthErrorCode interactionRequired = _$interactionRequired; + + /// The Authorization Server requires End-User authentication. + /// + /// This error MAY be returned when the `prompt` parameter value in the + /// Authentication Request is `none`, but the Authentication Request cannot be + /// completed without displaying a user interface for End-User authentication. + @BuiltValueEnumConst(wireName: 'login_required') + static const OAuthErrorCode loginRequired = _$loginRequired; + + /// The End-User is REQUIRED to select a session at the Authorization Server. + /// + /// The End-User MAY be authenticated at the Authorization Server with + /// different associated accounts, but the End-User did not select a session. + /// This error MAY be returned when the `prompt` parameter value in the + /// Authentication Request is `none`, but the Authentication Request cannot be + /// completed without displaying a user interface to prompt for a session to + /// use. + @BuiltValueEnumConst(wireName: 'account_selection_required') + static const OAuthErrorCode accountSelectionRequired = + _$accountSelectionRequired; + + /// The Authorization Server requires End-User consent. + /// + /// This error MAY be returned when the `prompt` parameter value in the + /// Authentication Request is `none`, but the Authentication Request cannot be + /// completed without displaying a user interface for End-User consent. + @BuiltValueEnumConst(wireName: 'consent_required') + static const OAuthErrorCode consentRequired = _$consentRequired; + + /// The `request_uri` in the Authorization Request returns an error or + /// contains invalid data. + @BuiltValueEnumConst(wireName: 'invalid_request_uri') + static const OAuthErrorCode invalidRequestUri = _$invalidRequestUri; + + /// The `request` parameter contains an invalid Request Object. + @BuiltValueEnumConst(wireName: 'invalid_request_object') + static const OAuthErrorCode invalidRequestObject = _$invalidRequestObject; + + /// The OP does not support use of the `request` parameter defined in + /// [Section 6](https://openid.net/specs/openid-connect-core-1_0.html#JWTRequests). + @BuiltValueEnumConst(wireName: 'request_not_supported') + static const OAuthErrorCode requestNotSupported = _$requestNotSupported; + + /// The OP does not support use of the `request_uri` parameter defined in + /// [Section 6](https://openid.net/specs/openid-connect-core-1_0.html#JWTRequests). + @BuiltValueEnumConst(wireName: 'request_uri_not_supported') + static const OAuthErrorCode requestUriNotSupported = _$requestUriNotSupported; + + /// The OP does not support use of the `registration` parameter defined in + /// [Section 7.2.1](https://openid.net/specs/openid-connect-core-1_0.html#RegistrationParameter). + @BuiltValueEnumConst(wireName: 'registration_uri_not_supported') + static const OAuthErrorCode registrationUriNotSupported = + _$registrationUriNotSupported; + + /// The user-facing description of the error. + String get description { + switch (this) { + case OAuthErrorCode.accessDenied: + return 'The resource owner or authorization server denied the request.'; + case OAuthErrorCode.invalidRequest: + return 'The request is missing a required parameter, includes an ' + 'invalid parameter value, includes a parameter more than once, or ' + 'is otherwise malformed.'; + case OAuthErrorCode.invalidScope: + return 'The requested scope is invalid, unknown, or malformed.'; + case OAuthErrorCode.serverError: + return 'The authorization server encountered an unexpected condition ' + 'that prevented it from fulfilling the request.'; + case OAuthErrorCode.temporarilyUnavailable: + return 'The authorization server is currently unable to handle the ' + 'request due to a temporary overloading or maintenance of the ' + 'server.'; + case OAuthErrorCode.unauthorizedClient: + return 'The client is not authorized to request an authorization code ' + 'using this method.'; + case OAuthErrorCode.unsupportedResponseType: + return 'The authorization server does not support obtaining an ' + 'authorization code using this method.'; + case OAuthErrorCode.accountSelectionRequired: + case OAuthErrorCode.consentRequired: + case OAuthErrorCode.interactionRequired: + case OAuthErrorCode.invalidRequestObject: + case OAuthErrorCode.invalidRequestUri: + case OAuthErrorCode.loginRequired: + case OAuthErrorCode.registrationUriNotSupported: + case OAuthErrorCode.requestNotSupported: + case OAuthErrorCode.requestUriNotSupported: + return 'An unknown error occurred.'; + } + throw ArgumentError('Invalid code: $this'); + } + + /// All [OAuthErrorCode] values. + static BuiltSet get values => _$values; + + /// The [OAuthErrorCode] value for [name]. + static OAuthErrorCode valueOf(String name) => _$valueOf(name); + + /// The [OAuthErrorCode] serializer. + static Serializer get serializer => + _$oAuthErrorCodeSerializer; +} + +/// {@template amplify_auth_cognito.oauth_parameters} +/// Query parameters of the OAuth redirect. +/// +/// [Reference](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2) +/// {@endtemplate} +abstract class OAuthParameters + implements Built { + /// {@macro amplify_auth_cognito.oauth_parameters} + factory OAuthParameters([void Function(OAuthParametersBuilder) updates]) = + _$OAuthParameters; + OAuthParameters._(); + + /// Parses [json] into an [OAuthParameters] object. + factory OAuthParameters.fromJson(Map json) { + json = json.map((key, value) { + return MapEntry( + key, + // On some platforms, these are still encoded at this point. + value is String ? Uri.decodeQueryComponent(value) : '', + ); + }); + return _serializers.deserializeWith(serializer, json)!; + } + + /// Parses OAuth parameters from a [uri]. + static OAuthParameters? fromUri(Uri uri) { + final parameters = {...uri.queryParameters}; + + // Handle fragment as well e.g. /#/auth?code=...&state=... + final fragment = uri.fragment; + final parts = fragment.split('?'); + if (parts.length == 2) { + parameters.addAll(Uri.splitQueryString(parts[1])); + } + + // Only a redirect if it contains this combination of parameters. + // https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2 + // https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3 + if (parameters.containsKey('state') && + (parameters.containsKey('code') || parameters.containsKey('error'))) { + return OAuthParameters.fromJson(parameters); + } + return null; + } + + @BuiltValueHook(finalizeBuilder: true) + static void _finalize(OAuthParametersBuilder b) { + if ((b.code == null && b.error == null) || b.state == null) { + throw Exception('Invalid OAuth response'); + } + } + + /// The exact state parameter received from the client. + /// + /// Required for all responses. + String get state; + + /// REQUIRED. The authorization code generated by the authorization server. + /// + /// The authorization code MUST expire shortly after it is issued to mitigate + /// the risk of leaks. A maximum authorization code lifetime of 10 minutes is + /// RECOMMENDED. The client MUST NOT use the authorization code more than + /// once. If an authorization code is used more than once, the authorization + /// server MUST deny the request and SHOULD revoke (when possible) all tokens + /// previously issued based on that authorization code. The authorization code + /// is bound to the client identifier and redirection URI. + String? get code; + + /// The error parameter. + /// + /// **Required** for error responses. + /// + /// [Reference](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1) + OAuthErrorCode? get error; + + /// The error_description parameter. + /// + /// **Optional** for error responses. + /// + /// [Reference](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1) + @BuiltValueField(wireName: 'error_description') + String? get errorDescription; + + /// The error_uri parameter. + /// + /// **Optional** for error responses. + /// + /// [Reference](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1) + @BuiltValueField(wireName: 'error_uri') + String? get errorUri; + + /// The [OAuthParameters] serializer. + static Serializer get serializer => + _$oAuthParametersSerializer; + + /// The JSON representation of `this`. + Map toJson() => + (_serializers.serializeWith(serializer, this) as Map).cast(); +} + +/// Serializers for OAuth flow parameters. +@SerializersFor([ + OAuthErrorCode, + OAuthParameters, +]) +final Serializers _serializers = + (_$_serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build(); diff --git a/packages/celest_auth/lib/src/platform/social/oauth_parameters.g.dart b/packages/celest_auth/lib/src/platform/social/oauth_parameters.g.dart new file mode 100644 index 00000000..00e49467 --- /dev/null +++ b/packages/celest_auth/lib/src/platform/social/oauth_parameters.g.dart @@ -0,0 +1,385 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'oauth_parameters.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +const OAuthErrorCode _$invalidRequest = + const OAuthErrorCode._('invalidRequest'); +const OAuthErrorCode _$unauthorizedClient = + const OAuthErrorCode._('unauthorizedClient'); +const OAuthErrorCode _$accessDenied = const OAuthErrorCode._('accessDenied'); +const OAuthErrorCode _$unsupportedResponseType = + const OAuthErrorCode._('unsupportedResponseType'); +const OAuthErrorCode _$invalidScope = const OAuthErrorCode._('invalidScope'); +const OAuthErrorCode _$serverError = const OAuthErrorCode._('serverError'); +const OAuthErrorCode _$temporarilyUnavailable = + const OAuthErrorCode._('temporarilyUnavailable'); +const OAuthErrorCode _$interactionRequired = + const OAuthErrorCode._('interactionRequired'); +const OAuthErrorCode _$loginRequired = const OAuthErrorCode._('loginRequired'); +const OAuthErrorCode _$accountSelectionRequired = + const OAuthErrorCode._('accountSelectionRequired'); +const OAuthErrorCode _$consentRequired = + const OAuthErrorCode._('consentRequired'); +const OAuthErrorCode _$invalidRequestUri = + const OAuthErrorCode._('invalidRequestUri'); +const OAuthErrorCode _$invalidRequestObject = + const OAuthErrorCode._('invalidRequestObject'); +const OAuthErrorCode _$requestNotSupported = + const OAuthErrorCode._('requestNotSupported'); +const OAuthErrorCode _$requestUriNotSupported = + const OAuthErrorCode._('requestUriNotSupported'); +const OAuthErrorCode _$registrationUriNotSupported = + const OAuthErrorCode._('registrationUriNotSupported'); + +OAuthErrorCode _$valueOf(String name) { + switch (name) { + case 'invalidRequest': + return _$invalidRequest; + case 'unauthorizedClient': + return _$unauthorizedClient; + case 'accessDenied': + return _$accessDenied; + case 'unsupportedResponseType': + return _$unsupportedResponseType; + case 'invalidScope': + return _$invalidScope; + case 'serverError': + return _$serverError; + case 'temporarilyUnavailable': + return _$temporarilyUnavailable; + case 'interactionRequired': + return _$interactionRequired; + case 'loginRequired': + return _$loginRequired; + case 'accountSelectionRequired': + return _$accountSelectionRequired; + case 'consentRequired': + return _$consentRequired; + case 'invalidRequestUri': + return _$invalidRequestUri; + case 'invalidRequestObject': + return _$invalidRequestObject; + case 'requestNotSupported': + return _$requestNotSupported; + case 'requestUriNotSupported': + return _$requestUriNotSupported; + case 'registrationUriNotSupported': + return _$registrationUriNotSupported; + default: + throw new ArgumentError(name); + } +} + +final BuiltSet _$values = + new BuiltSet(const [ + _$invalidRequest, + _$unauthorizedClient, + _$accessDenied, + _$unsupportedResponseType, + _$invalidScope, + _$serverError, + _$temporarilyUnavailable, + _$interactionRequired, + _$loginRequired, + _$accountSelectionRequired, + _$consentRequired, + _$invalidRequestUri, + _$invalidRequestObject, + _$requestNotSupported, + _$requestUriNotSupported, + _$registrationUriNotSupported, +]); + +Serializers _$_serializers = (new Serializers().toBuilder() + ..add(OAuthErrorCode.serializer) + ..add(OAuthParameters.serializer)) + .build(); +Serializer _$oAuthErrorCodeSerializer = + new _$OAuthErrorCodeSerializer(); +Serializer _$oAuthParametersSerializer = + new _$OAuthParametersSerializer(); + +class _$OAuthErrorCodeSerializer + implements PrimitiveSerializer { + static const Map _toWire = const { + 'invalidRequest': 'invalid_request', + 'unauthorizedClient': 'unauthorized_client', + 'accessDenied': 'access_denied', + 'unsupportedResponseType': 'unsupported_response_type', + 'invalidScope': 'invalid_scope', + 'serverError': 'server_error', + 'temporarilyUnavailable': 'temporarily_unavailable', + 'interactionRequired': 'interaction_required', + 'loginRequired': 'login_required', + 'accountSelectionRequired': 'account_selection_required', + 'consentRequired': 'consent_required', + 'invalidRequestUri': 'invalid_request_uri', + 'invalidRequestObject': 'invalid_request_object', + 'requestNotSupported': 'request_not_supported', + 'requestUriNotSupported': 'request_uri_not_supported', + 'registrationUriNotSupported': 'registration_uri_not_supported', + }; + static const Map _fromWire = const { + 'invalid_request': 'invalidRequest', + 'unauthorized_client': 'unauthorizedClient', + 'access_denied': 'accessDenied', + 'unsupported_response_type': 'unsupportedResponseType', + 'invalid_scope': 'invalidScope', + 'server_error': 'serverError', + 'temporarily_unavailable': 'temporarilyUnavailable', + 'interaction_required': 'interactionRequired', + 'login_required': 'loginRequired', + 'account_selection_required': 'accountSelectionRequired', + 'consent_required': 'consentRequired', + 'invalid_request_uri': 'invalidRequestUri', + 'invalid_request_object': 'invalidRequestObject', + 'request_not_supported': 'requestNotSupported', + 'request_uri_not_supported': 'requestUriNotSupported', + 'registration_uri_not_supported': 'registrationUriNotSupported', + }; + + @override + final Iterable types = const [OAuthErrorCode]; + @override + final String wireName = 'OAuthErrorCode'; + + @override + Object serialize(Serializers serializers, OAuthErrorCode object, + {FullType specifiedType = FullType.unspecified}) => + _toWire[object.name] ?? object.name; + + @override + OAuthErrorCode deserialize(Serializers serializers, Object serialized, + {FullType specifiedType = FullType.unspecified}) => + OAuthErrorCode.valueOf( + _fromWire[serialized] ?? (serialized is String ? serialized : '')); +} + +class _$OAuthParametersSerializer + implements StructuredSerializer { + @override + final Iterable types = const [OAuthParameters, _$OAuthParameters]; + @override + final String wireName = 'OAuthParameters'; + + @override + Iterable serialize(Serializers serializers, OAuthParameters object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'state', + serializers.serialize(object.state, + specifiedType: const FullType(String)), + ]; + Object? value; + value = object.code; + if (value != null) { + result + ..add('code') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + value = object.error; + if (value != null) { + result + ..add('error') + ..add(serializers.serialize(value, + specifiedType: const FullType(OAuthErrorCode))); + } + value = object.errorDescription; + if (value != null) { + result + ..add('error_description') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + value = object.errorUri; + if (value != null) { + result + ..add('error_uri') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + return result; + } + + @override + OAuthParameters deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new OAuthParametersBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current! as String; + iterator.moveNext(); + final Object? value = iterator.current; + switch (key) { + case 'state': + result.state = serializers.deserialize(value, + specifiedType: const FullType(String))! as String; + break; + case 'code': + result.code = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + case 'error': + result.error = serializers.deserialize(value, + specifiedType: const FullType(OAuthErrorCode)) as OAuthErrorCode?; + break; + case 'error_description': + result.errorDescription = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + case 'error_uri': + result.errorUri = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + } + } + + return result.build(); + } +} + +class _$OAuthParameters extends OAuthParameters { + @override + final String state; + @override + final String? code; + @override + final OAuthErrorCode? error; + @override + final String? errorDescription; + @override + final String? errorUri; + + factory _$OAuthParameters([void Function(OAuthParametersBuilder)? updates]) => + (new OAuthParametersBuilder()..update(updates))._build(); + + _$OAuthParameters._( + {required this.state, + this.code, + this.error, + this.errorDescription, + this.errorUri}) + : super._() { + BuiltValueNullFieldError.checkNotNull(state, r'OAuthParameters', 'state'); + } + + @override + OAuthParameters rebuild(void Function(OAuthParametersBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + OAuthParametersBuilder toBuilder() => + new OAuthParametersBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is OAuthParameters && + state == other.state && + code == other.code && + error == other.error && + errorDescription == other.errorDescription && + errorUri == other.errorUri; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, state.hashCode); + _$hash = $jc(_$hash, code.hashCode); + _$hash = $jc(_$hash, error.hashCode); + _$hash = $jc(_$hash, errorDescription.hashCode); + _$hash = $jc(_$hash, errorUri.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } + + @override + String toString() { + return (newBuiltValueToStringHelper(r'OAuthParameters') + ..add('state', state) + ..add('code', code) + ..add('error', error) + ..add('errorDescription', errorDescription) + ..add('errorUri', errorUri)) + .toString(); + } +} + +class OAuthParametersBuilder + implements Builder { + _$OAuthParameters? _$v; + + String? _state; + String? get state => _$this._state; + set state(String? state) => _$this._state = state; + + String? _code; + String? get code => _$this._code; + set code(String? code) => _$this._code = code; + + OAuthErrorCode? _error; + OAuthErrorCode? get error => _$this._error; + set error(OAuthErrorCode? error) => _$this._error = error; + + String? _errorDescription; + String? get errorDescription => _$this._errorDescription; + set errorDescription(String? errorDescription) => + _$this._errorDescription = errorDescription; + + String? _errorUri; + String? get errorUri => _$this._errorUri; + set errorUri(String? errorUri) => _$this._errorUri = errorUri; + + OAuthParametersBuilder(); + + OAuthParametersBuilder get _$this { + final $v = _$v; + if ($v != null) { + _state = $v.state; + _code = $v.code; + _error = $v.error; + _errorDescription = $v.errorDescription; + _errorUri = $v.errorUri; + _$v = null; + } + return this; + } + + @override + void replace(OAuthParameters other) { + ArgumentError.checkNotNull(other, 'other'); + _$v = other as _$OAuthParameters; + } + + @override + void update(void Function(OAuthParametersBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + OAuthParameters build() => _build(); + + _$OAuthParameters _build() { + OAuthParameters._finalize(this); + final _$result = _$v ?? + new _$OAuthParameters._( + state: BuiltValueNullFieldError.checkNotNull( + state, r'OAuthParameters', 'state'), + code: code, + error: error, + errorDescription: errorDescription, + errorUri: errorUri); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/celest_auth/lib/src/state/auth_state.dart b/packages/celest_auth/lib/src/state/auth_state.dart new file mode 100644 index 00000000..0b6548e0 --- /dev/null +++ b/packages/celest_auth/lib/src/state/auth_state.dart @@ -0,0 +1,36 @@ +import 'package:celest_core/celest_core.dart'; + +sealed class AuthState { + const AuthState(); +} + +final class Unauthenticated extends AuthState { + const Unauthenticated(); +} + +sealed class AuthFlowInProgress extends AuthState { + const AuthFlowInProgress(); + + void cancel(); +} + +abstract class EmailNeedsVerification extends AuthFlowInProgress { + const EmailNeedsVerification({ + required this.email, + }); + + final String email; + + Future resend(); + Future verifyOtp(String otp); +} + +final class AuthenticatedWithEmail extends Authenticated { + const AuthenticatedWithEmail(super.user); +} + +final class Authenticated extends AuthState { + const Authenticated(this.user); + + final User user; +} diff --git a/packages/celest_auth/pubspec.yaml b/packages/celest_auth/pubspec.yaml new file mode 100644 index 00000000..52cc6fc5 --- /dev/null +++ b/packages/celest_auth/pubspec.yaml @@ -0,0 +1,61 @@ +name: celest_auth +description: The Auth runtime and client library for Celest, the Flutter cloud platform. +version: 0.3.0 +homepage: https://celest.dev +repository: https://github.com/celest-dev/celest/tree/main/packages/celest_auth + +environment: + sdk: ^3.3.0 + +platforms: + web: + macos: + ios: + android: + +dependencies: + async: ^2.11.0 + built_collection: ^5.1.1 + built_value: ^8.9.1 + cedar: ^0.1.0 + celest_core: ^0.2.0 + chunked_stream: ^1.4.2 + corks: ^0.1.0 + ffi: ^2.1.2 + http: ^1.2.1 + jni: ^0.7.2 + logging: ^1.2.0 + meta: ^1.9.0 + os_detect: ^2.0.1 + path: ^1.9.0 + shelf: ^1.4.1 + shelf_router: ^1.1.4 + state_notifier: ^1.0.0 + stream_transform: ^2.1.0 + web: ^0.5.0 + +dev_dependencies: + build_runner: ^2.4.8 + built_value_generator: ^8.9.1 + checks: ^0.3.0 + # TODO(dnys1): Use ^12.0.0 when released + # Needed to support global fields. + ffigen: + git: + url: https://github.com/dart-lang/native + path: pkgs/ffigen + jnigen: ^0.7.0 + lints: ^3.0.0 + test: ^1.25.1 + +flutter: + plugin: + platforms: + android: + ffiPlugin: true + ios: + ffiPlugin: true + sharedDarwinSource: true + macos: + ffiPlugin: true + sharedDarwinSource: true diff --git a/packages/celest_auth/tool/ffigen.sh b/packages/celest_auth/tool/ffigen.sh new file mode 100755 index 00000000..b738896c --- /dev/null +++ b/packages/celest_auth/tool/ffigen.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -euo pipefail + +FOUNDATION_SYMBOLS=lib/src/native/darwin/foundation.yaml +FOUNDATION_URI=package:celest_auth/src/native/darwin/foundation.ffi.dart + +echo "Building example app..." +pushd example +flutter pub get +flutter build apk +flutter build macos +popd + +echo "Generating FFI bindings..." +dart run ffigen --config=ffigen.foundation.yaml +echo "Removing 'instancetype' from FFI bindings..." +yq -i "del(.files.\"${FOUNDATION_URI}\".symbols.\"c:@T@instancetype\")" ${FOUNDATION_SYMBOLS} +dart run ffigen --config=ffigen.darwin.yaml + +echo "Generating JNI bindings..." +dart run jnigen --config=jnigen.yaml diff --git a/packages/celest_core/lib/_internal.dart b/packages/celest_core/lib/_internal.dart new file mode 100644 index 00000000..40a02139 --- /dev/null +++ b/packages/celest_core/lib/_internal.dart @@ -0,0 +1,6 @@ +export 'src/base/celest_base.dart'; +export 'src/http/celest_http_client.dart'; +export 'src/storage/local/local_storage.dart'; +export 'src/storage/memory_storage.dart'; +export 'src/storage/secure/secure_storage.dart'; +export 'src/storage/storage.dart'; diff --git a/packages/celest_core/lib/celest_core.dart b/packages/celest_core/lib/celest_core.dart index cb69a98f..08c55a9b 100644 --- a/packages/celest_core/lib/celest_core.dart +++ b/packages/celest_core/lib/celest_core.dart @@ -1,6 +1,10 @@ /// Celest code shared between the client and the cloud. library; +/// Auth +export 'src/auth/auth_exception.dart'; +export 'src/auth/user.dart'; + /// Exceptions export 'src/exception/celest_exception.dart'; export 'src/exception/cloud_exception.dart'; diff --git a/packages/celest_core/lib/src/auth/auth_client.dart b/packages/celest_core/lib/src/auth/auth_client.dart new file mode 100644 index 00000000..31d8081f --- /dev/null +++ b/packages/celest_core/lib/src/auth/auth_client.dart @@ -0,0 +1,94 @@ +import 'package:celest_core/_internal.dart'; +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/auth/auth_protocol.dart'; +import 'package:celest_core/src/auth/otp/otp_types.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; +import 'package:celest_core/src/base/base_protocol.dart'; + +final class AuthClient with BaseProtocol implements AuthProtocol { + AuthClient(this.celest); + + @override + final CelestBase celest; + + @override + Future userInfo() async { + final response = await getJson('/_auth/userinfo'); + return User.fromJson(response); + } + + @override + late final PasskeyClient passkeys = PasskeyClient(celest); + + @override + late final EmailClient email = EmailClient(celest); +} + +final class PasskeyClient with BaseProtocol implements PasskeyProtocol { + PasskeyClient(this.celest); + + @override + final CelestBase celest; + + @override + Future authenticate({ + required PasskeyRequest request, + }) async { + final response = await postJson( + '/_auth/passkeys/authenticate', + request.toJson(), + ); + return PasskeyOptions.fromJson(response); + } + + @override + Future verify({ + required PasskeyCredential credential, + }) async { + final response = await postJson( + '/_auth/passkeys/verify', + credential.toJson(), + ); + return AuthenticatedUser.fromJson(response); + } +} + +final class EmailClient with BaseProtocol implements EmailProtocol { + EmailClient(this.celest); + + @override + final CelestBase celest; + + @override + Future sendOtp({ + required OtpSendRequest request, + }) async { + final response = await postJson( + '/_auth/email/otp/send', + request.toJson(), + ); + return OtpParameters.fromJson(response); + } + + @override + Future resendOtp({ + required OtpSendRequest request, + }) async { + final response = await postJson( + '/_auth/email/otp/resend', + request.toJson(), + ); + return OtpParameters.fromJson(response); + } + + @override + Future verifyOtp({ + required OtpVerifyRequest verification, + }) async { + final resp = await postJson( + '/_auth/email/otp/verify', + verification.toJson(), + ); + return AuthenticatedUser.fromJson(resp); + } +} diff --git a/packages/celest_core/lib/src/auth/auth_exception.dart b/packages/celest_core/lib/src/auth/auth_exception.dart new file mode 100644 index 00000000..ed69755b --- /dev/null +++ b/packages/celest_core/lib/src/auth/auth_exception.dart @@ -0,0 +1,3 @@ +import 'package:celest_core/celest_core.dart'; + +abstract interface class AuthException implements CelestException {} diff --git a/packages/celest_core/lib/src/auth/auth_protocol.dart b/packages/celest_core/lib/src/auth/auth_protocol.dart new file mode 100644 index 00000000..e4519f97 --- /dev/null +++ b/packages/celest_core/lib/src/auth/auth_protocol.dart @@ -0,0 +1,36 @@ +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/auth/otp/otp_types.dart'; +import 'package:celest_core/src/auth/passkeys/passkey_types.dart'; + +abstract interface class AuthProtocol { + PasskeyProtocol get passkeys; + EmailProtocol get email; + + Future userInfo(); +} + +abstract interface class PasskeyProtocol { + /// Starts a new passkey authentication session. + Future authenticate({ + required PasskeyRequest request, + }); + + /// Verifies the credential and returns the authenticated user. + Future verify({ + required PasskeyCredential credential, + }); +} + +abstract interface class EmailProtocol { + Future sendOtp({ + required OtpSendRequest request, + }); + + Future resendOtp({ + required OtpSendRequest request, + }); + + Future verifyOtp({ + required OtpVerifyRequest verification, + }); +} diff --git a/packages/celest_core/lib/src/auth/otp/otp_types.dart b/packages/celest_core/lib/src/auth/otp/otp_types.dart new file mode 100644 index 00000000..ddefea8e --- /dev/null +++ b/packages/celest_core/lib/src/auth/otp/otp_types.dart @@ -0,0 +1,80 @@ +final class OtpSendRequest { + const OtpSendRequest({ + required this.email, + }); + + factory OtpSendRequest.fromJson(Map json) { + return OtpSendRequest( + email: json['email'] as String, + ); + } + + final String email; + + Map toJson() => { + 'email': email, + }; + + @override + String toString() { + return 'OtpSendRequest(email: $email)'; + } +} + +final class OtpVerifyRequest { + const OtpVerifyRequest({ + required this.email, + required this.otp, + }); + + factory OtpVerifyRequest.fromJson(Map json) { + return OtpVerifyRequest( + email: json['email'] as String, + otp: json['otp'] as String, + ); + } + + final String email; + final String otp; + + Map toJson() => { + 'email': email, + 'otp': otp, + }; + + @override + String toString() { + return 'OtpVerifyRequest(email: $email, otp: $otp)'; + } +} + +final class OtpParameters { + const OtpParameters({ + required this.nextResend, + required this.nextVerify, + }); + + factory OtpParameters.fromJson(Map json) { + return OtpParameters( + nextResend: DateTime.fromMillisecondsSinceEpoch( + json['nextRetry'] as int, + ), + nextVerify: DateTime.fromMillisecondsSinceEpoch( + json['nextVerify'] as int, + ), + ); + } + + final DateTime nextResend; + final DateTime nextVerify; + + Map toJson() => { + 'nextRetry': nextResend.millisecondsSinceEpoch, + 'nextVerify': nextVerify.millisecondsSinceEpoch, + }; + + @override + String toString() { + return 'OtpParameters(nextRetry: $nextResend, nextVerify: $nextVerify)'; + } +} diff --git a/packages/celest_core/lib/src/auth/passkeys/passkey_exception.dart b/packages/celest_core/lib/src/auth/passkeys/passkey_exception.dart new file mode 100644 index 00000000..2383cd40 --- /dev/null +++ b/packages/celest_core/lib/src/auth/passkeys/passkey_exception.dart @@ -0,0 +1,3 @@ +import 'package:celest_core/celest_core.dart'; + +abstract interface class PasskeyException implements AuthException {} diff --git a/packages/celest_core/lib/src/auth/passkeys/passkey_types.dart b/packages/celest_core/lib/src/auth/passkeys/passkey_types.dart new file mode 100644 index 00000000..02a0a801 --- /dev/null +++ b/packages/celest_core/lib/src/auth/passkeys/passkey_types.dart @@ -0,0 +1,857 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:celest_core/src/util/base64_raw_url.dart'; + +/// A simple test to determine if a hostname is a properly-formatted domain name +/// +/// A "valid domain" is defined here: https://url.spec.whatwg.org/#valid-domain +bool _isValidDomain(String hostname) { + return hostname == 'localhost' || _validDomain.hasMatch(hostname); +} + +/// From: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html +final _validDomain = RegExp(r'^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$'); + +enum PasskeyRequestType { register, authenticate } + +final class PasskeyRequest { + const PasskeyRequest({ + required this.username, + String? displayName, + this.authenticatorSelection, + }) : displayName = displayName ?? ''; + + factory PasskeyRequest.fromJson(Map json) { + if (json + case { + 'username': final String username, + }) { + return PasskeyRequest( + username: username, + displayName: json['displayName'] as String?, + authenticatorSelection: json['authenticatorSelection'] != null + ? AuthenticatorSelectionCriteria.fromJson( + (json['authenticatorSelection'] as Map) + .cast(), + ) + : null, + ); + } + throw FormatException('Invalid registration request: $json'); + } + + final String username; + final String displayName; + final AuthenticatorSelectionCriteria? authenticatorSelection; + + Map toJson() => { + 'username': username, + 'displayName': displayName, + if (authenticatorSelection case final authenticatorSelection?) + 'authenticatorSelection': authenticatorSelection.toJson(), + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyRequest(') + ..writeln(' username: $username,') + ..writeln(' displayName: $displayName,'); + if (authenticatorSelection case final authenticatorSelection?) { + buffer.writeln(' authenticatorSelection: $authenticatorSelection,'); + } + buffer.write(')'); + return buffer.toString(); + } +} + +sealed class PasskeyOptions { + const PasskeyOptions(); + + factory PasskeyOptions.fromJson(Map json) { + return switch (json) { + {'rp': Map()} => PasskeyRegistrationOptions.fromJson(json), + {'rpId': String()} => PasskeyAuthenticationOptions.fromJson(json), + _ => throw FormatException('Invalid passkey options: $json'), + }; + } + + Uint8List get challenge; + Duration get timeout; + + Map toJson(); +} + +// https://w3c.github.io/webauthn/#dictionary-makecredentialoptions +final class PasskeyRegistrationOptions extends PasskeyOptions { + PasskeyRegistrationOptions({ + required this.challenge, + required this.rpName, + required this.rpId, + required this.userId, + required this.userName, + String? userDisplayName, + this.timeout = const Duration(minutes: 5), + this.attestation = 'none', + this.authenticatorSelection = + const AuthenticatorSelectionCriteria.passkey(), + this.publicKeyCredentialParameters = const [], + }) : assert( + _isValidDomain(rpId), + 'Invalid rpId (must be a valid domain): $rpId', + ), + userDisplayName = userDisplayName ?? ''; + + factory PasskeyRegistrationOptions.fromJson(Map json) { + if (json + case { + 'rp': { + 'name': final String rpName, + 'id': final String rpId, + }, + 'challenge': final String challenge, + 'user': { + 'id': final String userId, + 'name': final String userName, + 'displayName': final String userDisplayName, + }, + }) { + return PasskeyRegistrationOptions( + rpName: rpName, + rpId: rpId, + userId: userId, + userName: userName, + userDisplayName: userDisplayName, + challenge: base64RawUrl.decode(challenge), + timeout: Duration(milliseconds: (json['timeout'] as num).toInt()), + attestation: json['attestation'] as String? ?? 'none', + authenticatorSelection: json['authenticatorSelection'] != null + ? AuthenticatorSelectionCriteria.fromJson( + (json['authenticatorSelection'] as Map) + .cast(), + ) + : const AuthenticatorSelectionCriteria.passkey(), + publicKeyCredentialParameters: (json['pubKeyCredParams'] as List? ?? + const []) + .cast>() + .map((json) => PublicKeyCredentialParameter.fromJson(json.cast())) + .toList(), + ); + } + throw FormatException('Invalid registration options: $json'); + } + + final String rpName; + final String rpId; + final String userId; + final String userName; + final String userDisplayName; + @override + final Uint8List challenge; + @override + final Duration timeout; + final String attestation; + final AuthenticatorSelectionCriteria authenticatorSelection; + final List publicKeyCredentialParameters; + + @override + Map toJson() => { + 'rp': { + 'name': rpName, + 'id': rpId, + }, + 'user': { + 'id': userId, + 'name': userName, + 'displayName': userDisplayName, + }, + 'challenge': base64RawUrl.encode(challenge), + 'timeout': timeout.inMilliseconds, + 'attestation': attestation, + 'authenticatorSelection': authenticatorSelection.toJson(), + 'pubKeyCredParams': + publicKeyCredentialParameters.map((el) => el.toJson()).toList(), + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyRegistrationOptions(') + ..writeln(' rpName: $rpName,') + ..writeln(' rpId: $rpId,') + ..writeln(' userId: $userId,') + ..writeln(' userName: $userName,') + ..writeln(' userDisplayName: $userDisplayName,') + ..writeln(' challenge: ${base64RawUrl.encode(challenge)},') + ..writeln(' timeout: $timeout,') + ..writeln(' attestation: $attestation,'); + if (authenticatorSelection case final authenticatorSelection) { + buffer.writeln(' authenticatorSelection: $authenticatorSelection,'); + } + if (publicKeyCredentialParameters + case final publicKeyCredentialParameters) { + buffer.writeln(' publicKeyCredentialParameters: ['); + for (final el in publicKeyCredentialParameters) { + buffer.writeln(' $el,'); + } + buffer.writeln(' ],'); + } + buffer.write(')'); + return buffer.toString(); + } +} + +final class PasskeyCredential { + const PasskeyCredential({ + required this.id, + required this.rawId, + required this.response, + this.authenticatorAttachment, + }); + + factory PasskeyCredential.fromJson(Map json) { + return switch (json) { + { + 'id': final String id, + 'rawId': final String rawId, + 'type': 'public-key', + 'response': final Map response, + } => + PasskeyCredential( + id: id, + rawId: base64RawUrl.decode(rawId), + response: PasskeyResponse.fromJson(response.cast()), + authenticatorAttachment: + json['authenticatorAttachment'] as AuthenticatorAttachment?, + ), + _ => throw FormatException('Invalid credential: $json'), + }; + } + + /// A base64url-encoded string representing the credential ID. + final String id; + + /// The credential ID in its raw binary form. + final Uint8List rawId; + String get type => 'public-key'; + final PasskeyResponse response; + + /// This will be set to `platform` when the credential is created on a + /// passkey-capable device. + final AuthenticatorAttachment? authenticatorAttachment; + + Map toJson() => { + 'id': id, + 'rawId': base64RawUrl.encode(rawId), + 'type': type, + 'response': response.toJson(), + if (authenticatorAttachment != null) + 'authenticatorAttachment': authenticatorAttachment, + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyCredential(') + ..writeln(' id: $id,') + ..writeln(' rawId: ${base64RawUrl.encode(rawId)},') + ..writeln(' type: $type,') + ..writeln(' response: $response,'); + if (authenticatorAttachment != null) { + buffer.writeln(' authenticatorAttachment: $authenticatorAttachment,'); + } + buffer.write(')'); + return buffer.toString(); + } +} + +sealed class PasskeyResponse { + const PasskeyResponse(); + + factory PasskeyResponse.fromJson(Map json) { + return switch (json) { + { + 'clientDataJSON': String(), + 'attestationObject': String(), + } => + PasskeyRegistrationResponse.fromJson(json), + { + 'clientDataJSON': String(), + 'authenticatorData': String(), + 'signature': String(), + } => + PasskeyAuthenticationResponse.fromJson(json), + _ => throw FormatException('Invalid passkey response: $json'), + }; + } + + Uint8List get clientDataJson; + + Map toJson(); +} + +final class PasskeyRegistrationResponse extends PasskeyResponse { + const PasskeyRegistrationResponse({ + required this.clientDataJson, + required this.attestationObject, + this.transports, + this.publicKeyAlgorithm, + this.publicKey, + this.authenticatorData, + }); + + factory PasskeyRegistrationResponse.fromJson(Map json) { + if (json + case { + 'clientDataJSON': final String clientDataJson, + 'attestationObject': final String attestationObject, + }) { + return PasskeyRegistrationResponse( + clientDataJson: base64RawUrl.decode(clientDataJson), + attestationObject: base64RawUrl.decode(attestationObject), + transports: (json['transports'] as List?)?.cast(), + publicKeyAlgorithm: json['publicKeyAlgorithm'] != null + ? COSEAlgorithmIdentifier._( + json['publicKeyAlgorithm'] as int, + ) + : null, + publicKey: json['publicKey'] != null + ? base64RawUrl.decode(json['publicKey'] as String) + : null, + authenticatorData: json['authenticatorData'] != null + ? base64RawUrl.decode(json['authenticatorData'] as String) + : null, + ); + } + throw FormatException('Invalid registration response: $json'); + } + + @override + final Uint8List clientDataJson; + final Uint8List attestationObject; + final List? transports; + final COSEAlgorithmIdentifier? publicKeyAlgorithm; + final Uint8List? publicKey; + final Uint8List? authenticatorData; + + @override + Map toJson() => { + 'clientDataJSON': base64RawUrl.encode(clientDataJson), + 'attestationObject': base64RawUrl.encode(attestationObject), + if (transports != null) 'transports': transports, + if (publicKeyAlgorithm != null) + 'publicKeyAlgorithm': publicKeyAlgorithm, + if (publicKey != null) 'publicKey': base64RawUrl.encode(publicKey!), + if (authenticatorData != null) + 'authenticatorData': base64RawUrl.encode(authenticatorData!), + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyRegistrationResponse(') + ..writeln(' clientDataJson: ${utf8.decode(clientDataJson)},') + ..writeln( + ' attestationObject: ${base64RawUrl.encode(attestationObject)},') + ..writeln(' transports: ${transports?.join(', ')},') + ..writeln(' publicKeyAlgorithm: $publicKeyAlgorithm,') + ..writeln( + ' publicKey: ${base64RawUrl.encode(publicKey ?? Uint8List(0))},') + ..writeln( + ' authenticatorData: ${base64RawUrl.encode(authenticatorData ?? Uint8List(0))},') + ..write(')'); + return buffer.toString(); + } +} + +final class PublicKeyCredentialParameter { + const PublicKeyCredentialParameter({ + required this.algorithm, + }); + + factory PublicKeyCredentialParameter.fromJson(Map json) { + if (json + case { + 'type': 'public-key', + 'alg': final int algorithm, + }) { + return PublicKeyCredentialParameter( + algorithm: COSEAlgorithmIdentifier._(algorithm), + ); + } + throw FormatException('Invalid credential parameter: $json'); + } + + String get type => 'public-key'; + final COSEAlgorithmIdentifier algorithm; + + Map toJson() => { + 'type': type, + 'alg': algorithm, + }; + + @override + String toString() { + final buffer = StringBuffer() + ..write('PasskeyCredentialParameter(') + ..write('type: $type, ') + ..write('algorithm: $algorithm') + ..write(')'); + return buffer.toString(); + } +} + +// https://w3c.github.io/webauthn/#dictdef-authenticatorselectioncriteria +final class AuthenticatorSelectionCriteria { + const AuthenticatorSelectionCriteria({ + this.authenticatorAttachment, + this.residentKey, + UserVerificationRequirement? userVerification, + }) : userVerification = + userVerification ?? UserVerificationRequirement.preferred; + + const AuthenticatorSelectionCriteria.passkey() + : + // Try to use UV if possible. + // + // Why not required: https://passkeys.dev/docs/use-cases/bootstrapping/#a-note-about-user-verification + userVerification = UserVerificationRequirement.preferred, + + // "platform" indicates that the RP wants a platform authenticator + // (an authenticator embedded to the platform device) which will + // not prompt to insert e.g. a USB security key. The user has a + // simpler option to create a passkey. + authenticatorAttachment = AuthenticatorAttachment.platform, + + // A discoverable credential (resident key) stores user + // information to the passkey and lets users select the account + // upon authentication. + // + // + residentKey = ResidentKeyRequirement.preferred; + + factory AuthenticatorSelectionCriteria.fromJson(Map json) { + return AuthenticatorSelectionCriteria( + authenticatorAttachment: + json['authenticatorAttachment'] as AuthenticatorAttachment?, + residentKey: json['residentKey'] as ResidentKeyRequirement?, + userVerification: + json['userVerification'] as UserVerificationRequirement?, + ); + } + + final AuthenticatorAttachment? authenticatorAttachment; + final ResidentKeyRequirement? residentKey; + + /// This property is retained for backward compatibility from + /// WebAuthn Level 1, an older version of the specification. This is set + /// to true if residentKey is 'required', otherwise set it to false. + /// + /// See: https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey + bool get requireResidentKey => residentKey == ResidentKeyRequirement.required; + + final UserVerificationRequirement userVerification; + + Map toJson() => { + if (authenticatorAttachment != null) + 'authenticatorAttachment': authenticatorAttachment, + if (residentKey != null) 'residentKey': residentKey, + 'requireResidentKey': requireResidentKey, + 'userVerification': userVerification, + }; + + @override + String toString() { + final buffer = StringBuffer() + ..write('AuthenticatorSelectionCriteria(') + ..write('authenticatorAttachment: $authenticatorAttachment, ') + ..write('residentKey: $residentKey, ') + ..write('requireResidentKey: $requireResidentKey, ') + ..write('userVerification: $userVerification') + ..write(')'); + return buffer.toString(); + } +} + +/// The client data returned by the authenticator during registration and +/// authentication. +/// +/// See: https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorResponse/clientDataJSON +final class PasskeyClientData { + const PasskeyClientData({ + required this.challenge, + bool? crossOrigin, + required this.origin, + this.topOrigin, + required this.type, + this.tokenBinding, + }) : crossOrigin = crossOrigin ?? false; + + factory PasskeyClientData.fromJson(Map json) { + if (json + case { + 'challenge': final String challenge, + 'origin': final String origin, + 'type': final String type, + }) { + return PasskeyClientData( + challenge: base64RawUrl.decode(challenge), + crossOrigin: json['crossOrigin'] as bool?, + origin: origin, + topOrigin: json['topOrigin'] as String?, + type: type, + tokenBinding: json['tokenBinding'] != null + ? PasskeyClientDataTokenBinding.fromJson( + (json['tokenBinding'] as Map).cast(), + ) + : null, + ); + } + throw FormatException('Invalid client data: $json'); + } + + final Uint8List challenge; + final bool crossOrigin; + final String origin; + final String? topOrigin; + final String type; + final PasskeyClientDataTokenBinding? tokenBinding; + + Map toJson() => { + 'challenge': base64RawUrl.encode(challenge), + if (crossOrigin) 'crossOrigin': crossOrigin, + 'origin': origin, + if (topOrigin != null) 'topOrigin': topOrigin, + 'type': type, + if (tokenBinding != null) 'tokenBinding': tokenBinding!.toJson(), + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyClientData(') + ..writeln(' challenge: ${base64RawUrl.encode(challenge)},') + ..writeln(' crossOrigin: $crossOrigin,') + ..writeln(' origin: $origin,') + ..writeln(' topOrigin: $topOrigin,') + ..writeln(' type: $type,'); + if (tokenBinding case final tokenBinding?) { + buffer + ..writeln(' tokenBinding: PasskeyClientDataTokenBinding(') + ..writeln(' id: ${base64RawUrl.encode(tokenBinding.id)},') + ..writeln(' status: ${tokenBinding.status},') + ..writeln(' ),'); + } + buffer.write(')'); + return buffer.toString(); + } +} + +final class PasskeyClientDataTokenBinding { + const PasskeyClientDataTokenBinding({ + required this.id, + required this.status, + }); + + factory PasskeyClientDataTokenBinding.fromJson(Map json) { + if (json + case { + 'id': final String id, + 'status': final String status, + }) { + return PasskeyClientDataTokenBinding( + id: base64RawUrl.decode(id), + status: status, + ); + } + throw FormatException('Invalid token binding: $json'); + } + + /// The token binding ID which was used for communication. + final Uint8List id; + + /// Either "supported" or "present". + final String status; + + Map toJson() => { + 'id': base64RawUrl.encode(id), + 'status': status, + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyClientDataTokenBinding(') + ..writeln(' id: ${base64RawUrl.encode(id)},') + ..writeln(' status: $status,') + ..write(')'); + return buffer.toString(); + } +} + +final class PasskeyDescriptor { + const PasskeyDescriptor({ + required this.id, + this.transports = const [], + }); + + factory PasskeyDescriptor.fromJson(Map json) { + if (json + case { + 'id': final String id, + }) { + return PasskeyDescriptor( + id: id, + transports: (json['transports'] as List?)?.cast() ?? const [], + ); + } + throw FormatException('Invalid passkey descriptor: $json'); + } + + final String id; + final List transports; + + Map toJson() => { + 'id': id, + 'transports': transports, + }; + + @override + String toString() => 'PasskeyDescriptor(' + 'id: $id, ' + 'transports: ${transports.join(', ')})'; +} + +final class PasskeyAuthenticationOptions extends PasskeyOptions { + PasskeyAuthenticationOptions({ + required this.rpId, + required this.challenge, + this.timeout = const Duration(minutes: 5), + List? allowCredentials, + UserVerificationRequirement? userVerification, + }) : assert( + _isValidDomain(rpId), + 'Invalid rpId (must be a valid domain): $rpId', + ), + allowCredentials = allowCredentials ?? const [], + userVerification = + userVerification ?? UserVerificationRequirement.preferred; + + factory PasskeyAuthenticationOptions.fromJson(Map json) { + if (json + case { + 'rpId': final String rpId, + 'challenge': final String challenge, + 'timeout': final int timeout, + 'allowCredentials': final List allowCredentials, + }) { + return PasskeyAuthenticationOptions( + rpId: rpId, + challenge: base64RawUrl.decode(challenge), + timeout: Duration(milliseconds: timeout), + allowCredentials: allowCredentials + .cast>() + .map(PasskeyDescriptor.fromJson) + .toList(), + userVerification: + json['userVerification'] as UserVerificationRequirement?, + ); + } + throw FormatException('Invalid authentication request: $json'); + } + + final String rpId; + @override + final Uint8List challenge; + @override + final Duration timeout; + final List allowCredentials; + final UserVerificationRequirement userVerification; + + @override + Map toJson() => { + 'rpId': rpId, + 'challenge': base64RawUrl.encode(challenge), + 'timeout': timeout.inMilliseconds, + 'allowCredentials': allowCredentials.map((el) => el.toJson()).toList(), + 'userVerification': userVerification, + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyAuthenticationRequest(') + ..writeln(' rpId: $rpId,') + ..writeln(' challenge: ${base64RawUrl.encode(challenge)},') + ..writeln(' timeout: $timeout,') + ..writeln(' allowCredentials: ${allowCredentials.join(', ')},') + ..writeln(' userVerification: $userVerification,') + ..write(')'); + return buffer.toString(); + } +} + +final class PasskeyAuthenticationResponse extends PasskeyResponse { + const PasskeyAuthenticationResponse({ + required this.clientDataJson, + required this.authenticatorData, + required this.signature, + this.userHandle, + }); + + factory PasskeyAuthenticationResponse.fromJson(Map json) { + if (json + case { + 'clientDataJSON': final String clientDataJson, + 'authenticatorData': final String authenticatorData, + 'signature': final String signature, + }) { + return PasskeyAuthenticationResponse( + clientDataJson: base64RawUrl.decode(clientDataJson), + authenticatorData: base64RawUrl.decode(authenticatorData), + signature: base64RawUrl.decode(signature), + userHandle: json['userHandle'] != null + ? base64RawUrl.decode(json['userHandle'] as String) + : null, + ); + } + throw FormatException('Invalid authentication response: $json'); + } + + @override + final Uint8List clientDataJson; + final Uint8List authenticatorData; + final Uint8List signature; + final Uint8List? userHandle; + + @override + Map toJson() => { + 'clientDataJSON': base64RawUrl.encode(clientDataJson), + 'authenticatorData': base64RawUrl.encode(authenticatorData), + 'signature': base64RawUrl.encode(signature), + if (userHandle != null) 'userHandle': base64RawUrl.encode(userHandle!), + }; + + @override + String toString() { + final buffer = StringBuffer() + ..writeln('PasskeyAuthenticationResponse(') + ..writeln(' clientData: ${base64RawUrl.encode(clientDataJson)}') + ..writeln(' ),') + ..writeln( + ' authenticatorData: ${base64RawUrl.encode(authenticatorData)},') + ..writeln(' signature: ${base64RawUrl.encode(signature)},') + ..write(')'); + return buffer.toString(); + } +} + +/// Supported crypto algo identifiers. +/// +/// See: +/// - https://w3c.github.io/webauthn/#sctn-alg-identifier +/// - https://www.iana.org/assignments/cose/cose.xhtml#algorithms +extension type const COSEAlgorithmIdentifier._(int _) implements int { + factory COSEAlgorithmIdentifier(int algId) { + if (!values.contains(algId)) { + throw ArgumentError.value( + algId, + 'algId', + 'Unsupported COSE algorithm identifier.', + ); + } + return COSEAlgorithmIdentifier._(algId); + } + + static const List prioritized = [ + // In first position to encourage authenticators to use this over ES256 + edDsa, + es256, + es512, + rsaPss256, + rsaPss384, + rsaPss512, + rs256, + rs384, + rs512, + rsSha1, // ignore: deprecated_member_use_from_same_package + ]; + + static const List values = [ + edDsa, + es256, + es512, + rsaPss256, + rsaPss384, + rsaPss512, + rs256, + rs384, + rs512, + rsSha1, // ignore: deprecated_member_use_from_same_package + ]; + + /// EdDSA + static const edDsa = COSEAlgorithmIdentifier._(-8); + + /// ECDSA w/ SHA-256 + static const es256 = COSEAlgorithmIdentifier._(-7); + + /// ECDSA w/ SHA-512 + static const es512 = COSEAlgorithmIdentifier._(-36); + + /// RSASSA-PSS w/ SHA-256 + static const rsaPss256 = COSEAlgorithmIdentifier._(-37); + + /// RSASSA-PSS w/ SHA-384 + static const rsaPss384 = COSEAlgorithmIdentifier._(-38); + + /// RSASSA-PSS w/ SHA-512 + static const rsaPss512 = COSEAlgorithmIdentifier._(-39); + + /// RSASSA-PKCS1-v1_5 w/ SHA-256 + static const rs256 = COSEAlgorithmIdentifier._(-257); + + /// RSASSA-PKCS1-v1_5 w/ SHA-384 + static const rs384 = COSEAlgorithmIdentifier._(-258); + + /// RSASSA-PKCS1-v1_5 w/ SHA-512 + static const rs512 = COSEAlgorithmIdentifier._(-259); + + // RSASSA-PKCS1-v1_5 w/ SHA-1 (Deprecated; here for legacy support) + @Deprecated('SHA-1 is deprecated and should not be used for new applications') + static const rsSha1 = COSEAlgorithmIdentifier._(-65535); +} + +/// A super class of TypeScript's `AuthenticatorTransport` that includes +/// support for the latest transports. +extension type const AuthenticatorTransport._(String transport) + implements String { + static const ble = AuthenticatorTransport._('ble'); + static const cable = AuthenticatorTransport._('cable'); + static const hybrid = AuthenticatorTransport._('hybrid'); + static const internal = AuthenticatorTransport._('internal'); + static const nfc = AuthenticatorTransport._('nfc'); + static const smartCard = AuthenticatorTransport._('smart-card'); + static const usb = AuthenticatorTransport._('usb'); +} + +extension type const AuthenticatorAttachment._(String attachment) + implements String { + static const crossPlatform = AuthenticatorAttachment._('cross-platform'); + static const platform = AuthenticatorAttachment._('platform'); +} + +extension type const UserVerificationRequirement._(String requirement) + implements String { + static const discouraged = UserVerificationRequirement._('discouraged'); + static const preferred = UserVerificationRequirement._('preferred'); + static const required = UserVerificationRequirement._('required'); +} + +extension type const ResidentKeyRequirement._(String requirement) + implements String { + static const discouraged = ResidentKeyRequirement._('discouraged'); + static const preferred = ResidentKeyRequirement._('preferred'); + static const required = ResidentKeyRequirement._('required'); +} diff --git a/packages/celest_core/lib/src/auth/user.dart b/packages/celest_core/lib/src/auth/user.dart new file mode 100644 index 00000000..a2cc29c8 --- /dev/null +++ b/packages/celest_core/lib/src/auth/user.dart @@ -0,0 +1,60 @@ +final class AuthenticatedUser { + const AuthenticatedUser({ + required this.cork, + required this.user, + }); + + factory AuthenticatedUser.fromJson(Map json) { + return AuthenticatedUser( + cork: json['cork'] as String, + user: User.fromJson(json['user'] as Map), + ); + } + + final String cork; + final User user; + + Map toJson() => { + 'cork': cork, + 'user': user.toJson(), + }; + + @override + String toString() { + return 'Authenticated$user'; + } +} + +final class User { + const User({ + required this.userId, + this.displayName, + required this.email, + bool? emailVerified, + }) : emailVerified = emailVerified ?? false; + + factory User.fromJson(Map json) { + return User( + userId: json['sub'] as String, + displayName: json['name'] as String?, + email: json['email'] as String, + emailVerified: json['email_verified'] as bool?, + ); + } + + final String userId; + final String? displayName; + final String email; + final bool emailVerified; + + Map toJson() => { + 'sub': userId, + if (displayName != null) 'name': displayName, + 'email': email, + 'email_verified': emailVerified, + }; + + @override + String toString() => 'User(userId: $userId, displayName: $displayName, ' + 'email: $email, emailVerified: $emailVerified)'; +} diff --git a/packages/celest_core/lib/src/base/base_protocol.dart b/packages/celest_core/lib/src/base/base_protocol.dart new file mode 100644 index 00000000..468b6d64 --- /dev/null +++ b/packages/celest_core/lib/src/base/base_protocol.dart @@ -0,0 +1,54 @@ +import 'dart:convert'; + +import 'package:celest_core/celest_core.dart'; +import 'package:celest_core/src/base/celest_base.dart'; +import 'package:http/http.dart' as http; + +mixin BaseProtocol { + CelestBase get celest; + + Future> getJson(String path) async { + final uri = celest.baseUri.resolve(path); + final resp = await celest.httpClient.get( + uri, + headers: { + 'accept': 'application/json', + }, + ); + if (resp.statusCode == 401) { + throw UnauthorizedException(); + } + if (resp.statusCode != 200) { + throw http.ClientException( + '${resp.statusCode}: ${resp.body}', + uri, + ); + } + return jsonDecode(resp.body) as Map; + } + + Future> postJson( + String path, + Map json, + ) async { + final uri = celest.baseUri.resolve(path); + final resp = await celest.httpClient.post( + uri, + body: jsonEncode(json), + headers: { + 'accept': 'application/json', + 'content-type': 'application/json', + }, + ); + if (resp.statusCode == 401) { + throw UnauthorizedException(); + } + if (resp.statusCode != 200) { + throw http.ClientException( + '${resp.statusCode}: ${resp.body}', + uri, + ); + } + return jsonDecode(resp.body) as Map; + } +} diff --git a/packages/celest_core/lib/src/base/celest_base.dart b/packages/celest_core/lib/src/base/celest_base.dart new file mode 100644 index 00000000..dc6d5430 --- /dev/null +++ b/packages/celest_core/lib/src/base/celest_base.dart @@ -0,0 +1,6 @@ +import 'package:http/http.dart' as http; + +abstract mixin class CelestBase { + http.Client get httpClient; + Uri get baseUri; +} diff --git a/packages/celest_core/lib/src/exception/cloud_exception.dart b/packages/celest_core/lib/src/exception/cloud_exception.dart index 6f3d7ebd..19f5998c 100644 --- a/packages/celest_core/lib/src/exception/cloud_exception.dart +++ b/packages/celest_core/lib/src/exception/cloud_exception.dart @@ -20,6 +20,16 @@ class BadRequestException implements CloudException { String toString() => 'BadRequestException: $message'; } +final class UnauthorizedException implements CloudException { + const UnauthorizedException([this.message = 'Unauthorized']); + + @override + final String message; + + @override + String toString() => 'UnauthorizedException: $message'; +} + /// {@template celest_core.exception.internal_server_exception} /// An exception thrown by a Cloud Function when an unrecoverable internal error /// occurs. diff --git a/packages/celest_core/lib/src/http/celest_http_client.dart b/packages/celest_core/lib/src/http/celest_http_client.dart new file mode 100644 index 00000000..e276eb9f --- /dev/null +++ b/packages/celest_core/lib/src/http/celest_http_client.dart @@ -0,0 +1,42 @@ +import 'dart:isolate'; + +import 'package:celest_core/src/storage/secure/secure_storage.dart'; +import 'package:celest_core/src/storage/storage.dart'; +import 'package:celest_core/src/util/globals.dart'; +import 'package:http/http.dart' as http; + +final class CelestHttpClient extends http.BaseClient { + CelestHttpClient({ + required SecureStorage secureStorage, + http.Client? baseClient, + }) : _secureStorage = secureStorage, + _ownsInner = baseClient == null, + _inner = baseClient ?? http.Client(); + + final SecureStorage _secureStorage; + final bool _ownsInner; + final http.Client _inner; + + @override + Future send(http.BaseRequest request) async { + final cork = await _readStorage(_secureStorage, 'cork'); + if (cork != null) { + request.headers['authorization'] = 'Bearer $cork'; + } + return _inner.send(request); + } + + @override + void close() { + if (_ownsInner) { + _inner.close(); + } + } +} + +Future _readStorage(Storage storage, String key) async { + if (kIsWeb) { + return null; + } + return Isolate.run(() => storage.read(key)); +} diff --git a/packages/celest_core/lib/src/storage/memory_storage.dart b/packages/celest_core/lib/src/storage/memory_storage.dart index ece77fb6..887b8771 100644 --- a/packages/celest_core/lib/src/storage/memory_storage.dart +++ b/packages/celest_core/lib/src/storage/memory_storage.dart @@ -4,12 +4,14 @@ import 'package:celest_core/src/storage/storage.dart'; /// An in-memory implementation of [Storage] and [SecureStorage]. final class MemoryStorage implements Storage, SecureStorage { MemoryStorage({ - required this.scope, - }); + String? scope, + }) : scope = scope ?? _defaultScope; final _storage = {}; final String scope; + static const _defaultScope = 'dev.celest.cli'; + @override void clear() => _storage.removeWhere((key, _) => key.startsWith('$scope/')); diff --git a/packages/celest_core/lib/src/storage/secure/secure_storage.darwin.dart b/packages/celest_core/lib/src/storage/secure/secure_storage.darwin.dart index 699663d7..866ac8c5 100644 --- a/packages/celest_core/lib/src/storage/secure/secure_storage.darwin.dart +++ b/packages/celest_core/lib/src/storage/secure/secure_storage.darwin.dart @@ -81,6 +81,7 @@ final class SecureStoragePlatformDarwin extends SecureStoragePlatform { final query = { ..._baseQuery(arena), kSecAttrAccount: key.toCFString(arena), + kSecMatchLimit: kSecMatchLimitOne, }; final gets = SecItemCopyMatching(query.toCFDictionary(arena), nullptr); if (gets != errSecSuccess && gets != errSecItemNotFound) { @@ -115,6 +116,7 @@ final class SecureStoragePlatformDarwin extends SecureStoragePlatform { final query = { ..._baseQuery(arena), kSecAttrAccount: key.toCFString(arena), + kSecMatchLimit: kSecMatchLimitOne, }; try { _check( diff --git a/packages/celest_core/lib/src/storage/storage.dart b/packages/celest_core/lib/src/storage/storage.dart index 7bc64447..ff0d5de3 100644 --- a/packages/celest_core/lib/src/storage/storage.dart +++ b/packages/celest_core/lib/src/storage/storage.dart @@ -1,7 +1,9 @@ import 'package:celest_core/src/storage/local/local_storage.dart'; +import 'package:celest_core/src/storage/memory_storage.dart'; import 'package:celest_core/src/storage/secure/secure_storage.dart'; abstract interface class Storage { + factory Storage.memory({String? scope}) = MemoryStorage; factory Storage.local({String? scope}) = LocalStorage; factory Storage.secure({String? scope}) = SecureStorage; diff --git a/packages/celest_core/lib/src/util/base64_raw_url.dart b/packages/celest_core/lib/src/util/base64_raw_url.dart new file mode 100644 index 00000000..7374e626 --- /dev/null +++ b/packages/celest_core/lib/src/util/base64_raw_url.dart @@ -0,0 +1,39 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +/// base64url encoding without padding, as defined by +/// [RFC 7515](https://datatracker.ietf.org/doc/html/rfc7515#appendix-C). +const base64RawUrl = _Base64RawUrlCodec(); + +class _Base64RawUrlCodec extends Codec { + const _Base64RawUrlCodec(); + + @override + Converter get decoder => + const _StripPaddingDecoder().fuse(const Base64Decoder()).cast(); + + @override + Converter get encoder => + const Base64Encoder.urlSafe().fuse(const _StripPaddingEncoder()).cast(); +} + +/// Strips padding from a base64-encoded string. +class _StripPaddingEncoder extends Converter { + const _StripPaddingEncoder(); + + @override + String convert(String input) { + return input.split('=').first; + } +} + +/// Adds back stripped padding to a base64-encoded string. +class _StripPaddingDecoder extends Converter { + const _StripPaddingDecoder(); + + @override + String convert(String input) { + final len = input.length; + return input + '=' * ((4 - len % 4) % 4); + } +} diff --git a/packages/celest_core/lib/src/util/globals.dart b/packages/celest_core/lib/src/util/globals.dart index f6c99938..a2a7cfc5 100644 --- a/packages/celest_core/lib/src/util/globals.dart +++ b/packages/celest_core/lib/src/util/globals.dart @@ -14,5 +14,8 @@ const bool kProfileMode = bool.fromEnvironment('dart.vm.profile'); /// other compilation targets. const bool kIsWeb = identical(0, 0.0); +/// Whether running in a Dart native environment (i.e. the VM). +const bool kIsDartNative = !kIsWeb && !kIsFlutter; + /// Whether running in Flutter (as opposed to Dart-only). const bool kIsFlutter = bool.fromEnvironment('dart.library.ui'); diff --git a/packages/celest_core/pubspec.yaml b/packages/celest_core/pubspec.yaml index a9db7617..495324a4 100644 --- a/packages/celest_core/pubspec.yaml +++ b/packages/celest_core/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: collection: ^1.18.0 + http: ">=0.13.0 <2.0.0" ffi: ^2.1.2 jni: ^0.7.2 meta: ^1.10.0 diff --git a/packages/corks/.gitignore b/packages/corks/.gitignore new file mode 100644 index 00000000..3cceda55 --- /dev/null +++ b/packages/corks/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/packages/corks/CHANGELOG.md b/packages/corks/CHANGELOG.md new file mode 100644 index 00000000..a0712a79 --- /dev/null +++ b/packages/corks/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.1.0 + +- Initial version. diff --git a/packages/corks/README.md b/packages/corks/README.md new file mode 100644 index 00000000..8b55e735 --- /dev/null +++ b/packages/corks/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/packages/corks/analysis_options.yaml b/packages/corks/analysis_options.yaml new file mode 100644 index 00000000..8ea0c328 --- /dev/null +++ b/packages/corks/analysis_options.yaml @@ -0,0 +1,12 @@ +include: package:lints/recommended.yaml + +analyzer: + exclude: + - "**/*.g.dart" + - "**/*.pb.dart" + - "**/*.pbenum.dart" + - "**/*.pbjson.dart" + - "**/*.pbserver.dart" + errors: + implementation_imports: ignore + public_member_api_docs: ignore diff --git a/packages/corks/lib/corks.dart b/packages/corks/lib/corks.dart new file mode 100644 index 00000000..3984c999 --- /dev/null +++ b/packages/corks/lib/corks.dart @@ -0,0 +1,4 @@ +library; + +export 'src/cork.dart'; +export 'src/signer.dart'; diff --git a/packages/corks/lib/corks_proto.dart b/packages/corks/lib/corks_proto.dart new file mode 100644 index 00000000..732b6ab8 --- /dev/null +++ b/packages/corks/lib/corks_proto.dart @@ -0,0 +1,28 @@ +export 'src/proto/cedar/v3/context.pb.dart'; +export 'src/proto/cedar/v3/context.pbenum.dart'; +export 'src/proto/cedar/v3/context.pbjson.dart'; +export 'src/proto/cedar/v3/context.pbserver.dart'; +export 'src/proto/cedar/v3/entity.pb.dart'; +export 'src/proto/cedar/v3/entity.pbenum.dart'; +export 'src/proto/cedar/v3/entity.pbjson.dart'; +export 'src/proto/cedar/v3/entity.pbserver.dart'; +export 'src/proto/cedar/v3/entity_id.pb.dart'; +export 'src/proto/cedar/v3/entity_id.pbenum.dart'; +export 'src/proto/cedar/v3/entity_id.pbjson.dart'; +export 'src/proto/cedar/v3/entity_id.pbserver.dart'; +export 'src/proto/cedar/v3/expr.pb.dart'; +export 'src/proto/cedar/v3/expr.pbenum.dart'; +export 'src/proto/cedar/v3/expr.pbjson.dart'; +export 'src/proto/cedar/v3/expr.pbserver.dart'; +export 'src/proto/cedar/v3/policy.pb.dart'; +export 'src/proto/cedar/v3/policy.pbenum.dart'; +export 'src/proto/cedar/v3/policy.pbjson.dart'; +export 'src/proto/cedar/v3/policy.pbserver.dart'; +export 'src/proto/cedar/v3/value.pb.dart'; +export 'src/proto/cedar/v3/value.pbenum.dart'; +export 'src/proto/cedar/v3/value.pbjson.dart'; +export 'src/proto/cedar/v3/value.pbserver.dart'; +export 'src/proto/corks/v1/cork.pb.dart'; +export 'src/proto/corks/v1/cork.pbenum.dart'; +export 'src/proto/corks/v1/cork.pbjson.dart'; +export 'src/proto/corks/v1/cork.pbserver.dart'; diff --git a/packages/corks/lib/src/cork.dart b/packages/corks/lib/src/cork.dart new file mode 100644 index 00000000..a87bdd69 --- /dev/null +++ b/packages/corks/lib/src/cork.dart @@ -0,0 +1,228 @@ +import 'dart:async'; +import 'dart:collection'; +import 'dart:convert'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:cedar/cedar.dart' as cedar; +import 'package:corks/corks_proto.dart' as proto; +import 'package:corks/src/interop/proto_interop.dart'; +import 'package:corks/src/proto/google/protobuf/any.pb.dart' as proto; +import 'package:corks/src/signer.dart'; +import 'package:crypto/crypto.dart'; +import 'package:meta/meta.dart'; + +@immutable +final class Cork { + const Cork._({ + required this.id, + required this.keyId, + this.bearer, + required List caveats, + required this.signature, + }) : _caveats = caveats; + + factory Cork.parse(String base64) => Cork.decode(base64Url.decode(base64)); + + factory Cork.decode(Uint8List bytes) { + final message = proto.Cork.fromBuffer(bytes); + return Cork.fromProto(message); + } + + factory Cork.fromProto(proto.Cork proto) => Cork._( + id: Uint8List.fromList(proto.id), + keyId: Uint8List.fromList(proto.keyId), + bearer: proto.hasBearer() ? SignedBearer.fromProto(proto.bearer) : null, + caveats: [ + for (final caveat in proto.caveats) SignedCaveat.fromProto(caveat), + ], + signature: Uint8List.fromList(proto.signature), + ); + + static CorkBuilder builder({ + Uint8List? id, + Bearer? bearer, + }) => + CorkBuilder( + id: id, + bearer: bearer, + ); + + final Uint8List id; + final Uint8List keyId; + final SignedBearer? bearer; + final List _caveats; + List get caveats => UnmodifiableListView(_caveats); + final Uint8List signature; + + proto.Cork toProto() => proto.Cork( + id: id, + keyId: keyId, + bearer: bearer?.toProto(), + caveats: _caveats.map((caveat) => caveat.toProto()), + signature: signature, + ); + + Uint8List encode() => toProto().writeToBuffer(); + + Future verify(Signer signer) async { + if (Digest(signer.keyId) != Digest(keyId)) { + return false; + } + await signer.sign(id); + if (bearer != null) { + // TODO(dnys1): https://github.com/dart-lang/sdk/issues/54664 + if (!await bearer!.verify(signer)) { + return false; + } + } + for (final caveat in _caveats) { + if (!await caveat.verify(signer)) { + return false; + } + } + return Digest(await signer.close()) == Digest(signature); + } + + @override + String toString() => base64Url.encode(encode()); +} + +final class CorkBuilder { + factory CorkBuilder({ + Uint8List? id, + Bearer? bearer, + }) { + if (id == null) { + const nonceSize = 32; + id = Uint8List(nonceSize); + for (var i = 0; i < nonceSize; i++) { + id[i] = _secureRandom.nextInt(256); + } + } + return CorkBuilder._(id, bearer); + } + + CorkBuilder._( + this._id, + this._bearer, + ); + + static final _secureRandom = Random.secure(); + + final Uint8List _id; + final Bearer? _bearer; + final List _caveats = []; + + void addPolicyCaveat(cedar.CedarPolicy policy) { + if (policy.effect != cedar.CedarPolicyEffect.forbid) { + throw ArgumentError('Policy must have effect "forbid"'); + } + _caveats.add(Caveat.policy(policy: policy)); + } + + Future build(Signer signer) async { + await signer.sign(_id); + + SignedBearer? signedBearer; + if (_bearer case final bearer?) { + signedBearer = SignedBearer(await bearer.sign(signer)); + } + final signedCaveats = []; + for (final caveat in _caveats) { + signedCaveats.add(SignedCaveat(await caveat.sign(signer))); + } + return Cork._( + id: _id, + keyId: signer.keyId, + bearer: signedBearer, + caveats: signedCaveats, + signature: await signer.close(), + ); + } +} + +@immutable +sealed class Bearer with Signable { + const Bearer(); + + factory Bearer.entity({ + required cedar.CedarEntity entity, + }) => + EntityBearer(entity: entity); + + factory Bearer.entityId({ + required cedar.CedarEntityId entityId, + }) => + EntityBearer(entity: cedar.CedarEntity(id: entityId)); +} + +final class EntityBearer extends Bearer { + const EntityBearer({ + required this.entity, + }); + + final cedar.CedarEntity entity; + + @override + proto.Entity toProto() => entity.toProto(); +} + +extension type SignedBearer(SignedBlock _block) implements SignedBlock { + SignedBearer.fromProto(proto.SignedBlock proto) + : _block = SignedBlock.fromProto(proto); + + Bearer get bearer { + final any = proto.Any( + typeUrl: typeUrl, + value: block, + ); + final entity = proto.Entity(); + if (!any.canUnpackInto(entity)) { + throw ArgumentError('Invalid bearer type: $typeUrl'); + } + any.unpackInto(entity); + return Bearer.entity( + entity: entity.fromProto(), + ); + } +} + +@immutable +sealed class Caveat with Signable { + const Caveat(); + + factory Caveat.policy({ + required cedar.CedarPolicy policy, + }) => + PolicyCaveat(policy: policy); +} + +final class PolicyCaveat extends Caveat { + const PolicyCaveat({ + required this.policy, + }); + + final cedar.CedarPolicy policy; + + @override + proto.Policy toProto() => policy.toProto(); +} + +extension type SignedCaveat(SignedBlock _block) implements SignedBlock { + SignedCaveat.fromProto(proto.SignedBlock proto) + : _block = SignedBlock.fromProto(proto); + + Caveat get caveat { + final any = proto.Any( + typeUrl: typeUrl, + value: block, + ); + final policy = proto.Policy(); + if (!any.canUnpackInto(policy)) { + throw ArgumentError('Invalid caveat type: $typeUrl'); + } + any.unpackInto(policy); + return PolicyCaveat(policy: policy.fromProto()); + } +} diff --git a/packages/corks/lib/src/interop/proto_interop.dart b/packages/corks/lib/src/interop/proto_interop.dart new file mode 100644 index 00000000..4913e609 --- /dev/null +++ b/packages/corks/lib/src/interop/proto_interop.dart @@ -0,0 +1,589 @@ +@internal +library; + +import 'dart:typed_data'; + +import 'package:cedar/cedar.dart' as cedar; +import 'package:corks/src/proto/cedar/v3/entity.pb.dart'; +import 'package:corks/src/proto/cedar/v3/entity_id.pb.dart'; +import 'package:corks/src/proto/cedar/v3/expr.pb.dart'; +import 'package:corks/src/proto/cedar/v3/policy.pb.dart'; +import 'package:corks/src/proto/cedar/v3/value.pb.dart'; +import 'package:fixnum/fixnum.dart'; +import 'package:meta/meta.dart'; + +extension type CedarPolicy._(cedar.CedarPolicy _policy) + implements cedar.CedarPolicy { + factory CedarPolicy.fromProto(Policy policy) => + CedarPolicy._(policy.fromProto()); + + factory CedarPolicy.fromJson(Map json) => + CedarPolicy._(cedar.CedarPolicy.fromJson(json)); + + factory CedarPolicy.fromProtoBuffer(Uint8List buffer) => + CedarPolicy._(Policy.fromBuffer(buffer).fromProto()); + + factory CedarPolicy.fromProtoJson(Map json) => + CedarPolicy._((Policy.create()..mergeFromProto3Json(json)).fromProto()); + + Policy toProto() => _policy.toProto(); + + Map toProtoJson() => + toProto().toProto3Json() as Map; + + Uint8List toProtoBuffer() => toProto().writeToBuffer(); +} + +extension PolicyOpFromProto on PolicyOp { + cedar.CedarPolicyOp fromProto() => switch (this) { + PolicyOp.POLICY_OP_ALL => cedar.CedarPolicyOp.all, + PolicyOp.POLICY_OP_EQUALS => cedar.CedarPolicyOp.equals, + PolicyOp.POLICY_OP_IN => cedar.CedarPolicyOp.in$, + PolicyOp.POLICY_OP_IS => cedar.CedarPolicyOp.is$, + PolicyOp.POLICY_OP_UNSPECIFIED => throw ArgumentError( + 'PolicyOp.POLICY_OP_UNSPECIFIED is not a valid PolicyOp', + ), + _ => throw UnimplementedError(), + }; +} + +extension PolicyOpToProto on cedar.CedarPolicyOp { + PolicyOp toProto() => switch (this) { + cedar.CedarPolicyOp.all => PolicyOp.POLICY_OP_ALL, + cedar.CedarPolicyOp.equals => PolicyOp.POLICY_OP_EQUALS, + cedar.CedarPolicyOp.in$ => PolicyOp.POLICY_OP_IN, + cedar.CedarPolicyOp.is$ => PolicyOp.POLICY_OP_IS, + _ => throw UnimplementedError(), + }; +} + +extension PolicyEffectFromProto on PolicyEffect { + cedar.CedarPolicyEffect fromProto() => switch (this) { + PolicyEffect.POLICY_EFFECT_FORBID => cedar.CedarPolicyEffect.forbid, + PolicyEffect.POLICY_EFFECT_PERMIT => cedar.CedarPolicyEffect.permit, + PolicyEffect.POLICY_EFFECT_UNSPECIFIED => throw ArgumentError( + 'PolicyEffect.POLICY_EFFECT_UNSPECIFIED is not a valid PolicyEffect', + ), + _ => throw UnimplementedError(), + }; +} + +extension PolicyEffectToProto on cedar.CedarPolicyEffect { + PolicyEffect toProto() => switch (this) { + cedar.CedarPolicyEffect.forbid => PolicyEffect.POLICY_EFFECT_FORBID, + cedar.CedarPolicyEffect.permit => PolicyEffect.POLICY_EFFECT_PERMIT, + _ => throw UnimplementedError(), + }; +} + +extension PolicyConditionKindFromProto on PolicyConditionKind { + cedar.CedarPolicyConditionKind fromProto() => switch (this) { + PolicyConditionKind.POLICY_CONDITION_KIND_WHEN => + cedar.CedarPolicyConditionKind.when, + PolicyConditionKind.POLICY_CONDITION_KIND_UNLESS => + cedar.CedarPolicyConditionKind.unless, + PolicyConditionKind.POLICY_CONDITION_KIND_UNSPECIFIED => + throw ArgumentError( + 'PolicyConditionKind.POLICY_CONDITION_KIND_UNSPECIFIED is not a valid PolicyConditionKind', + ), + _ => throw UnimplementedError(), + }; +} + +extension PolicyConditionKindToProto on cedar.CedarPolicyConditionKind { + PolicyConditionKind toProto() => switch (this) { + cedar.CedarPolicyConditionKind.when => + PolicyConditionKind.POLICY_CONDITION_KIND_WHEN, + cedar.CedarPolicyConditionKind.unless => + PolicyConditionKind.POLICY_CONDITION_KIND_UNLESS, + _ => throw UnimplementedError(), + }; +} + +extension PolicyFromProto on Policy { + cedar.CedarPolicy fromProto() => cedar.CedarPolicy( + id: hasId() ? id : null, + effect: effect.fromProto(), + principal: cedar.CedarPolicyPrincipal( + op: principal.op.fromProto(), + entity: principal.hasEntity() ? principal.entity.fromProto() : null, + entityType: principal.hasEntityType() ? principal.entityType : null, + ), + action: cedar.CedarPolicyAction( + op: action.op.fromProto(), + entity: action.hasEntity() ? action.entity.fromProto() : null, + entities: action.hasEntity() + ? null + : [ + for (final entity in action.entities) entity.fromProto(), + ], + ), + resource: cedar.CedarPolicyResource( + op: resource.op.fromProto(), + entity: resource.hasEntity() ? resource.entity.fromProto() : null, + entityType: resource.hasEntityType() ? resource.entityType : null, + ), + conditions: [ + for (final condition in conditions) condition.fromProto(), + ], + annotations: annotations.isNotEmpty ? annotations : null, + ); +} + +extension PolicyToProto on cedar.CedarPolicy { + Policy toProto() => Policy( + id: id, + effect: effect.toProto(), + principal: PolicyPrincipal( + op: principal.op.toProto(), + entity: principal.entity?.toProto(), + entityType: principal.entityType, + ), + action: PolicyAction( + op: action.op.toProto(), + entity: action.entity?.toProto(), + entities: action.entities == null + ? null + : [for (final entity in action.entities!) entity.toProto()], + ), + resource: PolicyResource( + op: resource.op.toProto(), + entity: resource.entity?.toProto(), + entityType: resource.entityType, + ), + conditions: [ + for (final condition in conditions) condition.toProto(), + ], + annotations: annotations?.toMap(), + ); +} + +extension PolicyConditionFromProto on PolicyCondition { + cedar.CedarPolicyCondition fromProto() => cedar.CedarPolicyCondition( + kind: kind.fromProto(), + body: body.fromProto(), + ); +} + +extension PolicyConditionToProto on cedar.CedarPolicyCondition { + PolicyCondition toProto() => PolicyCondition( + kind: kind.toProto(), + body: body.toProto(), + ); +} + +extension EntityIdFromProto on EntityId { + cedar.CedarEntityId fromProto() => cedar.CedarEntityId(type, id); +} + +extension EntityIdToProto on cedar.CedarEntityId { + EntityId toProto() => EntityId(type: type, id: id); +} + +extension EntityFromProto on Entity { + cedar.CedarEntity fromProto() => cedar.CedarEntity( + id: uid.fromProto(), + parents: [for (final parent in parents) parent.fromProto()], + attributes: attributes.map((k, v) => MapEntry(k, v.fromProto())), + ); +} + +extension EntityToProto on cedar.CedarEntity { + Entity toProto() => Entity( + uid: id.toProto(), + parents: [for (final parent in parents) parent.toProto()], + attributes: attributes.asMap().map((k, v) => MapEntry(k, v.toProto())), + ); +} + +extension type CedarExpr._(cedar.JsonExpr _expr) implements cedar.JsonExpr { + factory CedarExpr.fromProtoJson(Map json) { + final message = Expr.create()..mergeFromProto3Json(json); + return CedarExpr._(message.fromProto()); + } + + factory CedarExpr.fromProtoBuffer(Uint8List buffer) { + final message = Expr.fromBuffer(buffer); + return CedarExpr._(message.fromProto()); + } + + factory CedarExpr.fromJson(Map json) => + CedarExpr._(cedar.JsonExpr.fromJson(json)); + + Expr toProto() => _expr.toProto(); + + Map toProtoJson() => + toProto().toProto3Json() as Map; + + Uint8List toProtoBuffer() => toProto().writeToBuffer(); +} + +extension ValueFromProto on Value { + cedar.CedarValueJson fromProto() => switch (whichValue()) { + Value_Value.bool_3 => cedar.CedarValueJson.bool(bool_3), + Value_Value.entity => + cedar.CedarValueJson.entity(entity.uid.fromProto()), + Value_Value.extension_6 => cedar.CedarValueJson.extension( + cedar.CedarExtensionInvocation( + fn: extension_6.fn, + arg: extension_6.arg.fromProto(), + ), + ), + Value_Value.long => cedar.CedarValueJson.long(long.toInt()), + Value_Value.record => cedar.CedarValueJson.record( + record.values.map((key, value) => MapEntry(key, value.fromProto())), + ), + Value_Value.set => cedar.CedarValueJson.set([ + for (final value in set.values) value.fromProto(), + ]), + Value_Value.string => cedar.CedarValueJson.string(string), + Value_Value.notSet => throw ArgumentError.value( + whichValue(), + 'value', + 'An unset value is not allowed', + ), + }; +} + +extension ValueToProto on cedar.CedarValueJson { + Value toProto() => switch (this) { + cedar.CedarValueBool(:final value) => Value(bool_3: value), + cedar.CedarValueEntity(:final entityId) => + Value(entity: EntityValue(uid: entityId.toProto())), + cedar.CedarValueExtension(:final extension) => Value( + extension_6: ExtensionValue( + fn: extension.fn, + arg: extension.arg.toProto(), + ), + ), + cedar.CedarValueLong(:final value) => Value(long: Int64(value)), + cedar.CedarValueRecord(:final attributes) => Value( + record: RecordValue( + values: attributes + .map((key, value) => MapEntry(key, value.toProto())), + ), + ), + cedar.CedarValueSet(:final elements) => Value( + set: SetValue( + values: [for (final value in elements) value.toProto()], + ), + ), + cedar.CedarValueString(:final value) => Value(string: value), + }; +} + +extension ExprFromProto on Expr { + cedar.JsonExpr fromProto() => switch (whichExpr()) { + Expr_Expr.and => cedar.JsonExpr.and( + and.left.fromProto(), + and.right.fromProto(), + ), + Expr_Expr.contains => cedar.JsonExpr.contains( + contains.left.fromProto(), + contains.right.fromProto(), + ), + Expr_Expr.containsAll => cedar.JsonExpr.containsAll( + containsAll.left.fromProto(), + containsAll.right.fromProto(), + ), + Expr_Expr.containsAny => cedar.JsonExpr.containsAny( + containsAny.left.fromProto(), + containsAny.right.fromProto(), + ), + Expr_Expr.equals => cedar.JsonExpr.equals( + equals.left.fromProto(), + equals.right.fromProto(), + ), + Expr_Expr.funcCall => cedar.JsonExpr.funcCall( + cedar.JsonExprOpFunc(funcCall.fn), + [for (final arg in funcCall.args) arg.fromProto()], + ), + Expr_Expr.getAttribute => cedar.JsonExpr.getAttribute( + getAttribute.left.fromProto(), + getAttribute.attr, + ), + Expr_Expr.greaterThan => cedar.JsonExpr.greaterThan( + greaterThan.left.fromProto(), + greaterThan.right.fromProto(), + ), + Expr_Expr.greaterThanOrEquals => cedar.JsonExpr.greaterThanOrEquals( + greaterThanOrEquals.left.fromProto(), + greaterThanOrEquals.right.fromProto(), + ), + Expr_Expr.hasAttribute => cedar.JsonExpr.hasAttribute( + hasAttribute.left.fromProto(), + hasAttribute.attr, + ), + Expr_Expr.ifThenElse => cedar.JsonExpr.ifThenElse( + cond: ifThenElse.if_.fromProto(), + then: ifThenElse.then.fromProto(), + else$: ifThenElse.else_.fromProto(), + ), + Expr_Expr.in_ => cedar.JsonExpr.in$( + in_.left.fromProto(), + in_.right.fromProto(), + ), + Expr_Expr.is_ => cedar.JsonExpr.is$( + is_.left.fromProto(), + is_.entityType, + is_.hasIn_() ? is_.in_.fromProto() : null, + ), + Expr_Expr.lessThan => cedar.JsonExpr.lessThan( + lessThan.left.fromProto(), + lessThan.right.fromProto(), + ), + Expr_Expr.lessThanOrEquals => cedar.JsonExpr.lessThanOrEquals( + lessThanOrEquals.left.fromProto(), + lessThanOrEquals.right.fromProto(), + ), + Expr_Expr.like => cedar.JsonExpr.like( + like.left.fromProto(), + like.pattern, + ), + Expr_Expr.minus => cedar.JsonExpr.minus( + minus.left.fromProto(), + minus.right.fromProto(), + ), + Expr_Expr.neg => cedar.JsonExpr.neg(neg.expr.fromProto()), + Expr_Expr.not => cedar.JsonExpr.not(not.expr.fromProto()), + Expr_Expr.notEquals => cedar.JsonExpr.notEquals( + notEquals.left.fromProto(), + notEquals.right.fromProto(), + ), + Expr_Expr.or => cedar.JsonExpr.or( + or.left.fromProto(), + or.right.fromProto(), + ), + Expr_Expr.plus => cedar.JsonExpr.plus( + plus.left.fromProto(), + plus.right.fromProto(), + ), + Expr_Expr.record => cedar.JsonExpr.record( + record.attributes + .map((key, value) => MapEntry(key, value.fromProto())), + ), + Expr_Expr.set => cedar.JsonExpr.set([ + for (final value in set.expressions) value.fromProto(), + ]), + Expr_Expr.slot => cedar.JsonExpr.slot( + switch (slot.slotId) { + SlotId.SLOT_ID_PRINCIPAL => cedar.CedarSlotId.principal, + SlotId.SLOT_ID_RESOURCE => cedar.CedarSlotId.resource, + SlotId.SLOT_ID_UNSPECIFIED => throw ArgumentError.value( + slot.slotId, + 'slot', + 'SlotId.SLOT_ID_UNSPECIFIED is not allowed', + ), + _ => throw UnimplementedError(), + }, + ), + Expr_Expr.times => cedar.JsonExpr.times( + times.left.fromProto(), + times.right.fromProto(), + ), + Expr_Expr.unknown => cedar.JsonExpr.unknown(unknown.name), + Expr_Expr.value => cedar.JsonExpr.value(value.value.fromProto()), + Expr_Expr.var_ => cedar.JsonExpr.variable( + switch (var_.variable) { + Variable.VARIABLE_ACTION => cedar.CedarVariable.action, + Variable.VARIABLE_CONTEXT => cedar.CedarVariable.context, + Variable.VARIABLE_PRINCIPAL => cedar.CedarVariable.principal, + Variable.VARIABLE_RESOURCE => cedar.CedarVariable.resource, + Variable.VARIABLE_UNSPECIFIED => throw ArgumentError.value( + var_.variable, + 'var_2', + 'Variable.VARIABLE_UNSPECIFIED is not allowed', + ), + _ => throw UnimplementedError(), + }, + ), + Expr_Expr.notSet => throw ArgumentError.value( + whichExpr(), + 'expr', + 'An unset expression is not allowed', + ), + }; +} + +extension ExprToProto on cedar.JsonExpr { + Expr toProto() => switch (this) { + cedar.JsonExprAnd(:final left, :final right) => Expr( + and: ExprAnd( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprContains(:final left, :final right) => Expr( + contains: ExprContains( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprContainsAll(:final left, :final right) => Expr( + containsAll: ExprContainsAll( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprContainsAny(:final left, :final right) => Expr( + containsAny: ExprContainsAny( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprEquals(:final left, :final right) => Expr( + equals: ExprEquals( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprFuncCall(:final fn, :final args) => Expr( + funcCall: ExprFuncCall( + fn: fn.name, + args: [for (final arg in args) arg.toProto()], + ), + ), + cedar.JsonExprGetAttribute(:final left, :final attr) => Expr( + getAttribute: ExprGetAttribute( + left: left.toProto(), + attr: attr, + ), + ), + cedar.JsonExprGreaterThan(:final left, :final right) => Expr( + greaterThan: ExprGreaterThan( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprGreaterThanOrEquals(:final left, :final right) => Expr( + greaterThanOrEquals: ExprGreaterThanOrEquals( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprHasAttribute(:final left, :final attr) => Expr( + hasAttribute: ExprHasAttribute( + left: left.toProto(), + attr: attr, + ), + ), + cedar.JsonExprIfThenElse(:final cond, :final then, :final else$) => + Expr( + ifThenElse: ExprIfThenElse( + if_: cond.toProto(), + then: then.toProto(), + else_: else$.toProto(), + ), + ), + cedar.JsonExprIn(:final left, :final right) => Expr( + in_: ExprIn( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprIs(:final left, :final entityType, :final inExpr) => Expr( + is_: ExprIs( + left: left.toProto(), + entityType: entityType, + in_: inExpr?.toProto(), + ), + ), + cedar.JsonExprLessThan(:final left, :final right) => Expr( + lessThan: ExprLessThan( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprLessThanOrEquals(:final left, :final right) => Expr( + lessThanOrEquals: ExprLessThanOrEquals( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprLike(:final left, :final pattern) => Expr( + like: ExprLike( + left: left.toProto(), + pattern: pattern, + ), + ), + cedar.JsonExprMinus(:final left, :final right) => Expr( + minus: ExprMinus( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprNeg(:final arg) => Expr( + neg: ExprNeg( + expr: arg.toProto(), + ), + ), + cedar.JsonExprNot(:final arg) => Expr( + not: ExprNot( + expr: arg.toProto(), + ), + ), + cedar.JsonExprNotEquals(:final left, :final right) => Expr( + notEquals: ExprNotEquals( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprOr(:final left, :final right) => Expr( + or: ExprOr( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprPlus(:final left, :final right) => Expr( + plus: ExprPlus( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprRecord(:final attributes) => Expr( + record: ExprRecord( + attributes: attributes + .map((key, value) => MapEntry(key, value.toProto())), + ), + ), + cedar.JsonExprSet(:final expressions) => Expr( + set: ExprSet( + expressions: [for (final value in expressions) value.toProto()], + ), + ), + cedar.JsonExprSlot(:final slotId) => Expr( + slot: ExprSlot( + slotId: switch (slotId) { + cedar.CedarSlotId.principal => SlotId.SLOT_ID_PRINCIPAL, + cedar.CedarSlotId.resource => SlotId.SLOT_ID_RESOURCE, + }, + ), + ), + cedar.JsonExprTimes(:final left, :final right) => Expr( + times: ExprTimes( + left: left.toProto(), + right: right.toProto(), + ), + ), + cedar.JsonExprUnknown(:final name) => Expr( + unknown: ExprUnknown( + name: name, + ), + ), + cedar.JsonExprValue(:final value) => Expr( + value: ExprValue( + value: value.toProto(), + ), + ), + cedar.JsonExprVariable(:final variable) => Expr( + var_: ExprVar( + variable: switch (variable) { + cedar.CedarVariable.action => Variable.VARIABLE_ACTION, + cedar.CedarVariable.context => Variable.VARIABLE_CONTEXT, + cedar.CedarVariable.principal => Variable.VARIABLE_PRINCIPAL, + cedar.CedarVariable.resource => Variable.VARIABLE_RESOURCE, + }, + ), + ), + }; +} diff --git a/packages/corks/lib/src/interop/to_proto.dart b/packages/corks/lib/src/interop/to_proto.dart new file mode 100644 index 00000000..9cc8b7af --- /dev/null +++ b/packages/corks/lib/src/interop/to_proto.dart @@ -0,0 +1,5 @@ +import 'package:protobuf/protobuf.dart' as proto; + +abstract interface class ToProto { + M toProto(); +} diff --git a/packages/corks/lib/src/proto/cedar/v3/context.pb.dart b/packages/corks/lib/src/proto/cedar/v3/context.pb.dart new file mode 100644 index 00000000..30a958f6 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/context.pb.dart @@ -0,0 +1,64 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/context.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'value.pb.dart' as $1; + +class Context extends $pb.GeneratedMessage { + factory Context({ + $core.Map<$core.String, $1.Value>? values, + }) { + final $result = create(); + if (values != null) { + $result.values.addAll(values); + } + return $result; + } + Context._() : super(); + factory Context.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Context.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Context', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..m<$core.String, $1.Value>(1, _omitFieldNames ? '' : 'values', entryClassName: 'Context.ValuesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: $1.Value.create, valueDefaultOrMaker: $1.Value.getDefault, packageName: const $pb.PackageName('cedar.v3')) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Context clone() => Context()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Context copyWith(void Function(Context) updates) => super.copyWith((message) => updates(message as Context)) as Context; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Context create() => Context._(); + Context createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Context getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Context? _defaultInstance; + + @$pb.TagNumber(1) + $core.Map<$core.String, $1.Value> get values => $_getMap(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/context.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/context.pbenum.dart new file mode 100644 index 00000000..b9f8c102 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/context.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/context.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/cedar/v3/context.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/context.pbjson.dart new file mode 100644 index 00000000..a1fc81de --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/context.pbjson.dart @@ -0,0 +1,40 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/context.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use contextDescriptor instead') +const Context$json = { + '1': 'Context', + '2': [ + {'1': 'values', '3': 1, '4': 3, '5': 11, '6': '.cedar.v3.Context.ValuesEntry', '10': 'values'}, + ], + '3': [Context_ValuesEntry$json], +}; + +@$core.Deprecated('Use contextDescriptor instead') +const Context_ValuesEntry$json = { + '1': 'ValuesEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Value', '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `Context`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List contextDescriptor = $convert.base64Decode( + 'CgdDb250ZXh0EjUKBnZhbHVlcxgBIAMoCzIdLmNlZGFyLnYzLkNvbnRleHQuVmFsdWVzRW50cn' + 'lSBnZhbHVlcxpKCgtWYWx1ZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEo' + 'CzIPLmNlZGFyLnYzLlZhbHVlUgV2YWx1ZToCOAE='); + diff --git a/packages/corks/lib/src/proto/cedar/v3/context.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/context.pbserver.dart new file mode 100644 index 00000000..34032a02 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/context.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/context.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'context.pb.dart'; + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity.pb.dart b/packages/corks/lib/src/proto/cedar/v3/entity.pb.dart new file mode 100644 index 00000000..f75b7f32 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity.pb.dart @@ -0,0 +1,89 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'entity_id.pb.dart' as $0; +import 'value.pb.dart' as $1; + +class Entity extends $pb.GeneratedMessage { + factory Entity({ + $0.EntityId? uid, + $core.Iterable<$0.EntityId>? parents, + $core.Map<$core.String, $1.Value>? attributes, + }) { + final $result = create(); + if (uid != null) { + $result.uid = uid; + } + if (parents != null) { + $result.parents.addAll(parents); + } + if (attributes != null) { + $result.attributes.addAll(attributes); + } + return $result; + } + Entity._() : super(); + factory Entity.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Entity.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Entity', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM<$0.EntityId>(1, _omitFieldNames ? '' : 'uid', subBuilder: $0.EntityId.create) + ..pc<$0.EntityId>(2, _omitFieldNames ? '' : 'parents', $pb.PbFieldType.PM, subBuilder: $0.EntityId.create) + ..m<$core.String, $1.Value>(3, _omitFieldNames ? '' : 'attributes', entryClassName: 'Entity.AttributesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: $1.Value.create, valueDefaultOrMaker: $1.Value.getDefault, packageName: const $pb.PackageName('cedar.v3')) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Entity clone() => Entity()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Entity copyWith(void Function(Entity) updates) => super.copyWith((message) => updates(message as Entity)) as Entity; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Entity create() => Entity._(); + Entity createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Entity getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Entity? _defaultInstance; + + @$pb.TagNumber(1) + $0.EntityId get uid => $_getN(0); + @$pb.TagNumber(1) + set uid($0.EntityId v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasUid() => $_has(0); + @$pb.TagNumber(1) + void clearUid() => clearField(1); + @$pb.TagNumber(1) + $0.EntityId ensureUid() => $_ensure(0); + + @$pb.TagNumber(2) + $core.List<$0.EntityId> get parents => $_getList(1); + + @$pb.TagNumber(3) + $core.Map<$core.String, $1.Value> get attributes => $_getMap(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/entity.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/entity.pbenum.dart new file mode 100644 index 00000000..da437543 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/entity.pbjson.dart new file mode 100644 index 00000000..3a463ed3 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity.pbjson.dart @@ -0,0 +1,44 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use entityDescriptor instead') +const Entity$json = { + '1': 'Entity', + '2': [ + {'1': 'uid', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.EntityId', '10': 'uid'}, + {'1': 'parents', '3': 2, '4': 3, '5': 11, '6': '.cedar.v3.EntityId', '10': 'parents'}, + {'1': 'attributes', '3': 3, '4': 3, '5': 11, '6': '.cedar.v3.Entity.AttributesEntry', '10': 'attributes'}, + ], + '3': [Entity_AttributesEntry$json], +}; + +@$core.Deprecated('Use entityDescriptor instead') +const Entity_AttributesEntry$json = { + '1': 'AttributesEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Value', '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `Entity`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List entityDescriptor = $convert.base64Decode( + 'CgZFbnRpdHkSJAoDdWlkGAEgASgLMhIuY2VkYXIudjMuRW50aXR5SWRSA3VpZBIsCgdwYXJlbn' + 'RzGAIgAygLMhIuY2VkYXIudjMuRW50aXR5SWRSB3BhcmVudHMSQAoKYXR0cmlidXRlcxgDIAMo' + 'CzIgLmNlZGFyLnYzLkVudGl0eS5BdHRyaWJ1dGVzRW50cnlSCmF0dHJpYnV0ZXMaTgoPQXR0cm' + 'lidXRlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiUKBXZhbHVlGAIgASgLMg8uY2VkYXIudjMu' + 'VmFsdWVSBXZhbHVlOgI4AQ=='); + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/entity.pbserver.dart new file mode 100644 index 00000000..b012dd63 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'entity.pb.dart'; + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity_id.pb.dart b/packages/corks/lib/src/proto/cedar/v3/entity_id.pb.dart new file mode 100644 index 00000000..af1db677 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity_id.pb.dart @@ -0,0 +1,82 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class EntityId extends $pb.GeneratedMessage { + factory EntityId({ + $core.String? type, + $core.String? id, + }) { + final $result = create(); + if (type != null) { + $result.type = type; + } + if (id != null) { + $result.id = id; + } + return $result; + } + EntityId._() : super(); + factory EntityId.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EntityId.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EntityId', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'type') + ..aOS(2, _omitFieldNames ? '' : 'id') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EntityId clone() => EntityId()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EntityId copyWith(void Function(EntityId) updates) => super.copyWith((message) => updates(message as EntityId)) as EntityId; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EntityId create() => EntityId._(); + EntityId createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EntityId getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EntityId? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get type => $_getSZ(0); + @$pb.TagNumber(1) + set type($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasType() => $_has(0); + @$pb.TagNumber(1) + void clearType() => clearField(1); + + @$pb.TagNumber(2) + $core.String get id => $_getSZ(1); + @$pb.TagNumber(2) + set id($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasId() => $_has(1); + @$pb.TagNumber(2) + void clearId() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/entity_id.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbenum.dart new file mode 100644 index 00000000..6c57285a --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity_id.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbjson.dart new file mode 100644 index 00000000..73f0cd15 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbjson.dart @@ -0,0 +1,28 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use entityIdDescriptor instead') +const EntityId$json = { + '1': 'EntityId', + '2': [ + {'1': 'type', '3': 1, '4': 1, '5': 9, '10': 'type'}, + {'1': 'id', '3': 2, '4': 1, '5': 9, '10': 'id'}, + ], +}; + +/// Descriptor for `EntityId`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List entityIdDescriptor = $convert.base64Decode( + 'CghFbnRpdHlJZBISCgR0eXBlGAEgASgJUgR0eXBlEg4KAmlkGAIgASgJUgJpZA=='); + diff --git a/packages/corks/lib/src/proto/cedar/v3/entity_id.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbserver.dart new file mode 100644 index 00000000..c6f0083f --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/entity_id.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/entity_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'entity_id.pb.dart'; + diff --git a/packages/corks/lib/src/proto/cedar/v3/expr.pb.dart b/packages/corks/lib/src/proto/cedar/v3/expr.pb.dart new file mode 100644 index 00000000..fa62bf65 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/expr.pb.dart @@ -0,0 +1,2428 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/expr.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'expr.pbenum.dart'; +import 'value.pb.dart' as $1; + +export 'expr.pbenum.dart'; + +enum Expr_Expr { + value, + var_, + slot, + unknown, + not, + neg, + equals, + notEquals, + in_, + lessThan, + lessThanOrEquals, + greaterThan, + greaterThanOrEquals, + and, + or, + plus, + minus, + times, + contains, + containsAll, + containsAny, + getAttribute, + hasAttribute, + like, + is_, + ifThenElse, + set, + record, + funcCall, + notSet +} + +class Expr extends $pb.GeneratedMessage { + factory Expr({ + ExprValue? value, + ExprVar? var_, + ExprSlot? slot, + ExprUnknown? unknown, + ExprNot? not, + ExprNeg? neg, + ExprEquals? equals, + ExprNotEquals? notEquals, + ExprIn? in_, + ExprLessThan? lessThan, + ExprLessThanOrEquals? lessThanOrEquals, + ExprGreaterThan? greaterThan, + ExprGreaterThanOrEquals? greaterThanOrEquals, + ExprAnd? and, + ExprOr? or, + ExprPlus? plus, + ExprMinus? minus, + ExprTimes? times, + ExprContains? contains, + ExprContainsAll? containsAll, + ExprContainsAny? containsAny, + ExprGetAttribute? getAttribute, + ExprHasAttribute? hasAttribute, + ExprLike? like, + ExprIs? is_, + ExprIfThenElse? ifThenElse, + ExprSet? set, + ExprRecord? record, + ExprFuncCall? funcCall, + }) { + final $result = create(); + if (value != null) { + $result.value = value; + } + if (var_ != null) { + $result.var_ = var_; + } + if (slot != null) { + $result.slot = slot; + } + if (unknown != null) { + $result.unknown = unknown; + } + if (not != null) { + $result.not = not; + } + if (neg != null) { + $result.neg = neg; + } + if (equals != null) { + $result.equals = equals; + } + if (notEquals != null) { + $result.notEquals = notEquals; + } + if (in_ != null) { + $result.in_ = in_; + } + if (lessThan != null) { + $result.lessThan = lessThan; + } + if (lessThanOrEquals != null) { + $result.lessThanOrEquals = lessThanOrEquals; + } + if (greaterThan != null) { + $result.greaterThan = greaterThan; + } + if (greaterThanOrEquals != null) { + $result.greaterThanOrEquals = greaterThanOrEquals; + } + if (and != null) { + $result.and = and; + } + if (or != null) { + $result.or = or; + } + if (plus != null) { + $result.plus = plus; + } + if (minus != null) { + $result.minus = minus; + } + if (times != null) { + $result.times = times; + } + if (contains != null) { + $result.contains = contains; + } + if (containsAll != null) { + $result.containsAll = containsAll; + } + if (containsAny != null) { + $result.containsAny = containsAny; + } + if (getAttribute != null) { + $result.getAttribute = getAttribute; + } + if (hasAttribute != null) { + $result.hasAttribute = hasAttribute; + } + if (like != null) { + $result.like = like; + } + if (is_ != null) { + $result.is_ = is_; + } + if (ifThenElse != null) { + $result.ifThenElse = ifThenElse; + } + if (set != null) { + $result.set = set; + } + if (record != null) { + $result.record = record; + } + if (funcCall != null) { + $result.funcCall = funcCall; + } + return $result; + } + Expr._() : super(); + factory Expr.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Expr.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, Expr_Expr> _Expr_ExprByTag = { + 1 : Expr_Expr.value, + 2 : Expr_Expr.var_, + 3 : Expr_Expr.slot, + 4 : Expr_Expr.unknown, + 5 : Expr_Expr.not, + 6 : Expr_Expr.neg, + 7 : Expr_Expr.equals, + 8 : Expr_Expr.notEquals, + 9 : Expr_Expr.in_, + 10 : Expr_Expr.lessThan, + 11 : Expr_Expr.lessThanOrEquals, + 12 : Expr_Expr.greaterThan, + 13 : Expr_Expr.greaterThanOrEquals, + 14 : Expr_Expr.and, + 15 : Expr_Expr.or, + 16 : Expr_Expr.plus, + 17 : Expr_Expr.minus, + 18 : Expr_Expr.times, + 19 : Expr_Expr.contains, + 20 : Expr_Expr.containsAll, + 21 : Expr_Expr.containsAny, + 22 : Expr_Expr.getAttribute, + 23 : Expr_Expr.hasAttribute, + 24 : Expr_Expr.like, + 25 : Expr_Expr.is_, + 26 : Expr_Expr.ifThenElse, + 27 : Expr_Expr.set, + 28 : Expr_Expr.record, + 29 : Expr_Expr.funcCall, + 0 : Expr_Expr.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Expr', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..oo(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]) + ..aOM(1, _omitFieldNames ? '' : 'value', subBuilder: ExprValue.create) + ..aOM(2, _omitFieldNames ? '' : 'var', subBuilder: ExprVar.create) + ..aOM(3, _omitFieldNames ? '' : 'slot', subBuilder: ExprSlot.create) + ..aOM(4, _omitFieldNames ? '' : 'unknown', subBuilder: ExprUnknown.create) + ..aOM(5, _omitFieldNames ? '' : 'not', subBuilder: ExprNot.create) + ..aOM(6, _omitFieldNames ? '' : 'neg', subBuilder: ExprNeg.create) + ..aOM(7, _omitFieldNames ? '' : 'equals', subBuilder: ExprEquals.create) + ..aOM(8, _omitFieldNames ? '' : 'notEquals', subBuilder: ExprNotEquals.create) + ..aOM(9, _omitFieldNames ? '' : 'in', subBuilder: ExprIn.create) + ..aOM(10, _omitFieldNames ? '' : 'lessThan', subBuilder: ExprLessThan.create) + ..aOM(11, _omitFieldNames ? '' : 'lessThanOrEquals', subBuilder: ExprLessThanOrEquals.create) + ..aOM(12, _omitFieldNames ? '' : 'greaterThan', subBuilder: ExprGreaterThan.create) + ..aOM(13, _omitFieldNames ? '' : 'greaterThanOrEquals', subBuilder: ExprGreaterThanOrEquals.create) + ..aOM(14, _omitFieldNames ? '' : 'and', subBuilder: ExprAnd.create) + ..aOM(15, _omitFieldNames ? '' : 'or', subBuilder: ExprOr.create) + ..aOM(16, _omitFieldNames ? '' : 'plus', subBuilder: ExprPlus.create) + ..aOM(17, _omitFieldNames ? '' : 'minus', subBuilder: ExprMinus.create) + ..aOM(18, _omitFieldNames ? '' : 'times', subBuilder: ExprTimes.create) + ..aOM(19, _omitFieldNames ? '' : 'contains', subBuilder: ExprContains.create) + ..aOM(20, _omitFieldNames ? '' : 'containsAll', subBuilder: ExprContainsAll.create) + ..aOM(21, _omitFieldNames ? '' : 'containsAny', subBuilder: ExprContainsAny.create) + ..aOM(22, _omitFieldNames ? '' : 'getAttribute', subBuilder: ExprGetAttribute.create) + ..aOM(23, _omitFieldNames ? '' : 'hasAttribute', subBuilder: ExprHasAttribute.create) + ..aOM(24, _omitFieldNames ? '' : 'like', subBuilder: ExprLike.create) + ..aOM(25, _omitFieldNames ? '' : 'is', subBuilder: ExprIs.create) + ..aOM(26, _omitFieldNames ? '' : 'ifThenElse', subBuilder: ExprIfThenElse.create) + ..aOM(27, _omitFieldNames ? '' : 'set', subBuilder: ExprSet.create) + ..aOM(28, _omitFieldNames ? '' : 'record', subBuilder: ExprRecord.create) + ..aOM(29, _omitFieldNames ? '' : 'funcCall', subBuilder: ExprFuncCall.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Expr clone() => Expr()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Expr copyWith(void Function(Expr) updates) => super.copyWith((message) => updates(message as Expr)) as Expr; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Expr create() => Expr._(); + Expr createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Expr getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Expr? _defaultInstance; + + Expr_Expr whichExpr() => _Expr_ExprByTag[$_whichOneof(0)]!; + void clearExpr() => clearField($_whichOneof(0)); + + @$pb.TagNumber(1) + ExprValue get value => $_getN(0); + @$pb.TagNumber(1) + set value(ExprValue v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasValue() => $_has(0); + @$pb.TagNumber(1) + void clearValue() => clearField(1); + @$pb.TagNumber(1) + ExprValue ensureValue() => $_ensure(0); + + @$pb.TagNumber(2) + ExprVar get var_ => $_getN(1); + @$pb.TagNumber(2) + set var_(ExprVar v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasVar_() => $_has(1); + @$pb.TagNumber(2) + void clearVar_() => clearField(2); + @$pb.TagNumber(2) + ExprVar ensureVar_() => $_ensure(1); + + @$pb.TagNumber(3) + ExprSlot get slot => $_getN(2); + @$pb.TagNumber(3) + set slot(ExprSlot v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasSlot() => $_has(2); + @$pb.TagNumber(3) + void clearSlot() => clearField(3); + @$pb.TagNumber(3) + ExprSlot ensureSlot() => $_ensure(2); + + @$pb.TagNumber(4) + ExprUnknown get unknown => $_getN(3); + @$pb.TagNumber(4) + set unknown(ExprUnknown v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasUnknown() => $_has(3); + @$pb.TagNumber(4) + void clearUnknown() => clearField(4); + @$pb.TagNumber(4) + ExprUnknown ensureUnknown() => $_ensure(3); + + @$pb.TagNumber(5) + ExprNot get not => $_getN(4); + @$pb.TagNumber(5) + set not(ExprNot v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasNot() => $_has(4); + @$pb.TagNumber(5) + void clearNot() => clearField(5); + @$pb.TagNumber(5) + ExprNot ensureNot() => $_ensure(4); + + @$pb.TagNumber(6) + ExprNeg get neg => $_getN(5); + @$pb.TagNumber(6) + set neg(ExprNeg v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasNeg() => $_has(5); + @$pb.TagNumber(6) + void clearNeg() => clearField(6); + @$pb.TagNumber(6) + ExprNeg ensureNeg() => $_ensure(5); + + @$pb.TagNumber(7) + ExprEquals get equals => $_getN(6); + @$pb.TagNumber(7) + set equals(ExprEquals v) { setField(7, v); } + @$pb.TagNumber(7) + $core.bool hasEquals() => $_has(6); + @$pb.TagNumber(7) + void clearEquals() => clearField(7); + @$pb.TagNumber(7) + ExprEquals ensureEquals() => $_ensure(6); + + @$pb.TagNumber(8) + ExprNotEquals get notEquals => $_getN(7); + @$pb.TagNumber(8) + set notEquals(ExprNotEquals v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasNotEquals() => $_has(7); + @$pb.TagNumber(8) + void clearNotEquals() => clearField(8); + @$pb.TagNumber(8) + ExprNotEquals ensureNotEquals() => $_ensure(7); + + @$pb.TagNumber(9) + ExprIn get in_ => $_getN(8); + @$pb.TagNumber(9) + set in_(ExprIn v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasIn_() => $_has(8); + @$pb.TagNumber(9) + void clearIn_() => clearField(9); + @$pb.TagNumber(9) + ExprIn ensureIn_() => $_ensure(8); + + @$pb.TagNumber(10) + ExprLessThan get lessThan => $_getN(9); + @$pb.TagNumber(10) + set lessThan(ExprLessThan v) { setField(10, v); } + @$pb.TagNumber(10) + $core.bool hasLessThan() => $_has(9); + @$pb.TagNumber(10) + void clearLessThan() => clearField(10); + @$pb.TagNumber(10) + ExprLessThan ensureLessThan() => $_ensure(9); + + @$pb.TagNumber(11) + ExprLessThanOrEquals get lessThanOrEquals => $_getN(10); + @$pb.TagNumber(11) + set lessThanOrEquals(ExprLessThanOrEquals v) { setField(11, v); } + @$pb.TagNumber(11) + $core.bool hasLessThanOrEquals() => $_has(10); + @$pb.TagNumber(11) + void clearLessThanOrEquals() => clearField(11); + @$pb.TagNumber(11) + ExprLessThanOrEquals ensureLessThanOrEquals() => $_ensure(10); + + @$pb.TagNumber(12) + ExprGreaterThan get greaterThan => $_getN(11); + @$pb.TagNumber(12) + set greaterThan(ExprGreaterThan v) { setField(12, v); } + @$pb.TagNumber(12) + $core.bool hasGreaterThan() => $_has(11); + @$pb.TagNumber(12) + void clearGreaterThan() => clearField(12); + @$pb.TagNumber(12) + ExprGreaterThan ensureGreaterThan() => $_ensure(11); + + @$pb.TagNumber(13) + ExprGreaterThanOrEquals get greaterThanOrEquals => $_getN(12); + @$pb.TagNumber(13) + set greaterThanOrEquals(ExprGreaterThanOrEquals v) { setField(13, v); } + @$pb.TagNumber(13) + $core.bool hasGreaterThanOrEquals() => $_has(12); + @$pb.TagNumber(13) + void clearGreaterThanOrEquals() => clearField(13); + @$pb.TagNumber(13) + ExprGreaterThanOrEquals ensureGreaterThanOrEquals() => $_ensure(12); + + @$pb.TagNumber(14) + ExprAnd get and => $_getN(13); + @$pb.TagNumber(14) + set and(ExprAnd v) { setField(14, v); } + @$pb.TagNumber(14) + $core.bool hasAnd() => $_has(13); + @$pb.TagNumber(14) + void clearAnd() => clearField(14); + @$pb.TagNumber(14) + ExprAnd ensureAnd() => $_ensure(13); + + @$pb.TagNumber(15) + ExprOr get or => $_getN(14); + @$pb.TagNumber(15) + set or(ExprOr v) { setField(15, v); } + @$pb.TagNumber(15) + $core.bool hasOr() => $_has(14); + @$pb.TagNumber(15) + void clearOr() => clearField(15); + @$pb.TagNumber(15) + ExprOr ensureOr() => $_ensure(14); + + @$pb.TagNumber(16) + ExprPlus get plus => $_getN(15); + @$pb.TagNumber(16) + set plus(ExprPlus v) { setField(16, v); } + @$pb.TagNumber(16) + $core.bool hasPlus() => $_has(15); + @$pb.TagNumber(16) + void clearPlus() => clearField(16); + @$pb.TagNumber(16) + ExprPlus ensurePlus() => $_ensure(15); + + @$pb.TagNumber(17) + ExprMinus get minus => $_getN(16); + @$pb.TagNumber(17) + set minus(ExprMinus v) { setField(17, v); } + @$pb.TagNumber(17) + $core.bool hasMinus() => $_has(16); + @$pb.TagNumber(17) + void clearMinus() => clearField(17); + @$pb.TagNumber(17) + ExprMinus ensureMinus() => $_ensure(16); + + @$pb.TagNumber(18) + ExprTimes get times => $_getN(17); + @$pb.TagNumber(18) + set times(ExprTimes v) { setField(18, v); } + @$pb.TagNumber(18) + $core.bool hasTimes() => $_has(17); + @$pb.TagNumber(18) + void clearTimes() => clearField(18); + @$pb.TagNumber(18) + ExprTimes ensureTimes() => $_ensure(17); + + @$pb.TagNumber(19) + ExprContains get contains => $_getN(18); + @$pb.TagNumber(19) + set contains(ExprContains v) { setField(19, v); } + @$pb.TagNumber(19) + $core.bool hasContains() => $_has(18); + @$pb.TagNumber(19) + void clearContains() => clearField(19); + @$pb.TagNumber(19) + ExprContains ensureContains() => $_ensure(18); + + @$pb.TagNumber(20) + ExprContainsAll get containsAll => $_getN(19); + @$pb.TagNumber(20) + set containsAll(ExprContainsAll v) { setField(20, v); } + @$pb.TagNumber(20) + $core.bool hasContainsAll() => $_has(19); + @$pb.TagNumber(20) + void clearContainsAll() => clearField(20); + @$pb.TagNumber(20) + ExprContainsAll ensureContainsAll() => $_ensure(19); + + @$pb.TagNumber(21) + ExprContainsAny get containsAny => $_getN(20); + @$pb.TagNumber(21) + set containsAny(ExprContainsAny v) { setField(21, v); } + @$pb.TagNumber(21) + $core.bool hasContainsAny() => $_has(20); + @$pb.TagNumber(21) + void clearContainsAny() => clearField(21); + @$pb.TagNumber(21) + ExprContainsAny ensureContainsAny() => $_ensure(20); + + @$pb.TagNumber(22) + ExprGetAttribute get getAttribute => $_getN(21); + @$pb.TagNumber(22) + set getAttribute(ExprGetAttribute v) { setField(22, v); } + @$pb.TagNumber(22) + $core.bool hasGetAttribute() => $_has(21); + @$pb.TagNumber(22) + void clearGetAttribute() => clearField(22); + @$pb.TagNumber(22) + ExprGetAttribute ensureGetAttribute() => $_ensure(21); + + @$pb.TagNumber(23) + ExprHasAttribute get hasAttribute => $_getN(22); + @$pb.TagNumber(23) + set hasAttribute(ExprHasAttribute v) { setField(23, v); } + @$pb.TagNumber(23) + $core.bool hasHasAttribute() => $_has(22); + @$pb.TagNumber(23) + void clearHasAttribute() => clearField(23); + @$pb.TagNumber(23) + ExprHasAttribute ensureHasAttribute() => $_ensure(22); + + @$pb.TagNumber(24) + ExprLike get like => $_getN(23); + @$pb.TagNumber(24) + set like(ExprLike v) { setField(24, v); } + @$pb.TagNumber(24) + $core.bool hasLike() => $_has(23); + @$pb.TagNumber(24) + void clearLike() => clearField(24); + @$pb.TagNumber(24) + ExprLike ensureLike() => $_ensure(23); + + @$pb.TagNumber(25) + ExprIs get is_ => $_getN(24); + @$pb.TagNumber(25) + set is_(ExprIs v) { setField(25, v); } + @$pb.TagNumber(25) + $core.bool hasIs_() => $_has(24); + @$pb.TagNumber(25) + void clearIs_() => clearField(25); + @$pb.TagNumber(25) + ExprIs ensureIs_() => $_ensure(24); + + @$pb.TagNumber(26) + ExprIfThenElse get ifThenElse => $_getN(25); + @$pb.TagNumber(26) + set ifThenElse(ExprIfThenElse v) { setField(26, v); } + @$pb.TagNumber(26) + $core.bool hasIfThenElse() => $_has(25); + @$pb.TagNumber(26) + void clearIfThenElse() => clearField(26); + @$pb.TagNumber(26) + ExprIfThenElse ensureIfThenElse() => $_ensure(25); + + @$pb.TagNumber(27) + ExprSet get set => $_getN(26); + @$pb.TagNumber(27) + set set(ExprSet v) { setField(27, v); } + @$pb.TagNumber(27) + $core.bool hasSet() => $_has(26); + @$pb.TagNumber(27) + void clearSet() => clearField(27); + @$pb.TagNumber(27) + ExprSet ensureSet() => $_ensure(26); + + @$pb.TagNumber(28) + ExprRecord get record => $_getN(27); + @$pb.TagNumber(28) + set record(ExprRecord v) { setField(28, v); } + @$pb.TagNumber(28) + $core.bool hasRecord() => $_has(27); + @$pb.TagNumber(28) + void clearRecord() => clearField(28); + @$pb.TagNumber(28) + ExprRecord ensureRecord() => $_ensure(27); + + @$pb.TagNumber(29) + ExprFuncCall get funcCall => $_getN(28); + @$pb.TagNumber(29) + set funcCall(ExprFuncCall v) { setField(29, v); } + @$pb.TagNumber(29) + $core.bool hasFuncCall() => $_has(28); + @$pb.TagNumber(29) + void clearFuncCall() => clearField(29); + @$pb.TagNumber(29) + ExprFuncCall ensureFuncCall() => $_ensure(28); +} + +class ExprValue extends $pb.GeneratedMessage { + factory ExprValue({ + $1.Value? value, + }) { + final $result = create(); + if (value != null) { + $result.value = value; + } + return $result; + } + ExprValue._() : super(); + factory ExprValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM<$1.Value>(1, _omitFieldNames ? '' : 'value', subBuilder: $1.Value.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprValue clone() => ExprValue()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprValue copyWith(void Function(ExprValue) updates) => super.copyWith((message) => updates(message as ExprValue)) as ExprValue; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprValue create() => ExprValue._(); + ExprValue createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprValue? _defaultInstance; + + @$pb.TagNumber(1) + $1.Value get value => $_getN(0); + @$pb.TagNumber(1) + set value($1.Value v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasValue() => $_has(0); + @$pb.TagNumber(1) + void clearValue() => clearField(1); + @$pb.TagNumber(1) + $1.Value ensureValue() => $_ensure(0); +} + +class ExprVar extends $pb.GeneratedMessage { + factory ExprVar({ + Variable? variable, + }) { + final $result = create(); + if (variable != null) { + $result.variable = variable; + } + return $result; + } + ExprVar._() : super(); + factory ExprVar.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprVar.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprVar', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'variable', $pb.PbFieldType.OE, defaultOrMaker: Variable.VARIABLE_UNSPECIFIED, valueOf: Variable.valueOf, enumValues: Variable.values) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprVar clone() => ExprVar()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprVar copyWith(void Function(ExprVar) updates) => super.copyWith((message) => updates(message as ExprVar)) as ExprVar; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprVar create() => ExprVar._(); + ExprVar createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprVar getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprVar? _defaultInstance; + + @$pb.TagNumber(1) + Variable get variable => $_getN(0); + @$pb.TagNumber(1) + set variable(Variable v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasVariable() => $_has(0); + @$pb.TagNumber(1) + void clearVariable() => clearField(1); +} + +class ExprSlot extends $pb.GeneratedMessage { + factory ExprSlot({ + SlotId? slotId, + }) { + final $result = create(); + if (slotId != null) { + $result.slotId = slotId; + } + return $result; + } + ExprSlot._() : super(); + factory ExprSlot.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprSlot.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprSlot', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'slotId', $pb.PbFieldType.OE, defaultOrMaker: SlotId.SLOT_ID_UNSPECIFIED, valueOf: SlotId.valueOf, enumValues: SlotId.values) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprSlot clone() => ExprSlot()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprSlot copyWith(void Function(ExprSlot) updates) => super.copyWith((message) => updates(message as ExprSlot)) as ExprSlot; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprSlot create() => ExprSlot._(); + ExprSlot createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprSlot getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprSlot? _defaultInstance; + + @$pb.TagNumber(1) + SlotId get slotId => $_getN(0); + @$pb.TagNumber(1) + set slotId(SlotId v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasSlotId() => $_has(0); + @$pb.TagNumber(1) + void clearSlotId() => clearField(1); +} + +class ExprUnknown extends $pb.GeneratedMessage { + factory ExprUnknown({ + $core.String? name, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + return $result; + } + ExprUnknown._() : super(); + factory ExprUnknown.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprUnknown.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprUnknown', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprUnknown clone() => ExprUnknown()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprUnknown copyWith(void Function(ExprUnknown) updates) => super.copyWith((message) => updates(message as ExprUnknown)) as ExprUnknown; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprUnknown create() => ExprUnknown._(); + ExprUnknown createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprUnknown getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprUnknown? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); +} + +class ExprNot extends $pb.GeneratedMessage { + factory ExprNot({ + Expr? expr, + }) { + final $result = create(); + if (expr != null) { + $result.expr = expr; + } + return $result; + } + ExprNot._() : super(); + factory ExprNot.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprNot.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprNot', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'expr', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprNot clone() => ExprNot()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprNot copyWith(void Function(ExprNot) updates) => super.copyWith((message) => updates(message as ExprNot)) as ExprNot; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprNot create() => ExprNot._(); + ExprNot createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprNot getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprNot? _defaultInstance; + + @$pb.TagNumber(1) + Expr get expr => $_getN(0); + @$pb.TagNumber(1) + set expr(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasExpr() => $_has(0); + @$pb.TagNumber(1) + void clearExpr() => clearField(1); + @$pb.TagNumber(1) + Expr ensureExpr() => $_ensure(0); +} + +class ExprNeg extends $pb.GeneratedMessage { + factory ExprNeg({ + Expr? expr, + }) { + final $result = create(); + if (expr != null) { + $result.expr = expr; + } + return $result; + } + ExprNeg._() : super(); + factory ExprNeg.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprNeg.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprNeg', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'expr', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprNeg clone() => ExprNeg()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprNeg copyWith(void Function(ExprNeg) updates) => super.copyWith((message) => updates(message as ExprNeg)) as ExprNeg; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprNeg create() => ExprNeg._(); + ExprNeg createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprNeg getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprNeg? _defaultInstance; + + @$pb.TagNumber(1) + Expr get expr => $_getN(0); + @$pb.TagNumber(1) + set expr(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasExpr() => $_has(0); + @$pb.TagNumber(1) + void clearExpr() => clearField(1); + @$pb.TagNumber(1) + Expr ensureExpr() => $_ensure(0); +} + +class ExprEquals extends $pb.GeneratedMessage { + factory ExprEquals({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprEquals._() : super(); + factory ExprEquals.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprEquals.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprEquals', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprEquals clone() => ExprEquals()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprEquals copyWith(void Function(ExprEquals) updates) => super.copyWith((message) => updates(message as ExprEquals)) as ExprEquals; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprEquals create() => ExprEquals._(); + ExprEquals createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprEquals getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprEquals? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprNotEquals extends $pb.GeneratedMessage { + factory ExprNotEquals({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprNotEquals._() : super(); + factory ExprNotEquals.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprNotEquals.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprNotEquals', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprNotEquals clone() => ExprNotEquals()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprNotEquals copyWith(void Function(ExprNotEquals) updates) => super.copyWith((message) => updates(message as ExprNotEquals)) as ExprNotEquals; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprNotEquals create() => ExprNotEquals._(); + ExprNotEquals createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprNotEquals getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprNotEquals? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprIn extends $pb.GeneratedMessage { + factory ExprIn({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprIn._() : super(); + factory ExprIn.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprIn.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprIn', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprIn clone() => ExprIn()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprIn copyWith(void Function(ExprIn) updates) => super.copyWith((message) => updates(message as ExprIn)) as ExprIn; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprIn create() => ExprIn._(); + ExprIn createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprIn getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprIn? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprLessThan extends $pb.GeneratedMessage { + factory ExprLessThan({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprLessThan._() : super(); + factory ExprLessThan.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprLessThan.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprLessThan', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprLessThan clone() => ExprLessThan()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprLessThan copyWith(void Function(ExprLessThan) updates) => super.copyWith((message) => updates(message as ExprLessThan)) as ExprLessThan; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprLessThan create() => ExprLessThan._(); + ExprLessThan createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprLessThan getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprLessThan? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprLessThanOrEquals extends $pb.GeneratedMessage { + factory ExprLessThanOrEquals({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprLessThanOrEquals._() : super(); + factory ExprLessThanOrEquals.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprLessThanOrEquals.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprLessThanOrEquals', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprLessThanOrEquals clone() => ExprLessThanOrEquals()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprLessThanOrEquals copyWith(void Function(ExprLessThanOrEquals) updates) => super.copyWith((message) => updates(message as ExprLessThanOrEquals)) as ExprLessThanOrEquals; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprLessThanOrEquals create() => ExprLessThanOrEquals._(); + ExprLessThanOrEquals createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprLessThanOrEquals getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprLessThanOrEquals? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprGreaterThan extends $pb.GeneratedMessage { + factory ExprGreaterThan({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprGreaterThan._() : super(); + factory ExprGreaterThan.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprGreaterThan.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprGreaterThan', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprGreaterThan clone() => ExprGreaterThan()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprGreaterThan copyWith(void Function(ExprGreaterThan) updates) => super.copyWith((message) => updates(message as ExprGreaterThan)) as ExprGreaterThan; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprGreaterThan create() => ExprGreaterThan._(); + ExprGreaterThan createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprGreaterThan getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprGreaterThan? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprGreaterThanOrEquals extends $pb.GeneratedMessage { + factory ExprGreaterThanOrEquals({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprGreaterThanOrEquals._() : super(); + factory ExprGreaterThanOrEquals.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprGreaterThanOrEquals.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprGreaterThanOrEquals', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprGreaterThanOrEquals clone() => ExprGreaterThanOrEquals()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprGreaterThanOrEquals copyWith(void Function(ExprGreaterThanOrEquals) updates) => super.copyWith((message) => updates(message as ExprGreaterThanOrEquals)) as ExprGreaterThanOrEquals; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprGreaterThanOrEquals create() => ExprGreaterThanOrEquals._(); + ExprGreaterThanOrEquals createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprGreaterThanOrEquals getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprGreaterThanOrEquals? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprAnd extends $pb.GeneratedMessage { + factory ExprAnd({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprAnd._() : super(); + factory ExprAnd.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprAnd.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprAnd', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprAnd clone() => ExprAnd()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprAnd copyWith(void Function(ExprAnd) updates) => super.copyWith((message) => updates(message as ExprAnd)) as ExprAnd; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprAnd create() => ExprAnd._(); + ExprAnd createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprAnd getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprAnd? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprOr extends $pb.GeneratedMessage { + factory ExprOr({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprOr._() : super(); + factory ExprOr.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprOr.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprOr', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprOr clone() => ExprOr()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprOr copyWith(void Function(ExprOr) updates) => super.copyWith((message) => updates(message as ExprOr)) as ExprOr; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprOr create() => ExprOr._(); + ExprOr createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprOr getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprOr? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprPlus extends $pb.GeneratedMessage { + factory ExprPlus({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprPlus._() : super(); + factory ExprPlus.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprPlus.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprPlus', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprPlus clone() => ExprPlus()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprPlus copyWith(void Function(ExprPlus) updates) => super.copyWith((message) => updates(message as ExprPlus)) as ExprPlus; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprPlus create() => ExprPlus._(); + ExprPlus createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprPlus getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprPlus? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprMinus extends $pb.GeneratedMessage { + factory ExprMinus({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprMinus._() : super(); + factory ExprMinus.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprMinus.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprMinus', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprMinus clone() => ExprMinus()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprMinus copyWith(void Function(ExprMinus) updates) => super.copyWith((message) => updates(message as ExprMinus)) as ExprMinus; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprMinus create() => ExprMinus._(); + ExprMinus createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprMinus getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprMinus? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprTimes extends $pb.GeneratedMessage { + factory ExprTimes({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprTimes._() : super(); + factory ExprTimes.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprTimes.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprTimes', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprTimes clone() => ExprTimes()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprTimes copyWith(void Function(ExprTimes) updates) => super.copyWith((message) => updates(message as ExprTimes)) as ExprTimes; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprTimes create() => ExprTimes._(); + ExprTimes createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprTimes getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprTimes? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprContains extends $pb.GeneratedMessage { + factory ExprContains({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprContains._() : super(); + factory ExprContains.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprContains.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprContains', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprContains clone() => ExprContains()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprContains copyWith(void Function(ExprContains) updates) => super.copyWith((message) => updates(message as ExprContains)) as ExprContains; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprContains create() => ExprContains._(); + ExprContains createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprContains getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprContains? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprContainsAll extends $pb.GeneratedMessage { + factory ExprContainsAll({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprContainsAll._() : super(); + factory ExprContainsAll.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprContainsAll.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprContainsAll', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprContainsAll clone() => ExprContainsAll()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprContainsAll copyWith(void Function(ExprContainsAll) updates) => super.copyWith((message) => updates(message as ExprContainsAll)) as ExprContainsAll; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprContainsAll create() => ExprContainsAll._(); + ExprContainsAll createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprContainsAll getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprContainsAll? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprContainsAny extends $pb.GeneratedMessage { + factory ExprContainsAny({ + Expr? left, + Expr? right, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (right != null) { + $result.right = right; + } + return $result; + } + ExprContainsAny._() : super(); + factory ExprContainsAny.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprContainsAny.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprContainsAny', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'right', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprContainsAny clone() => ExprContainsAny()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprContainsAny copyWith(void Function(ExprContainsAny) updates) => super.copyWith((message) => updates(message as ExprContainsAny)) as ExprContainsAny; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprContainsAny create() => ExprContainsAny._(); + ExprContainsAny createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprContainsAny getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprContainsAny? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get right => $_getN(1); + @$pb.TagNumber(2) + set right(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasRight() => $_has(1); + @$pb.TagNumber(2) + void clearRight() => clearField(2); + @$pb.TagNumber(2) + Expr ensureRight() => $_ensure(1); +} + +class ExprGetAttribute extends $pb.GeneratedMessage { + factory ExprGetAttribute({ + Expr? left, + $core.String? attr, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (attr != null) { + $result.attr = attr; + } + return $result; + } + ExprGetAttribute._() : super(); + factory ExprGetAttribute.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprGetAttribute.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprGetAttribute', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOS(2, _omitFieldNames ? '' : 'attr') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprGetAttribute clone() => ExprGetAttribute()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprGetAttribute copyWith(void Function(ExprGetAttribute) updates) => super.copyWith((message) => updates(message as ExprGetAttribute)) as ExprGetAttribute; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprGetAttribute create() => ExprGetAttribute._(); + ExprGetAttribute createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprGetAttribute getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprGetAttribute? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + $core.String get attr => $_getSZ(1); + @$pb.TagNumber(2) + set attr($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasAttr() => $_has(1); + @$pb.TagNumber(2) + void clearAttr() => clearField(2); +} + +class ExprHasAttribute extends $pb.GeneratedMessage { + factory ExprHasAttribute({ + Expr? left, + $core.String? attr, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (attr != null) { + $result.attr = attr; + } + return $result; + } + ExprHasAttribute._() : super(); + factory ExprHasAttribute.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprHasAttribute.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprHasAttribute', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOS(2, _omitFieldNames ? '' : 'attr') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprHasAttribute clone() => ExprHasAttribute()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprHasAttribute copyWith(void Function(ExprHasAttribute) updates) => super.copyWith((message) => updates(message as ExprHasAttribute)) as ExprHasAttribute; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprHasAttribute create() => ExprHasAttribute._(); + ExprHasAttribute createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprHasAttribute getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprHasAttribute? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + $core.String get attr => $_getSZ(1); + @$pb.TagNumber(2) + set attr($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasAttr() => $_has(1); + @$pb.TagNumber(2) + void clearAttr() => clearField(2); +} + +class ExprLike extends $pb.GeneratedMessage { + factory ExprLike({ + Expr? left, + $core.String? pattern, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (pattern != null) { + $result.pattern = pattern; + } + return $result; + } + ExprLike._() : super(); + factory ExprLike.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprLike.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprLike', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOS(2, _omitFieldNames ? '' : 'pattern') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprLike clone() => ExprLike()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprLike copyWith(void Function(ExprLike) updates) => super.copyWith((message) => updates(message as ExprLike)) as ExprLike; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprLike create() => ExprLike._(); + ExprLike createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprLike getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprLike? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + $core.String get pattern => $_getSZ(1); + @$pb.TagNumber(2) + set pattern($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPattern() => $_has(1); + @$pb.TagNumber(2) + void clearPattern() => clearField(2); +} + +class ExprIs extends $pb.GeneratedMessage { + factory ExprIs({ + Expr? left, + $core.String? entityType, + Expr? in_, + }) { + final $result = create(); + if (left != null) { + $result.left = left; + } + if (entityType != null) { + $result.entityType = entityType; + } + if (in_ != null) { + $result.in_ = in_; + } + return $result; + } + ExprIs._() : super(); + factory ExprIs.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprIs.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprIs', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'left', subBuilder: Expr.create) + ..aOS(2, _omitFieldNames ? '' : 'entityType') + ..aOM(3, _omitFieldNames ? '' : 'in', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprIs clone() => ExprIs()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprIs copyWith(void Function(ExprIs) updates) => super.copyWith((message) => updates(message as ExprIs)) as ExprIs; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprIs create() => ExprIs._(); + ExprIs createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprIs getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprIs? _defaultInstance; + + @$pb.TagNumber(1) + Expr get left => $_getN(0); + @$pb.TagNumber(1) + set left(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasLeft() => $_has(0); + @$pb.TagNumber(1) + void clearLeft() => clearField(1); + @$pb.TagNumber(1) + Expr ensureLeft() => $_ensure(0); + + @$pb.TagNumber(2) + $core.String get entityType => $_getSZ(1); + @$pb.TagNumber(2) + set entityType($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasEntityType() => $_has(1); + @$pb.TagNumber(2) + void clearEntityType() => clearField(2); + + @$pb.TagNumber(3) + Expr get in_ => $_getN(2); + @$pb.TagNumber(3) + set in_(Expr v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasIn_() => $_has(2); + @$pb.TagNumber(3) + void clearIn_() => clearField(3); + @$pb.TagNumber(3) + Expr ensureIn_() => $_ensure(2); +} + +class ExprIfThenElse extends $pb.GeneratedMessage { + factory ExprIfThenElse({ + Expr? if_, + Expr? then, + Expr? else_, + }) { + final $result = create(); + if (if_ != null) { + $result.if_ = if_; + } + if (then != null) { + $result.then = then; + } + if (else_ != null) { + $result.else_ = else_; + } + return $result; + } + ExprIfThenElse._() : super(); + factory ExprIfThenElse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprIfThenElse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprIfThenElse', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'if', subBuilder: Expr.create) + ..aOM(2, _omitFieldNames ? '' : 'then', subBuilder: Expr.create) + ..aOM(3, _omitFieldNames ? '' : 'else', subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprIfThenElse clone() => ExprIfThenElse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprIfThenElse copyWith(void Function(ExprIfThenElse) updates) => super.copyWith((message) => updates(message as ExprIfThenElse)) as ExprIfThenElse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprIfThenElse create() => ExprIfThenElse._(); + ExprIfThenElse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprIfThenElse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprIfThenElse? _defaultInstance; + + @$pb.TagNumber(1) + Expr get if_ => $_getN(0); + @$pb.TagNumber(1) + set if_(Expr v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasIf_() => $_has(0); + @$pb.TagNumber(1) + void clearIf_() => clearField(1); + @$pb.TagNumber(1) + Expr ensureIf_() => $_ensure(0); + + @$pb.TagNumber(2) + Expr get then => $_getN(1); + @$pb.TagNumber(2) + set then(Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasThen() => $_has(1); + @$pb.TagNumber(2) + void clearThen() => clearField(2); + @$pb.TagNumber(2) + Expr ensureThen() => $_ensure(1); + + @$pb.TagNumber(3) + Expr get else_ => $_getN(2); + @$pb.TagNumber(3) + set else_(Expr v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasElse_() => $_has(2); + @$pb.TagNumber(3) + void clearElse_() => clearField(3); + @$pb.TagNumber(3) + Expr ensureElse_() => $_ensure(2); +} + +class ExprSet extends $pb.GeneratedMessage { + factory ExprSet({ + $core.Iterable? expressions, + }) { + final $result = create(); + if (expressions != null) { + $result.expressions.addAll(expressions); + } + return $result; + } + ExprSet._() : super(); + factory ExprSet.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprSet.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprSet', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'expressions', $pb.PbFieldType.PM, subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprSet clone() => ExprSet()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprSet copyWith(void Function(ExprSet) updates) => super.copyWith((message) => updates(message as ExprSet)) as ExprSet; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprSet create() => ExprSet._(); + ExprSet createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprSet getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprSet? _defaultInstance; + + @$pb.TagNumber(1) + $core.List get expressions => $_getList(0); +} + +class ExprRecord extends $pb.GeneratedMessage { + factory ExprRecord({ + $core.Map<$core.String, Expr>? attributes, + }) { + final $result = create(); + if (attributes != null) { + $result.attributes.addAll(attributes); + } + return $result; + } + ExprRecord._() : super(); + factory ExprRecord.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprRecord.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprRecord', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..m<$core.String, Expr>(1, _omitFieldNames ? '' : 'attributes', entryClassName: 'ExprRecord.AttributesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: Expr.create, valueDefaultOrMaker: Expr.getDefault, packageName: const $pb.PackageName('cedar.v3')) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprRecord clone() => ExprRecord()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprRecord copyWith(void Function(ExprRecord) updates) => super.copyWith((message) => updates(message as ExprRecord)) as ExprRecord; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprRecord create() => ExprRecord._(); + ExprRecord createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprRecord getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprRecord? _defaultInstance; + + @$pb.TagNumber(1) + $core.Map<$core.String, Expr> get attributes => $_getMap(0); +} + +class ExprFuncCall extends $pb.GeneratedMessage { + factory ExprFuncCall({ + $core.String? fn, + $core.Iterable? args, + }) { + final $result = create(); + if (fn != null) { + $result.fn = fn; + } + if (args != null) { + $result.args.addAll(args); + } + return $result; + } + ExprFuncCall._() : super(); + factory ExprFuncCall.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExprFuncCall.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExprFuncCall', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'fn') + ..pc(2, _omitFieldNames ? '' : 'args', $pb.PbFieldType.PM, subBuilder: Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExprFuncCall clone() => ExprFuncCall()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExprFuncCall copyWith(void Function(ExprFuncCall) updates) => super.copyWith((message) => updates(message as ExprFuncCall)) as ExprFuncCall; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExprFuncCall create() => ExprFuncCall._(); + ExprFuncCall createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExprFuncCall getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExprFuncCall? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get fn => $_getSZ(0); + @$pb.TagNumber(1) + set fn($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasFn() => $_has(0); + @$pb.TagNumber(1) + void clearFn() => clearField(1); + + @$pb.TagNumber(2) + $core.List get args => $_getList(1); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/expr.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/expr.pbenum.dart new file mode 100644 index 00000000..06035e2d --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/expr.pbenum.dart @@ -0,0 +1,55 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/expr.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class Variable extends $pb.ProtobufEnum { + static const Variable VARIABLE_UNSPECIFIED = Variable._(0, _omitEnumNames ? '' : 'VARIABLE_UNSPECIFIED'); + static const Variable VARIABLE_PRINCIPAL = Variable._(1, _omitEnumNames ? '' : 'VARIABLE_PRINCIPAL'); + static const Variable VARIABLE_ACTION = Variable._(2, _omitEnumNames ? '' : 'VARIABLE_ACTION'); + static const Variable VARIABLE_RESOURCE = Variable._(3, _omitEnumNames ? '' : 'VARIABLE_RESOURCE'); + static const Variable VARIABLE_CONTEXT = Variable._(4, _omitEnumNames ? '' : 'VARIABLE_CONTEXT'); + + static const $core.List values = [ + VARIABLE_UNSPECIFIED, + VARIABLE_PRINCIPAL, + VARIABLE_ACTION, + VARIABLE_RESOURCE, + VARIABLE_CONTEXT, + ]; + + static final $core.Map<$core.int, Variable> _byValue = $pb.ProtobufEnum.initByValue(values); + static Variable? valueOf($core.int value) => _byValue[value]; + + const Variable._($core.int v, $core.String n) : super(v, n); +} + +class SlotId extends $pb.ProtobufEnum { + static const SlotId SLOT_ID_UNSPECIFIED = SlotId._(0, _omitEnumNames ? '' : 'SLOT_ID_UNSPECIFIED'); + static const SlotId SLOT_ID_PRINCIPAL = SlotId._(1, _omitEnumNames ? '' : 'SLOT_ID_PRINCIPAL'); + static const SlotId SLOT_ID_RESOURCE = SlotId._(2, _omitEnumNames ? '' : 'SLOT_ID_RESOURCE'); + + static const $core.List values = [ + SLOT_ID_UNSPECIFIED, + SLOT_ID_PRINCIPAL, + SLOT_ID_RESOURCE, + ]; + + static final $core.Map<$core.int, SlotId> _byValue = $pb.ProtobufEnum.initByValue(values); + static SlotId? valueOf($core.int value) => _byValue[value]; + + const SlotId._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/expr.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/expr.pbjson.dart new file mode 100644 index 00000000..f78334eb --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/expr.pbjson.dart @@ -0,0 +1,583 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/expr.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use variableDescriptor instead') +const Variable$json = { + '1': 'Variable', + '2': [ + {'1': 'VARIABLE_UNSPECIFIED', '2': 0}, + {'1': 'VARIABLE_PRINCIPAL', '2': 1}, + {'1': 'VARIABLE_ACTION', '2': 2}, + {'1': 'VARIABLE_RESOURCE', '2': 3}, + {'1': 'VARIABLE_CONTEXT', '2': 4}, + ], +}; + +/// Descriptor for `Variable`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List variableDescriptor = $convert.base64Decode( + 'CghWYXJpYWJsZRIYChRWQVJJQUJMRV9VTlNQRUNJRklFRBAAEhYKElZBUklBQkxFX1BSSU5DSV' + 'BBTBABEhMKD1ZBUklBQkxFX0FDVElPThACEhUKEVZBUklBQkxFX1JFU09VUkNFEAMSFAoQVkFS' + 'SUFCTEVfQ09OVEVYVBAE'); + +@$core.Deprecated('Use slotIdDescriptor instead') +const SlotId$json = { + '1': 'SlotId', + '2': [ + {'1': 'SLOT_ID_UNSPECIFIED', '2': 0}, + {'1': 'SLOT_ID_PRINCIPAL', '2': 1}, + {'1': 'SLOT_ID_RESOURCE', '2': 2}, + ], +}; + +/// Descriptor for `SlotId`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List slotIdDescriptor = $convert.base64Decode( + 'CgZTbG90SWQSFwoTU0xPVF9JRF9VTlNQRUNJRklFRBAAEhUKEVNMT1RfSURfUFJJTkNJUEFMEA' + 'ESFAoQU0xPVF9JRF9SRVNPVVJDRRAC'); + +@$core.Deprecated('Use exprDescriptor instead') +const Expr$json = { + '1': 'Expr', + '2': [ + {'1': 'value', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.ExprValue', '9': 0, '10': 'value'}, + { + '1': 'var', + '3': 2, + '4': 1, + '5': 11, + '6': '.cedar.v3.ExprVar', + '8': {'28700919': 'var_'}, + '9': 0, + '10': 'var', + }, + {'1': 'slot', '3': 3, '4': 1, '5': 11, '6': '.cedar.v3.ExprSlot', '9': 0, '10': 'slot'}, + {'1': 'unknown', '3': 4, '4': 1, '5': 11, '6': '.cedar.v3.ExprUnknown', '9': 0, '10': 'unknown'}, + {'1': 'not', '3': 5, '4': 1, '5': 11, '6': '.cedar.v3.ExprNot', '9': 0, '10': 'not'}, + {'1': 'neg', '3': 6, '4': 1, '5': 11, '6': '.cedar.v3.ExprNeg', '9': 0, '10': 'neg'}, + {'1': 'equals', '3': 7, '4': 1, '5': 11, '6': '.cedar.v3.ExprEquals', '9': 0, '10': 'equals'}, + {'1': 'not_equals', '3': 8, '4': 1, '5': 11, '6': '.cedar.v3.ExprNotEquals', '9': 0, '10': 'notEquals'}, + { + '1': 'in', + '3': 9, + '4': 1, + '5': 11, + '6': '.cedar.v3.ExprIn', + '8': {'28700919': 'in_'}, + '9': 0, + '10': 'in', + }, + {'1': 'less_than', '3': 10, '4': 1, '5': 11, '6': '.cedar.v3.ExprLessThan', '9': 0, '10': 'lessThan'}, + {'1': 'less_than_or_equals', '3': 11, '4': 1, '5': 11, '6': '.cedar.v3.ExprLessThanOrEquals', '9': 0, '10': 'lessThanOrEquals'}, + {'1': 'greater_than', '3': 12, '4': 1, '5': 11, '6': '.cedar.v3.ExprGreaterThan', '9': 0, '10': 'greaterThan'}, + {'1': 'greater_than_or_equals', '3': 13, '4': 1, '5': 11, '6': '.cedar.v3.ExprGreaterThanOrEquals', '9': 0, '10': 'greaterThanOrEquals'}, + {'1': 'and', '3': 14, '4': 1, '5': 11, '6': '.cedar.v3.ExprAnd', '9': 0, '10': 'and'}, + {'1': 'or', '3': 15, '4': 1, '5': 11, '6': '.cedar.v3.ExprOr', '9': 0, '10': 'or'}, + {'1': 'plus', '3': 16, '4': 1, '5': 11, '6': '.cedar.v3.ExprPlus', '9': 0, '10': 'plus'}, + {'1': 'minus', '3': 17, '4': 1, '5': 11, '6': '.cedar.v3.ExprMinus', '9': 0, '10': 'minus'}, + {'1': 'times', '3': 18, '4': 1, '5': 11, '6': '.cedar.v3.ExprTimes', '9': 0, '10': 'times'}, + {'1': 'contains', '3': 19, '4': 1, '5': 11, '6': '.cedar.v3.ExprContains', '9': 0, '10': 'contains'}, + {'1': 'contains_all', '3': 20, '4': 1, '5': 11, '6': '.cedar.v3.ExprContainsAll', '9': 0, '10': 'containsAll'}, + {'1': 'contains_any', '3': 21, '4': 1, '5': 11, '6': '.cedar.v3.ExprContainsAny', '9': 0, '10': 'containsAny'}, + {'1': 'get_attribute', '3': 22, '4': 1, '5': 11, '6': '.cedar.v3.ExprGetAttribute', '9': 0, '10': 'getAttribute'}, + {'1': 'has_attribute', '3': 23, '4': 1, '5': 11, '6': '.cedar.v3.ExprHasAttribute', '9': 0, '10': 'hasAttribute'}, + {'1': 'like', '3': 24, '4': 1, '5': 11, '6': '.cedar.v3.ExprLike', '9': 0, '10': 'like'}, + { + '1': 'is', + '3': 25, + '4': 1, + '5': 11, + '6': '.cedar.v3.ExprIs', + '8': {'28700919': 'is_'}, + '9': 0, + '10': 'is', + }, + {'1': 'if_then_else', '3': 26, '4': 1, '5': 11, '6': '.cedar.v3.ExprIfThenElse', '9': 0, '10': 'ifThenElse'}, + {'1': 'set', '3': 27, '4': 1, '5': 11, '6': '.cedar.v3.ExprSet', '9': 0, '10': 'set'}, + {'1': 'record', '3': 28, '4': 1, '5': 11, '6': '.cedar.v3.ExprRecord', '9': 0, '10': 'record'}, + {'1': 'func_call', '3': 29, '4': 1, '5': 11, '6': '.cedar.v3.ExprFuncCall', '9': 0, '10': 'funcCall'}, + ], + '8': [ + {'1': 'expr'}, + ], +}; + +/// Descriptor for `Expr`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprDescriptor = $convert.base64Decode( + 'CgRFeHByEisKBXZhbHVlGAEgASgLMhMuY2VkYXIudjMuRXhwclZhbHVlSABSBXZhbHVlEjAKA3' + 'ZhchgCIAEoCzIRLmNlZGFyLnYzLkV4cHJWYXJCCbqPvm0EdmFyX0gAUgN2YXISKAoEc2xvdBgD' + 'IAEoCzISLmNlZGFyLnYzLkV4cHJTbG90SABSBHNsb3QSMQoHdW5rbm93bhgEIAEoCzIVLmNlZG' + 'FyLnYzLkV4cHJVbmtub3duSABSB3Vua25vd24SJQoDbm90GAUgASgLMhEuY2VkYXIudjMuRXhw' + 'ck5vdEgAUgNub3QSJQoDbmVnGAYgASgLMhEuY2VkYXIudjMuRXhwck5lZ0gAUgNuZWcSLgoGZX' + 'F1YWxzGAcgASgLMhQuY2VkYXIudjMuRXhwckVxdWFsc0gAUgZlcXVhbHMSOAoKbm90X2VxdWFs' + 'cxgIIAEoCzIXLmNlZGFyLnYzLkV4cHJOb3RFcXVhbHNIAFIJbm90RXF1YWxzEiwKAmluGAkgAS' + 'gLMhAuY2VkYXIudjMuRXhwckluQgi6j75tA2luX0gAUgJpbhI1CglsZXNzX3RoYW4YCiABKAsy' + 'Fi5jZWRhci52My5FeHByTGVzc1RoYW5IAFIIbGVzc1RoYW4STwoTbGVzc190aGFuX29yX2VxdW' + 'FscxgLIAEoCzIeLmNlZGFyLnYzLkV4cHJMZXNzVGhhbk9yRXF1YWxzSABSEGxlc3NUaGFuT3JF' + 'cXVhbHMSPgoMZ3JlYXRlcl90aGFuGAwgASgLMhkuY2VkYXIudjMuRXhwckdyZWF0ZXJUaGFuSA' + 'BSC2dyZWF0ZXJUaGFuElgKFmdyZWF0ZXJfdGhhbl9vcl9lcXVhbHMYDSABKAsyIS5jZWRhci52' + 'My5FeHByR3JlYXRlclRoYW5PckVxdWFsc0gAUhNncmVhdGVyVGhhbk9yRXF1YWxzEiUKA2FuZB' + 'gOIAEoCzIRLmNlZGFyLnYzLkV4cHJBbmRIAFIDYW5kEiIKAm9yGA8gASgLMhAuY2VkYXIudjMu' + 'RXhwck9ySABSAm9yEigKBHBsdXMYECABKAsyEi5jZWRhci52My5FeHByUGx1c0gAUgRwbHVzEi' + 'sKBW1pbnVzGBEgASgLMhMuY2VkYXIudjMuRXhwck1pbnVzSABSBW1pbnVzEisKBXRpbWVzGBIg' + 'ASgLMhMuY2VkYXIudjMuRXhwclRpbWVzSABSBXRpbWVzEjQKCGNvbnRhaW5zGBMgASgLMhYuY2' + 'VkYXIudjMuRXhwckNvbnRhaW5zSABSCGNvbnRhaW5zEj4KDGNvbnRhaW5zX2FsbBgUIAEoCzIZ' + 'LmNlZGFyLnYzLkV4cHJDb250YWluc0FsbEgAUgtjb250YWluc0FsbBI+Cgxjb250YWluc19hbn' + 'kYFSABKAsyGS5jZWRhci52My5FeHByQ29udGFpbnNBbnlIAFILY29udGFpbnNBbnkSQQoNZ2V0' + 'X2F0dHJpYnV0ZRgWIAEoCzIaLmNlZGFyLnYzLkV4cHJHZXRBdHRyaWJ1dGVIAFIMZ2V0QXR0cm' + 'lidXRlEkEKDWhhc19hdHRyaWJ1dGUYFyABKAsyGi5jZWRhci52My5FeHBySGFzQXR0cmlidXRl' + 'SABSDGhhc0F0dHJpYnV0ZRIoCgRsaWtlGBggASgLMhIuY2VkYXIudjMuRXhwckxpa2VIAFIEbG' + 'lrZRIsCgJpcxgZIAEoCzIQLmNlZGFyLnYzLkV4cHJJc0IIuo++bQNpc19IAFICaXMSPAoMaWZf' + 'dGhlbl9lbHNlGBogASgLMhguY2VkYXIudjMuRXhwcklmVGhlbkVsc2VIAFIKaWZUaGVuRWxzZR' + 'IlCgNzZXQYGyABKAsyES5jZWRhci52My5FeHByU2V0SABSA3NldBIuCgZyZWNvcmQYHCABKAsy' + 'FC5jZWRhci52My5FeHByUmVjb3JkSABSBnJlY29yZBI1CglmdW5jX2NhbGwYHSABKAsyFi5jZW' + 'Rhci52My5FeHByRnVuY0NhbGxIAFIIZnVuY0NhbGxCBgoEZXhwcg=='); + +@$core.Deprecated('Use exprValueDescriptor instead') +const ExprValue$json = { + '1': 'ExprValue', + '2': [ + {'1': 'value', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Value', '10': 'value'}, + ], +}; + +/// Descriptor for `ExprValue`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprValueDescriptor = $convert.base64Decode( + 'CglFeHByVmFsdWUSJQoFdmFsdWUYASABKAsyDy5jZWRhci52My5WYWx1ZVIFdmFsdWU='); + +@$core.Deprecated('Use exprVarDescriptor instead') +const ExprVar$json = { + '1': 'ExprVar', + '2': [ + {'1': 'variable', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.Variable', '10': 'variable'}, + ], +}; + +/// Descriptor for `ExprVar`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprVarDescriptor = $convert.base64Decode( + 'CgdFeHByVmFyEi4KCHZhcmlhYmxlGAEgASgOMhIuY2VkYXIudjMuVmFyaWFibGVSCHZhcmlhYm' + 'xl'); + +@$core.Deprecated('Use exprSlotDescriptor instead') +const ExprSlot$json = { + '1': 'ExprSlot', + '2': [ + {'1': 'slot_id', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.SlotId', '10': 'slotId'}, + ], +}; + +/// Descriptor for `ExprSlot`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprSlotDescriptor = $convert.base64Decode( + 'CghFeHByU2xvdBIpCgdzbG90X2lkGAEgASgOMhAuY2VkYXIudjMuU2xvdElkUgZzbG90SWQ='); + +@$core.Deprecated('Use exprUnknownDescriptor instead') +const ExprUnknown$json = { + '1': 'ExprUnknown', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + ], +}; + +/// Descriptor for `ExprUnknown`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprUnknownDescriptor = $convert.base64Decode( + 'CgtFeHByVW5rbm93bhISCgRuYW1lGAEgASgJUgRuYW1l'); + +@$core.Deprecated('Use exprNotDescriptor instead') +const ExprNot$json = { + '1': 'ExprNot', + '2': [ + {'1': 'expr', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'expr'}, + ], +}; + +/// Descriptor for `ExprNot`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprNotDescriptor = $convert.base64Decode( + 'CgdFeHByTm90EiIKBGV4cHIYASABKAsyDi5jZWRhci52My5FeHByUgRleHBy'); + +@$core.Deprecated('Use exprNegDescriptor instead') +const ExprNeg$json = { + '1': 'ExprNeg', + '2': [ + {'1': 'expr', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'expr'}, + ], +}; + +/// Descriptor for `ExprNeg`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprNegDescriptor = $convert.base64Decode( + 'CgdFeHByTmVnEiIKBGV4cHIYASABKAsyDi5jZWRhci52My5FeHByUgRleHBy'); + +@$core.Deprecated('Use exprEqualsDescriptor instead') +const ExprEquals$json = { + '1': 'ExprEquals', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprEquals`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprEqualsDescriptor = $convert.base64Decode( + 'CgpFeHByRXF1YWxzEiIKBGxlZnQYASABKAsyDi5jZWRhci52My5FeHByUgRsZWZ0EiQKBXJpZ2' + 'h0GAIgASgLMg4uY2VkYXIudjMuRXhwclIFcmlnaHQ='); + +@$core.Deprecated('Use exprNotEqualsDescriptor instead') +const ExprNotEquals$json = { + '1': 'ExprNotEquals', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprNotEquals`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprNotEqualsDescriptor = $convert.base64Decode( + 'Cg1FeHByTm90RXF1YWxzEiIKBGxlZnQYASABKAsyDi5jZWRhci52My5FeHByUgRsZWZ0EiQKBX' + 'JpZ2h0GAIgASgLMg4uY2VkYXIudjMuRXhwclIFcmlnaHQ='); + +@$core.Deprecated('Use exprInDescriptor instead') +const ExprIn$json = { + '1': 'ExprIn', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprIn`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprInDescriptor = $convert.base64Decode( + 'CgZFeHBySW4SIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcmlnaHQYAi' + 'ABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprLessThanDescriptor instead') +const ExprLessThan$json = { + '1': 'ExprLessThan', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprLessThan`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprLessThanDescriptor = $convert.base64Decode( + 'CgxFeHByTGVzc1RoYW4SIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcm' + 'lnaHQYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprLessThanOrEqualsDescriptor instead') +const ExprLessThanOrEquals$json = { + '1': 'ExprLessThanOrEquals', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprLessThanOrEquals`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprLessThanOrEqualsDescriptor = $convert.base64Decode( + 'ChRFeHByTGVzc1RoYW5PckVxdWFscxIiCgRsZWZ0GAEgASgLMg4uY2VkYXIudjMuRXhwclIEbG' + 'VmdBIkCgVyaWdodBgCIAEoCzIOLmNlZGFyLnYzLkV4cHJSBXJpZ2h0'); + +@$core.Deprecated('Use exprGreaterThanDescriptor instead') +const ExprGreaterThan$json = { + '1': 'ExprGreaterThan', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprGreaterThan`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprGreaterThanDescriptor = $convert.base64Decode( + 'Cg9FeHByR3JlYXRlclRoYW4SIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJA' + 'oFcmlnaHQYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprGreaterThanOrEqualsDescriptor instead') +const ExprGreaterThanOrEquals$json = { + '1': 'ExprGreaterThanOrEquals', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprGreaterThanOrEquals`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprGreaterThanOrEqualsDescriptor = $convert.base64Decode( + 'ChdFeHByR3JlYXRlclRoYW5PckVxdWFscxIiCgRsZWZ0GAEgASgLMg4uY2VkYXIudjMuRXhwcl' + 'IEbGVmdBIkCgVyaWdodBgCIAEoCzIOLmNlZGFyLnYzLkV4cHJSBXJpZ2h0'); + +@$core.Deprecated('Use exprAndDescriptor instead') +const ExprAnd$json = { + '1': 'ExprAnd', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprAnd`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprAndDescriptor = $convert.base64Decode( + 'CgdFeHByQW5kEiIKBGxlZnQYASABKAsyDi5jZWRhci52My5FeHByUgRsZWZ0EiQKBXJpZ2h0GA' + 'IgASgLMg4uY2VkYXIudjMuRXhwclIFcmlnaHQ='); + +@$core.Deprecated('Use exprOrDescriptor instead') +const ExprOr$json = { + '1': 'ExprOr', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprOr`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprOrDescriptor = $convert.base64Decode( + 'CgZFeHByT3ISIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcmlnaHQYAi' + 'ABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprPlusDescriptor instead') +const ExprPlus$json = { + '1': 'ExprPlus', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprPlus`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprPlusDescriptor = $convert.base64Decode( + 'CghFeHByUGx1cxIiCgRsZWZ0GAEgASgLMg4uY2VkYXIudjMuRXhwclIEbGVmdBIkCgVyaWdodB' + 'gCIAEoCzIOLmNlZGFyLnYzLkV4cHJSBXJpZ2h0'); + +@$core.Deprecated('Use exprMinusDescriptor instead') +const ExprMinus$json = { + '1': 'ExprMinus', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprMinus`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprMinusDescriptor = $convert.base64Decode( + 'CglFeHByTWludXMSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcmlnaH' + 'QYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprTimesDescriptor instead') +const ExprTimes$json = { + '1': 'ExprTimes', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprTimes`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprTimesDescriptor = $convert.base64Decode( + 'CglFeHByVGltZXMSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcmlnaH' + 'QYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprContainsDescriptor instead') +const ExprContains$json = { + '1': 'ExprContains', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprContains`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprContainsDescriptor = $convert.base64Decode( + 'CgxFeHByQ29udGFpbnMSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJAoFcm' + 'lnaHQYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprContainsAllDescriptor instead') +const ExprContainsAll$json = { + '1': 'ExprContainsAll', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprContainsAll`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprContainsAllDescriptor = $convert.base64Decode( + 'Cg9FeHByQ29udGFpbnNBbGwSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJA' + 'oFcmlnaHQYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprContainsAnyDescriptor instead') +const ExprContainsAny$json = { + '1': 'ExprContainsAny', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'right', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'right'}, + ], +}; + +/// Descriptor for `ExprContainsAny`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprContainsAnyDescriptor = $convert.base64Decode( + 'Cg9FeHByQ29udGFpbnNBbnkSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSJA' + 'oFcmlnaHQYAiABKAsyDi5jZWRhci52My5FeHByUgVyaWdodA=='); + +@$core.Deprecated('Use exprGetAttributeDescriptor instead') +const ExprGetAttribute$json = { + '1': 'ExprGetAttribute', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'attr', '3': 2, '4': 1, '5': 9, '10': 'attr'}, + ], +}; + +/// Descriptor for `ExprGetAttribute`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprGetAttributeDescriptor = $convert.base64Decode( + 'ChBFeHByR2V0QXR0cmlidXRlEiIKBGxlZnQYASABKAsyDi5jZWRhci52My5FeHByUgRsZWZ0Eh' + 'IKBGF0dHIYAiABKAlSBGF0dHI='); + +@$core.Deprecated('Use exprHasAttributeDescriptor instead') +const ExprHasAttribute$json = { + '1': 'ExprHasAttribute', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'attr', '3': 2, '4': 1, '5': 9, '10': 'attr'}, + ], +}; + +/// Descriptor for `ExprHasAttribute`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprHasAttributeDescriptor = $convert.base64Decode( + 'ChBFeHBySGFzQXR0cmlidXRlEiIKBGxlZnQYASABKAsyDi5jZWRhci52My5FeHByUgRsZWZ0Eh' + 'IKBGF0dHIYAiABKAlSBGF0dHI='); + +@$core.Deprecated('Use exprLikeDescriptor instead') +const ExprLike$json = { + '1': 'ExprLike', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'pattern', '3': 2, '4': 1, '5': 9, '10': 'pattern'}, + ], +}; + +/// Descriptor for `ExprLike`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprLikeDescriptor = $convert.base64Decode( + 'CghFeHByTGlrZRIiCgRsZWZ0GAEgASgLMg4uY2VkYXIudjMuRXhwclIEbGVmdBIYCgdwYXR0ZX' + 'JuGAIgASgJUgdwYXR0ZXJu'); + +@$core.Deprecated('Use exprIsDescriptor instead') +const ExprIs$json = { + '1': 'ExprIs', + '2': [ + {'1': 'left', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'left'}, + {'1': 'entity_type', '3': 2, '4': 1, '5': 9, '10': 'entityType'}, + { + '1': 'in', + '3': 3, + '4': 1, + '5': 11, + '6': '.cedar.v3.Expr', + '8': {'28700919': 'in_'}, + '9': 0, + '10': 'in', + '17': true, + }, + ], + '8': [ + {'1': '_in'}, + ], +}; + +/// Descriptor for `ExprIs`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprIsDescriptor = $convert.base64Decode( + 'CgZFeHBySXMSIgoEbGVmdBgBIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGxlZnQSHwoLZW50aXR5X3' + 'R5cGUYAiABKAlSCmVudGl0eVR5cGUSLQoCaW4YAyABKAsyDi5jZWRhci52My5FeHByQgi6j75t' + 'A2luX0gAUgJpbogBAUIFCgNfaW4='); + +@$core.Deprecated('Use exprIfThenElseDescriptor instead') +const ExprIfThenElse$json = { + '1': 'ExprIfThenElse', + '2': [ + { + '1': 'if', + '3': 1, + '4': 1, + '5': 11, + '6': '.cedar.v3.Expr', + '8': {'28700919': 'if_'}, + '10': 'if', + }, + {'1': 'then', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'then'}, + { + '1': 'else', + '3': 3, + '4': 1, + '5': 11, + '6': '.cedar.v3.Expr', + '8': {'28700919': 'else_'}, + '10': 'else', + }, + ], +}; + +/// Descriptor for `ExprIfThenElse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprIfThenElseDescriptor = $convert.base64Decode( + 'Cg5FeHBySWZUaGVuRWxzZRIoCgJpZhgBIAEoCzIOLmNlZGFyLnYzLkV4cHJCCLqPvm0DaWZfUg' + 'JpZhIiCgR0aGVuGAIgASgLMg4uY2VkYXIudjMuRXhwclIEdGhlbhIuCgRlbHNlGAMgASgLMg4u' + 'Y2VkYXIudjMuRXhwckIKuo++bQVlbHNlX1IEZWxzZQ=='); + +@$core.Deprecated('Use exprSetDescriptor instead') +const ExprSet$json = { + '1': 'ExprSet', + '2': [ + {'1': 'expressions', '3': 1, '4': 3, '5': 11, '6': '.cedar.v3.Expr', '10': 'expressions'}, + ], +}; + +/// Descriptor for `ExprSet`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprSetDescriptor = $convert.base64Decode( + 'CgdFeHByU2V0EjAKC2V4cHJlc3Npb25zGAEgAygLMg4uY2VkYXIudjMuRXhwclILZXhwcmVzc2' + 'lvbnM='); + +@$core.Deprecated('Use exprRecordDescriptor instead') +const ExprRecord$json = { + '1': 'ExprRecord', + '2': [ + {'1': 'attributes', '3': 1, '4': 3, '5': 11, '6': '.cedar.v3.ExprRecord.AttributesEntry', '10': 'attributes'}, + ], + '3': [ExprRecord_AttributesEntry$json], +}; + +@$core.Deprecated('Use exprRecordDescriptor instead') +const ExprRecord_AttributesEntry$json = { + '1': 'AttributesEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `ExprRecord`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprRecordDescriptor = $convert.base64Decode( + 'CgpFeHByUmVjb3JkEkQKCmF0dHJpYnV0ZXMYASADKAsyJC5jZWRhci52My5FeHByUmVjb3JkLk' + 'F0dHJpYnV0ZXNFbnRyeVIKYXR0cmlidXRlcxpNCg9BdHRyaWJ1dGVzRW50cnkSEAoDa2V5GAEg' + 'ASgJUgNrZXkSJAoFdmFsdWUYAiABKAsyDi5jZWRhci52My5FeHByUgV2YWx1ZToCOAE='); + +@$core.Deprecated('Use exprFuncCallDescriptor instead') +const ExprFuncCall$json = { + '1': 'ExprFuncCall', + '2': [ + {'1': 'fn', '3': 1, '4': 1, '5': 9, '10': 'fn'}, + {'1': 'args', '3': 2, '4': 3, '5': 11, '6': '.cedar.v3.Expr', '10': 'args'}, + ], +}; + +/// Descriptor for `ExprFuncCall`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List exprFuncCallDescriptor = $convert.base64Decode( + 'CgxFeHByRnVuY0NhbGwSDgoCZm4YASABKAlSAmZuEiIKBGFyZ3MYAiADKAsyDi5jZWRhci52My' + '5FeHByUgRhcmdz'); + diff --git a/packages/corks/lib/src/proto/cedar/v3/expr.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/expr.pbserver.dart new file mode 100644 index 00000000..9b92c137 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/expr.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/expr.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'expr.pb.dart'; + diff --git a/packages/corks/lib/src/proto/cedar/v3/policy.pb.dart b/packages/corks/lib/src/proto/cedar/v3/policy.pb.dart new file mode 100644 index 00000000..06805e0a --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/policy.pb.dart @@ -0,0 +1,452 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/policy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'entity_id.pb.dart' as $0; +import 'expr.pb.dart' as $3; +import 'policy.pbenum.dart'; + +export 'policy.pbenum.dart'; + +class Policy extends $pb.GeneratedMessage { + factory Policy({ + $core.String? id, + PolicyEffect? effect, + PolicyPrincipal? principal, + PolicyAction? action, + PolicyResource? resource, + $core.Iterable? conditions, + $core.Map<$core.String, $core.String>? annotations, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (effect != null) { + $result.effect = effect; + } + if (principal != null) { + $result.principal = principal; + } + if (action != null) { + $result.action = action; + } + if (resource != null) { + $result.resource = resource; + } + if (conditions != null) { + $result.conditions.addAll(conditions); + } + if (annotations != null) { + $result.annotations.addAll(annotations); + } + return $result; + } + Policy._() : super(); + factory Policy.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Policy.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Policy', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..e(2, _omitFieldNames ? '' : 'effect', $pb.PbFieldType.OE, defaultOrMaker: PolicyEffect.POLICY_EFFECT_UNSPECIFIED, valueOf: PolicyEffect.valueOf, enumValues: PolicyEffect.values) + ..aOM(3, _omitFieldNames ? '' : 'principal', subBuilder: PolicyPrincipal.create) + ..aOM(4, _omitFieldNames ? '' : 'action', subBuilder: PolicyAction.create) + ..aOM(5, _omitFieldNames ? '' : 'resource', subBuilder: PolicyResource.create) + ..pc(6, _omitFieldNames ? '' : 'conditions', $pb.PbFieldType.PM, subBuilder: PolicyCondition.create) + ..m<$core.String, $core.String>(7, _omitFieldNames ? '' : 'annotations', entryClassName: 'Policy.AnnotationsEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('cedar.v3')) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Policy clone() => Policy()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Policy copyWith(void Function(Policy) updates) => super.copyWith((message) => updates(message as Policy)) as Policy; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Policy create() => Policy._(); + Policy createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Policy getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Policy? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + PolicyEffect get effect => $_getN(1); + @$pb.TagNumber(2) + set effect(PolicyEffect v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasEffect() => $_has(1); + @$pb.TagNumber(2) + void clearEffect() => clearField(2); + + @$pb.TagNumber(3) + PolicyPrincipal get principal => $_getN(2); + @$pb.TagNumber(3) + set principal(PolicyPrincipal v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasPrincipal() => $_has(2); + @$pb.TagNumber(3) + void clearPrincipal() => clearField(3); + @$pb.TagNumber(3) + PolicyPrincipal ensurePrincipal() => $_ensure(2); + + @$pb.TagNumber(4) + PolicyAction get action => $_getN(3); + @$pb.TagNumber(4) + set action(PolicyAction v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasAction() => $_has(3); + @$pb.TagNumber(4) + void clearAction() => clearField(4); + @$pb.TagNumber(4) + PolicyAction ensureAction() => $_ensure(3); + + @$pb.TagNumber(5) + PolicyResource get resource => $_getN(4); + @$pb.TagNumber(5) + set resource(PolicyResource v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasResource() => $_has(4); + @$pb.TagNumber(5) + void clearResource() => clearField(5); + @$pb.TagNumber(5) + PolicyResource ensureResource() => $_ensure(4); + + @$pb.TagNumber(6) + $core.List get conditions => $_getList(5); + + @$pb.TagNumber(7) + $core.Map<$core.String, $core.String> get annotations => $_getMap(6); +} + +class PolicyPrincipal extends $pb.GeneratedMessage { + factory PolicyPrincipal({ + PolicyOp? op, + $0.EntityId? entity, + $core.String? entityType, + }) { + final $result = create(); + if (op != null) { + $result.op = op; + } + if (entity != null) { + $result.entity = entity; + } + if (entityType != null) { + $result.entityType = entityType; + } + return $result; + } + PolicyPrincipal._() : super(); + factory PolicyPrincipal.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PolicyPrincipal.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PolicyPrincipal', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'op', $pb.PbFieldType.OE, defaultOrMaker: PolicyOp.POLICY_OP_UNSPECIFIED, valueOf: PolicyOp.valueOf, enumValues: PolicyOp.values) + ..aOM<$0.EntityId>(2, _omitFieldNames ? '' : 'entity', subBuilder: $0.EntityId.create) + ..aOS(3, _omitFieldNames ? '' : 'entityType') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PolicyPrincipal clone() => PolicyPrincipal()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PolicyPrincipal copyWith(void Function(PolicyPrincipal) updates) => super.copyWith((message) => updates(message as PolicyPrincipal)) as PolicyPrincipal; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PolicyPrincipal create() => PolicyPrincipal._(); + PolicyPrincipal createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PolicyPrincipal getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PolicyPrincipal? _defaultInstance; + + @$pb.TagNumber(1) + PolicyOp get op => $_getN(0); + @$pb.TagNumber(1) + set op(PolicyOp v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasOp() => $_has(0); + @$pb.TagNumber(1) + void clearOp() => clearField(1); + + @$pb.TagNumber(2) + $0.EntityId get entity => $_getN(1); + @$pb.TagNumber(2) + set entity($0.EntityId v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasEntity() => $_has(1); + @$pb.TagNumber(2) + void clearEntity() => clearField(2); + @$pb.TagNumber(2) + $0.EntityId ensureEntity() => $_ensure(1); + + @$pb.TagNumber(3) + $core.String get entityType => $_getSZ(2); + @$pb.TagNumber(3) + set entityType($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasEntityType() => $_has(2); + @$pb.TagNumber(3) + void clearEntityType() => clearField(3); +} + +class PolicyAction extends $pb.GeneratedMessage { + factory PolicyAction({ + PolicyOp? op, + $0.EntityId? entity, + $core.Iterable<$0.EntityId>? entities, + }) { + final $result = create(); + if (op != null) { + $result.op = op; + } + if (entity != null) { + $result.entity = entity; + } + if (entities != null) { + $result.entities.addAll(entities); + } + return $result; + } + PolicyAction._() : super(); + factory PolicyAction.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PolicyAction.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PolicyAction', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'op', $pb.PbFieldType.OE, defaultOrMaker: PolicyOp.POLICY_OP_UNSPECIFIED, valueOf: PolicyOp.valueOf, enumValues: PolicyOp.values) + ..aOM<$0.EntityId>(2, _omitFieldNames ? '' : 'entity', subBuilder: $0.EntityId.create) + ..pc<$0.EntityId>(3, _omitFieldNames ? '' : 'entities', $pb.PbFieldType.PM, subBuilder: $0.EntityId.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PolicyAction clone() => PolicyAction()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PolicyAction copyWith(void Function(PolicyAction) updates) => super.copyWith((message) => updates(message as PolicyAction)) as PolicyAction; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PolicyAction create() => PolicyAction._(); + PolicyAction createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PolicyAction getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PolicyAction? _defaultInstance; + + @$pb.TagNumber(1) + PolicyOp get op => $_getN(0); + @$pb.TagNumber(1) + set op(PolicyOp v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasOp() => $_has(0); + @$pb.TagNumber(1) + void clearOp() => clearField(1); + + @$pb.TagNumber(2) + $0.EntityId get entity => $_getN(1); + @$pb.TagNumber(2) + set entity($0.EntityId v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasEntity() => $_has(1); + @$pb.TagNumber(2) + void clearEntity() => clearField(2); + @$pb.TagNumber(2) + $0.EntityId ensureEntity() => $_ensure(1); + + @$pb.TagNumber(3) + $core.List<$0.EntityId> get entities => $_getList(2); +} + +class PolicyResource extends $pb.GeneratedMessage { + factory PolicyResource({ + PolicyOp? op, + $0.EntityId? entity, + $core.String? entityType, + }) { + final $result = create(); + if (op != null) { + $result.op = op; + } + if (entity != null) { + $result.entity = entity; + } + if (entityType != null) { + $result.entityType = entityType; + } + return $result; + } + PolicyResource._() : super(); + factory PolicyResource.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PolicyResource.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PolicyResource', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'op', $pb.PbFieldType.OE, defaultOrMaker: PolicyOp.POLICY_OP_UNSPECIFIED, valueOf: PolicyOp.valueOf, enumValues: PolicyOp.values) + ..aOM<$0.EntityId>(2, _omitFieldNames ? '' : 'entity', subBuilder: $0.EntityId.create) + ..aOS(3, _omitFieldNames ? '' : 'entityType') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PolicyResource clone() => PolicyResource()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PolicyResource copyWith(void Function(PolicyResource) updates) => super.copyWith((message) => updates(message as PolicyResource)) as PolicyResource; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PolicyResource create() => PolicyResource._(); + PolicyResource createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PolicyResource getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PolicyResource? _defaultInstance; + + @$pb.TagNumber(1) + PolicyOp get op => $_getN(0); + @$pb.TagNumber(1) + set op(PolicyOp v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasOp() => $_has(0); + @$pb.TagNumber(1) + void clearOp() => clearField(1); + + @$pb.TagNumber(2) + $0.EntityId get entity => $_getN(1); + @$pb.TagNumber(2) + set entity($0.EntityId v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasEntity() => $_has(1); + @$pb.TagNumber(2) + void clearEntity() => clearField(2); + @$pb.TagNumber(2) + $0.EntityId ensureEntity() => $_ensure(1); + + @$pb.TagNumber(3) + $core.String get entityType => $_getSZ(2); + @$pb.TagNumber(3) + set entityType($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasEntityType() => $_has(2); + @$pb.TagNumber(3) + void clearEntityType() => clearField(3); +} + +class PolicyCondition extends $pb.GeneratedMessage { + factory PolicyCondition({ + PolicyConditionKind? kind, + $3.Expr? body, + }) { + final $result = create(); + if (kind != null) { + $result.kind = kind; + } + if (body != null) { + $result.body = body; + } + return $result; + } + PolicyCondition._() : super(); + factory PolicyCondition.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PolicyCondition.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PolicyCondition', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'kind', $pb.PbFieldType.OE, defaultOrMaker: PolicyConditionKind.POLICY_CONDITION_KIND_UNSPECIFIED, valueOf: PolicyConditionKind.valueOf, enumValues: PolicyConditionKind.values) + ..aOM<$3.Expr>(2, _omitFieldNames ? '' : 'body', subBuilder: $3.Expr.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PolicyCondition clone() => PolicyCondition()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PolicyCondition copyWith(void Function(PolicyCondition) updates) => super.copyWith((message) => updates(message as PolicyCondition)) as PolicyCondition; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PolicyCondition create() => PolicyCondition._(); + PolicyCondition createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PolicyCondition getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PolicyCondition? _defaultInstance; + + @$pb.TagNumber(1) + PolicyConditionKind get kind => $_getN(0); + @$pb.TagNumber(1) + set kind(PolicyConditionKind v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasKind() => $_has(0); + @$pb.TagNumber(1) + void clearKind() => clearField(1); + + @$pb.TagNumber(2) + $3.Expr get body => $_getN(1); + @$pb.TagNumber(2) + set body($3.Expr v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasBody() => $_has(1); + @$pb.TagNumber(2) + void clearBody() => clearField(2); + @$pb.TagNumber(2) + $3.Expr ensureBody() => $_ensure(1); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/policy.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/policy.pbenum.dart new file mode 100644 index 00000000..c7d69b36 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/policy.pbenum.dart @@ -0,0 +1,72 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/policy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class PolicyEffect extends $pb.ProtobufEnum { + static const PolicyEffect POLICY_EFFECT_UNSPECIFIED = PolicyEffect._(0, _omitEnumNames ? '' : 'POLICY_EFFECT_UNSPECIFIED'); + static const PolicyEffect POLICY_EFFECT_PERMIT = PolicyEffect._(1, _omitEnumNames ? '' : 'POLICY_EFFECT_PERMIT'); + static const PolicyEffect POLICY_EFFECT_FORBID = PolicyEffect._(2, _omitEnumNames ? '' : 'POLICY_EFFECT_FORBID'); + + static const $core.List values = [ + POLICY_EFFECT_UNSPECIFIED, + POLICY_EFFECT_PERMIT, + POLICY_EFFECT_FORBID, + ]; + + static final $core.Map<$core.int, PolicyEffect> _byValue = $pb.ProtobufEnum.initByValue(values); + static PolicyEffect? valueOf($core.int value) => _byValue[value]; + + const PolicyEffect._($core.int v, $core.String n) : super(v, n); +} + +class PolicyOp extends $pb.ProtobufEnum { + static const PolicyOp POLICY_OP_UNSPECIFIED = PolicyOp._(0, _omitEnumNames ? '' : 'POLICY_OP_UNSPECIFIED'); + static const PolicyOp POLICY_OP_ALL = PolicyOp._(1, _omitEnumNames ? '' : 'POLICY_OP_ALL'); + static const PolicyOp POLICY_OP_EQUALS = PolicyOp._(2, _omitEnumNames ? '' : 'POLICY_OP_EQUALS'); + static const PolicyOp POLICY_OP_IN = PolicyOp._(3, _omitEnumNames ? '' : 'POLICY_OP_IN'); + static const PolicyOp POLICY_OP_IS = PolicyOp._(4, _omitEnumNames ? '' : 'POLICY_OP_IS'); + + static const $core.List values = [ + POLICY_OP_UNSPECIFIED, + POLICY_OP_ALL, + POLICY_OP_EQUALS, + POLICY_OP_IN, + POLICY_OP_IS, + ]; + + static final $core.Map<$core.int, PolicyOp> _byValue = $pb.ProtobufEnum.initByValue(values); + static PolicyOp? valueOf($core.int value) => _byValue[value]; + + const PolicyOp._($core.int v, $core.String n) : super(v, n); +} + +class PolicyConditionKind extends $pb.ProtobufEnum { + static const PolicyConditionKind POLICY_CONDITION_KIND_UNSPECIFIED = PolicyConditionKind._(0, _omitEnumNames ? '' : 'POLICY_CONDITION_KIND_UNSPECIFIED'); + static const PolicyConditionKind POLICY_CONDITION_KIND_WHEN = PolicyConditionKind._(1, _omitEnumNames ? '' : 'POLICY_CONDITION_KIND_WHEN'); + static const PolicyConditionKind POLICY_CONDITION_KIND_UNLESS = PolicyConditionKind._(2, _omitEnumNames ? '' : 'POLICY_CONDITION_KIND_UNLESS'); + + static const $core.List values = [ + POLICY_CONDITION_KIND_UNSPECIFIED, + POLICY_CONDITION_KIND_WHEN, + POLICY_CONDITION_KIND_UNLESS, + ]; + + static final $core.Map<$core.int, PolicyConditionKind> _byValue = $pb.ProtobufEnum.initByValue(values); + static PolicyConditionKind? valueOf($core.int value) => _byValue[value]; + + const PolicyConditionKind._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/policy.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/policy.pbjson.dart new file mode 100644 index 00000000..3e29400a --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/policy.pbjson.dart @@ -0,0 +1,178 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/policy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use policyEffectDescriptor instead') +const PolicyEffect$json = { + '1': 'PolicyEffect', + '2': [ + {'1': 'POLICY_EFFECT_UNSPECIFIED', '2': 0}, + {'1': 'POLICY_EFFECT_PERMIT', '2': 1}, + {'1': 'POLICY_EFFECT_FORBID', '2': 2}, + ], +}; + +/// Descriptor for `PolicyEffect`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List policyEffectDescriptor = $convert.base64Decode( + 'CgxQb2xpY3lFZmZlY3QSHQoZUE9MSUNZX0VGRkVDVF9VTlNQRUNJRklFRBAAEhgKFFBPTElDWV' + '9FRkZFQ1RfUEVSTUlUEAESGAoUUE9MSUNZX0VGRkVDVF9GT1JCSUQQAg=='); + +@$core.Deprecated('Use policyOpDescriptor instead') +const PolicyOp$json = { + '1': 'PolicyOp', + '2': [ + {'1': 'POLICY_OP_UNSPECIFIED', '2': 0}, + {'1': 'POLICY_OP_ALL', '2': 1}, + {'1': 'POLICY_OP_EQUALS', '2': 2}, + {'1': 'POLICY_OP_IN', '2': 3}, + {'1': 'POLICY_OP_IS', '2': 4}, + ], +}; + +/// Descriptor for `PolicyOp`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List policyOpDescriptor = $convert.base64Decode( + 'CghQb2xpY3lPcBIZChVQT0xJQ1lfT1BfVU5TUEVDSUZJRUQQABIRCg1QT0xJQ1lfT1BfQUxMEA' + 'ESFAoQUE9MSUNZX09QX0VRVUFMUxACEhAKDFBPTElDWV9PUF9JThADEhAKDFBPTElDWV9PUF9J' + 'UxAE'); + +@$core.Deprecated('Use policyConditionKindDescriptor instead') +const PolicyConditionKind$json = { + '1': 'PolicyConditionKind', + '2': [ + {'1': 'POLICY_CONDITION_KIND_UNSPECIFIED', '2': 0}, + {'1': 'POLICY_CONDITION_KIND_WHEN', '2': 1}, + {'1': 'POLICY_CONDITION_KIND_UNLESS', '2': 2}, + ], +}; + +/// Descriptor for `PolicyConditionKind`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List policyConditionKindDescriptor = $convert.base64Decode( + 'ChNQb2xpY3lDb25kaXRpb25LaW5kEiUKIVBPTElDWV9DT05ESVRJT05fS0lORF9VTlNQRUNJRk' + 'lFRBAAEh4KGlBPTElDWV9DT05ESVRJT05fS0lORF9XSEVOEAESIAocUE9MSUNZX0NPTkRJVElP' + 'Tl9LSU5EX1VOTEVTUxAC'); + +@$core.Deprecated('Use policyDescriptor instead') +const Policy$json = { + '1': 'Policy', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'id', '17': true}, + {'1': 'effect', '3': 2, '4': 1, '5': 14, '6': '.cedar.v3.PolicyEffect', '10': 'effect'}, + {'1': 'principal', '3': 3, '4': 1, '5': 11, '6': '.cedar.v3.PolicyPrincipal', '10': 'principal'}, + {'1': 'action', '3': 4, '4': 1, '5': 11, '6': '.cedar.v3.PolicyAction', '10': 'action'}, + {'1': 'resource', '3': 5, '4': 1, '5': 11, '6': '.cedar.v3.PolicyResource', '10': 'resource'}, + {'1': 'conditions', '3': 6, '4': 3, '5': 11, '6': '.cedar.v3.PolicyCondition', '10': 'conditions'}, + {'1': 'annotations', '3': 7, '4': 3, '5': 11, '6': '.cedar.v3.Policy.AnnotationsEntry', '10': 'annotations'}, + ], + '3': [Policy_AnnotationsEntry$json], + '8': [ + {'1': '_id'}, + ], +}; + +@$core.Deprecated('Use policyDescriptor instead') +const Policy_AnnotationsEntry$json = { + '1': 'AnnotationsEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 9, '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `Policy`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List policyDescriptor = $convert.base64Decode( + 'CgZQb2xpY3kSEwoCaWQYASABKAlIAFICaWSIAQESLgoGZWZmZWN0GAIgASgOMhYuY2VkYXIudj' + 'MuUG9saWN5RWZmZWN0UgZlZmZlY3QSNwoJcHJpbmNpcGFsGAMgASgLMhkuY2VkYXIudjMuUG9s' + 'aWN5UHJpbmNpcGFsUglwcmluY2lwYWwSLgoGYWN0aW9uGAQgASgLMhYuY2VkYXIudjMuUG9saW' + 'N5QWN0aW9uUgZhY3Rpb24SNAoIcmVzb3VyY2UYBSABKAsyGC5jZWRhci52My5Qb2xpY3lSZXNv' + 'dXJjZVIIcmVzb3VyY2USOQoKY29uZGl0aW9ucxgGIAMoCzIZLmNlZGFyLnYzLlBvbGljeUNvbm' + 'RpdGlvblIKY29uZGl0aW9ucxJDCgthbm5vdGF0aW9ucxgHIAMoCzIhLmNlZGFyLnYzLlBvbGlj' + 'eS5Bbm5vdGF0aW9uc0VudHJ5Ugthbm5vdGF0aW9ucxo+ChBBbm5vdGF0aW9uc0VudHJ5EhAKA2' + 'tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAFCBQoDX2lk'); + +@$core.Deprecated('Use policyPrincipalDescriptor instead') +const PolicyPrincipal$json = { + '1': 'PolicyPrincipal', + '2': [ + {'1': 'op', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.PolicyOp', '10': 'op'}, + {'1': 'entity', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.EntityId', '9': 0, '10': 'entity', '17': true}, + {'1': 'entity_type', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'entityType', '17': true}, + ], + '8': [ + {'1': '_entity'}, + {'1': '_entity_type'}, + ], +}; + +/// Descriptor for `PolicyPrincipal`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List policyPrincipalDescriptor = $convert.base64Decode( + 'Cg9Qb2xpY3lQcmluY2lwYWwSIgoCb3AYASABKA4yEi5jZWRhci52My5Qb2xpY3lPcFICb3ASLw' + 'oGZW50aXR5GAIgASgLMhIuY2VkYXIudjMuRW50aXR5SWRIAFIGZW50aXR5iAEBEiQKC2VudGl0' + 'eV90eXBlGAMgASgJSAFSCmVudGl0eVR5cGWIAQFCCQoHX2VudGl0eUIOCgxfZW50aXR5X3R5cG' + 'U='); + +@$core.Deprecated('Use policyActionDescriptor instead') +const PolicyAction$json = { + '1': 'PolicyAction', + '2': [ + {'1': 'op', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.PolicyOp', '10': 'op'}, + {'1': 'entity', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.EntityId', '9': 0, '10': 'entity', '17': true}, + {'1': 'entities', '3': 3, '4': 3, '5': 11, '6': '.cedar.v3.EntityId', '10': 'entities'}, + ], + '8': [ + {'1': '_entity'}, + ], +}; + +/// Descriptor for `PolicyAction`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List policyActionDescriptor = $convert.base64Decode( + 'CgxQb2xpY3lBY3Rpb24SIgoCb3AYASABKA4yEi5jZWRhci52My5Qb2xpY3lPcFICb3ASLwoGZW' + '50aXR5GAIgASgLMhIuY2VkYXIudjMuRW50aXR5SWRIAFIGZW50aXR5iAEBEi4KCGVudGl0aWVz' + 'GAMgAygLMhIuY2VkYXIudjMuRW50aXR5SWRSCGVudGl0aWVzQgkKB19lbnRpdHk='); + +@$core.Deprecated('Use policyResourceDescriptor instead') +const PolicyResource$json = { + '1': 'PolicyResource', + '2': [ + {'1': 'op', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.PolicyOp', '10': 'op'}, + {'1': 'entity', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.EntityId', '9': 0, '10': 'entity', '17': true}, + {'1': 'entity_type', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'entityType', '17': true}, + ], + '8': [ + {'1': '_entity'}, + {'1': '_entity_type'}, + ], +}; + +/// Descriptor for `PolicyResource`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List policyResourceDescriptor = $convert.base64Decode( + 'Cg5Qb2xpY3lSZXNvdXJjZRIiCgJvcBgBIAEoDjISLmNlZGFyLnYzLlBvbGljeU9wUgJvcBIvCg' + 'ZlbnRpdHkYAiABKAsyEi5jZWRhci52My5FbnRpdHlJZEgAUgZlbnRpdHmIAQESJAoLZW50aXR5' + 'X3R5cGUYAyABKAlIAVIKZW50aXR5VHlwZYgBAUIJCgdfZW50aXR5Qg4KDF9lbnRpdHlfdHlwZQ' + '=='); + +@$core.Deprecated('Use policyConditionDescriptor instead') +const PolicyCondition$json = { + '1': 'PolicyCondition', + '2': [ + {'1': 'kind', '3': 1, '4': 1, '5': 14, '6': '.cedar.v3.PolicyConditionKind', '10': 'kind'}, + {'1': 'body', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Expr', '10': 'body'}, + ], +}; + +/// Descriptor for `PolicyCondition`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List policyConditionDescriptor = $convert.base64Decode( + 'Cg9Qb2xpY3lDb25kaXRpb24SMQoEa2luZBgBIAEoDjIdLmNlZGFyLnYzLlBvbGljeUNvbmRpdG' + 'lvbktpbmRSBGtpbmQSIgoEYm9keRgCIAEoCzIOLmNlZGFyLnYzLkV4cHJSBGJvZHk='); + diff --git a/packages/corks/lib/src/proto/cedar/v3/policy.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/policy.pbserver.dart new file mode 100644 index 00000000..600f60cf --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/policy.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/policy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'policy.pb.dart'; + diff --git a/packages/corks/lib/src/proto/cedar/v3/value.pb.dart b/packages/corks/lib/src/proto/cedar/v3/value.pb.dart new file mode 100644 index 00000000..d6550120 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/value.pb.dart @@ -0,0 +1,394 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/value.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'entity_id.pb.dart' as $0; + +enum Value_Value { + string, + long, + bool_3, + set, + record, + extension_6, + entity, + notSet +} + +class Value extends $pb.GeneratedMessage { + factory Value({ + $core.String? string, + $fixnum.Int64? long, + $core.bool? bool_3, + SetValue? set, + RecordValue? record, + ExtensionValue? extension_6, + EntityValue? entity, + }) { + final $result = create(); + if (string != null) { + $result.string = string; + } + if (long != null) { + $result.long = long; + } + if (bool_3 != null) { + $result.bool_3 = bool_3; + } + if (set != null) { + $result.set = set; + } + if (record != null) { + $result.record = record; + } + if (extension_6 != null) { + $result.extension_6 = extension_6; + } + if (entity != null) { + $result.entity = entity; + } + return $result; + } + Value._() : super(); + factory Value.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Value.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, Value_Value> _Value_ValueByTag = { + 1 : Value_Value.string, + 2 : Value_Value.long, + 3 : Value_Value.bool_3, + 4 : Value_Value.set, + 5 : Value_Value.record, + 6 : Value_Value.extension_6, + 7 : Value_Value.entity, + 0 : Value_Value.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Value', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..oo(0, [1, 2, 3, 4, 5, 6, 7]) + ..aOS(1, _omitFieldNames ? '' : 'string') + ..aInt64(2, _omitFieldNames ? '' : 'long') + ..aOB(3, _omitFieldNames ? '' : 'bool') + ..aOM(4, _omitFieldNames ? '' : 'set', subBuilder: SetValue.create) + ..aOM(5, _omitFieldNames ? '' : 'record', subBuilder: RecordValue.create) + ..aOM(6, _omitFieldNames ? '' : 'extension', subBuilder: ExtensionValue.create) + ..aOM(7, _omitFieldNames ? '' : 'entity', subBuilder: EntityValue.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Value clone() => Value()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Value copyWith(void Function(Value) updates) => super.copyWith((message) => updates(message as Value)) as Value; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Value create() => Value._(); + Value createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Value getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Value? _defaultInstance; + + Value_Value whichValue() => _Value_ValueByTag[$_whichOneof(0)]!; + void clearValue() => clearField($_whichOneof(0)); + + @$pb.TagNumber(1) + $core.String get string => $_getSZ(0); + @$pb.TagNumber(1) + set string($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasString() => $_has(0); + @$pb.TagNumber(1) + void clearString() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get long => $_getI64(1); + @$pb.TagNumber(2) + set long($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasLong() => $_has(1); + @$pb.TagNumber(2) + void clearLong() => clearField(2); + + @$pb.TagNumber(3) + $core.bool get bool_3 => $_getBF(2); + @$pb.TagNumber(3) + set bool_3($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasBool_3() => $_has(2); + @$pb.TagNumber(3) + void clearBool_3() => clearField(3); + + @$pb.TagNumber(4) + SetValue get set => $_getN(3); + @$pb.TagNumber(4) + set set(SetValue v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasSet() => $_has(3); + @$pb.TagNumber(4) + void clearSet() => clearField(4); + @$pb.TagNumber(4) + SetValue ensureSet() => $_ensure(3); + + @$pb.TagNumber(5) + RecordValue get record => $_getN(4); + @$pb.TagNumber(5) + set record(RecordValue v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasRecord() => $_has(4); + @$pb.TagNumber(5) + void clearRecord() => clearField(5); + @$pb.TagNumber(5) + RecordValue ensureRecord() => $_ensure(4); + + @$pb.TagNumber(6) + ExtensionValue get extension_6 => $_getN(5); + @$pb.TagNumber(6) + set extension_6(ExtensionValue v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasExtension_6() => $_has(5); + @$pb.TagNumber(6) + void clearExtension_6() => clearField(6); + @$pb.TagNumber(6) + ExtensionValue ensureExtension_6() => $_ensure(5); + + @$pb.TagNumber(7) + EntityValue get entity => $_getN(6); + @$pb.TagNumber(7) + set entity(EntityValue v) { setField(7, v); } + @$pb.TagNumber(7) + $core.bool hasEntity() => $_has(6); + @$pb.TagNumber(7) + void clearEntity() => clearField(7); + @$pb.TagNumber(7) + EntityValue ensureEntity() => $_ensure(6); +} + +class SetValue extends $pb.GeneratedMessage { + factory SetValue({ + $core.Iterable? values, + }) { + final $result = create(); + if (values != null) { + $result.values.addAll(values); + } + return $result; + } + SetValue._() : super(); + factory SetValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory SetValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SetValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'values', $pb.PbFieldType.PM, subBuilder: Value.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SetValue clone() => SetValue()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SetValue copyWith(void Function(SetValue) updates) => super.copyWith((message) => updates(message as SetValue)) as SetValue; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static SetValue create() => SetValue._(); + SetValue createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SetValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static SetValue? _defaultInstance; + + @$pb.TagNumber(1) + $core.List get values => $_getList(0); +} + +class RecordValue extends $pb.GeneratedMessage { + factory RecordValue({ + $core.Map<$core.String, Value>? values, + }) { + final $result = create(); + if (values != null) { + $result.values.addAll(values); + } + return $result; + } + RecordValue._() : super(); + factory RecordValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory RecordValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RecordValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..m<$core.String, Value>(1, _omitFieldNames ? '' : 'values', entryClassName: 'RecordValue.ValuesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OM, valueCreator: Value.create, valueDefaultOrMaker: Value.getDefault, packageName: const $pb.PackageName('cedar.v3')) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + RecordValue clone() => RecordValue()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + RecordValue copyWith(void Function(RecordValue) updates) => super.copyWith((message) => updates(message as RecordValue)) as RecordValue; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RecordValue create() => RecordValue._(); + RecordValue createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static RecordValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static RecordValue? _defaultInstance; + + @$pb.TagNumber(1) + $core.Map<$core.String, Value> get values => $_getMap(0); +} + +class ExtensionValue extends $pb.GeneratedMessage { + factory ExtensionValue({ + $core.String? fn, + Value? arg, + }) { + final $result = create(); + if (fn != null) { + $result.fn = fn; + } + if (arg != null) { + $result.arg = arg; + } + return $result; + } + ExtensionValue._() : super(); + factory ExtensionValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExtensionValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExtensionValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'fn') + ..aOM(2, _omitFieldNames ? '' : 'arg', subBuilder: Value.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExtensionValue clone() => ExtensionValue()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExtensionValue copyWith(void Function(ExtensionValue) updates) => super.copyWith((message) => updates(message as ExtensionValue)) as ExtensionValue; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExtensionValue create() => ExtensionValue._(); + ExtensionValue createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExtensionValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExtensionValue? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get fn => $_getSZ(0); + @$pb.TagNumber(1) + set fn($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasFn() => $_has(0); + @$pb.TagNumber(1) + void clearFn() => clearField(1); + + @$pb.TagNumber(2) + Value get arg => $_getN(1); + @$pb.TagNumber(2) + set arg(Value v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasArg() => $_has(1); + @$pb.TagNumber(2) + void clearArg() => clearField(2); + @$pb.TagNumber(2) + Value ensureArg() => $_ensure(1); +} + +class EntityValue extends $pb.GeneratedMessage { + factory EntityValue({ + $0.EntityId? uid, + }) { + final $result = create(); + if (uid != null) { + $result.uid = uid; + } + return $result; + } + EntityValue._() : super(); + factory EntityValue.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EntityValue.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EntityValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'cedar.v3'), createEmptyInstance: create) + ..aOM<$0.EntityId>(1, _omitFieldNames ? '' : 'uid', subBuilder: $0.EntityId.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EntityValue clone() => EntityValue()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EntityValue copyWith(void Function(EntityValue) updates) => super.copyWith((message) => updates(message as EntityValue)) as EntityValue; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EntityValue create() => EntityValue._(); + EntityValue createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EntityValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EntityValue? _defaultInstance; + + @$pb.TagNumber(1) + $0.EntityId get uid => $_getN(0); + @$pb.TagNumber(1) + set uid($0.EntityId v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasUid() => $_has(0); + @$pb.TagNumber(1) + void clearUid() => clearField(1); + @$pb.TagNumber(1) + $0.EntityId ensureUid() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/cedar/v3/value.pbenum.dart b/packages/corks/lib/src/proto/cedar/v3/value.pbenum.dart new file mode 100644 index 00000000..bed60914 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/value.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/value.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/cedar/v3/value.pbjson.dart b/packages/corks/lib/src/proto/cedar/v3/value.pbjson.dart new file mode 100644 index 00000000..832f54d3 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/value.pbjson.dart @@ -0,0 +1,104 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/value.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use valueDescriptor instead') +const Value$json = { + '1': 'Value', + '2': [ + {'1': 'string', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'string'}, + {'1': 'long', '3': 2, '4': 1, '5': 3, '9': 0, '10': 'long'}, + {'1': 'bool', '3': 3, '4': 1, '5': 8, '9': 0, '10': 'bool'}, + {'1': 'set', '3': 4, '4': 1, '5': 11, '6': '.cedar.v3.SetValue', '9': 0, '10': 'set'}, + {'1': 'record', '3': 5, '4': 1, '5': 11, '6': '.cedar.v3.RecordValue', '9': 0, '10': 'record'}, + {'1': 'extension', '3': 6, '4': 1, '5': 11, '6': '.cedar.v3.ExtensionValue', '9': 0, '10': 'extension'}, + {'1': 'entity', '3': 7, '4': 1, '5': 11, '6': '.cedar.v3.EntityValue', '9': 0, '10': 'entity'}, + ], + '8': [ + {'1': 'value'}, + ], +}; + +/// Descriptor for `Value`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List valueDescriptor = $convert.base64Decode( + 'CgVWYWx1ZRIYCgZzdHJpbmcYASABKAlIAFIGc3RyaW5nEhQKBGxvbmcYAiABKANIAFIEbG9uZx' + 'IUCgRib29sGAMgASgISABSBGJvb2wSJgoDc2V0GAQgASgLMhIuY2VkYXIudjMuU2V0VmFsdWVI' + 'AFIDc2V0Ei8KBnJlY29yZBgFIAEoCzIVLmNlZGFyLnYzLlJlY29yZFZhbHVlSABSBnJlY29yZB' + 'I4CglleHRlbnNpb24YBiABKAsyGC5jZWRhci52My5FeHRlbnNpb25WYWx1ZUgAUglleHRlbnNp' + 'b24SLwoGZW50aXR5GAcgASgLMhUuY2VkYXIudjMuRW50aXR5VmFsdWVIAFIGZW50aXR5QgcKBX' + 'ZhbHVl'); + +@$core.Deprecated('Use setValueDescriptor instead') +const SetValue$json = { + '1': 'SetValue', + '2': [ + {'1': 'values', '3': 1, '4': 3, '5': 11, '6': '.cedar.v3.Value', '10': 'values'}, + ], +}; + +/// Descriptor for `SetValue`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List setValueDescriptor = $convert.base64Decode( + 'CghTZXRWYWx1ZRInCgZ2YWx1ZXMYASADKAsyDy5jZWRhci52My5WYWx1ZVIGdmFsdWVz'); + +@$core.Deprecated('Use recordValueDescriptor instead') +const RecordValue$json = { + '1': 'RecordValue', + '2': [ + {'1': 'values', '3': 1, '4': 3, '5': 11, '6': '.cedar.v3.RecordValue.ValuesEntry', '10': 'values'}, + ], + '3': [RecordValue_ValuesEntry$json], +}; + +@$core.Deprecated('Use recordValueDescriptor instead') +const RecordValue_ValuesEntry$json = { + '1': 'ValuesEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Value', '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `RecordValue`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List recordValueDescriptor = $convert.base64Decode( + 'CgtSZWNvcmRWYWx1ZRI5CgZ2YWx1ZXMYASADKAsyIS5jZWRhci52My5SZWNvcmRWYWx1ZS5WYW' + 'x1ZXNFbnRyeVIGdmFsdWVzGkoKC1ZhbHVlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiUKBXZh' + 'bHVlGAIgASgLMg8uY2VkYXIudjMuVmFsdWVSBXZhbHVlOgI4AQ=='); + +@$core.Deprecated('Use extensionValueDescriptor instead') +const ExtensionValue$json = { + '1': 'ExtensionValue', + '2': [ + {'1': 'fn', '3': 1, '4': 1, '5': 9, '10': 'fn'}, + {'1': 'arg', '3': 2, '4': 1, '5': 11, '6': '.cedar.v3.Value', '10': 'arg'}, + ], +}; + +/// Descriptor for `ExtensionValue`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List extensionValueDescriptor = $convert.base64Decode( + 'Cg5FeHRlbnNpb25WYWx1ZRIOCgJmbhgBIAEoCVICZm4SIQoDYXJnGAIgASgLMg8uY2VkYXIudj' + 'MuVmFsdWVSA2FyZw=='); + +@$core.Deprecated('Use entityValueDescriptor instead') +const EntityValue$json = { + '1': 'EntityValue', + '2': [ + {'1': 'uid', '3': 1, '4': 1, '5': 11, '6': '.cedar.v3.EntityId', '10': 'uid'}, + ], +}; + +/// Descriptor for `EntityValue`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List entityValueDescriptor = $convert.base64Decode( + 'CgtFbnRpdHlWYWx1ZRIkCgN1aWQYASABKAsyEi5jZWRhci52My5FbnRpdHlJZFIDdWlk'); + diff --git a/packages/corks/lib/src/proto/cedar/v3/value.pbserver.dart b/packages/corks/lib/src/proto/cedar/v3/value.pbserver.dart new file mode 100644 index 00000000..1417e467 --- /dev/null +++ b/packages/corks/lib/src/proto/cedar/v3/value.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: cedar/v3/value.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'value.pb.dart'; + diff --git a/packages/corks/lib/src/proto/corks/v1/cork.pb.dart b/packages/corks/lib/src/proto/corks/v1/cork.pb.dart new file mode 100644 index 00000000..b4c15a56 --- /dev/null +++ b/packages/corks/lib/src/proto/corks/v1/cork.pb.dart @@ -0,0 +1,198 @@ +// +// Generated code. Do not modify. +// source: corks/v1/cork.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class Cork extends $pb.GeneratedMessage { + factory Cork({ + $core.List<$core.int>? id, + $core.List<$core.int>? keyId, + SignedBlock? bearer, + $core.Iterable? caveats, + $core.List<$core.int>? signature, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (keyId != null) { + $result.keyId = keyId; + } + if (bearer != null) { + $result.bearer = bearer; + } + if (caveats != null) { + $result.caveats.addAll(caveats); + } + if (signature != null) { + $result.signature = signature; + } + return $result; + } + Cork._() : super(); + factory Cork.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Cork.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Cork', package: const $pb.PackageName(_omitMessageNames ? '' : 'corks.v1'), createEmptyInstance: create) + ..a<$core.List<$core.int>>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OY) + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'keyId', $pb.PbFieldType.OY) + ..aOM(3, _omitFieldNames ? '' : 'bearer', subBuilder: SignedBlock.create) + ..pc(4, _omitFieldNames ? '' : 'caveats', $pb.PbFieldType.PM, subBuilder: SignedBlock.create) + ..a<$core.List<$core.int>>(5, _omitFieldNames ? '' : 'signature', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Cork clone() => Cork()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Cork copyWith(void Function(Cork) updates) => super.copyWith((message) => updates(message as Cork)) as Cork; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Cork create() => Cork._(); + Cork createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Cork getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Cork? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$core.int> get id => $_getN(0); + @$pb.TagNumber(1) + set id($core.List<$core.int> v) { $_setBytes(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.List<$core.int> get keyId => $_getN(1); + @$pb.TagNumber(2) + set keyId($core.List<$core.int> v) { $_setBytes(1, v); } + @$pb.TagNumber(2) + $core.bool hasKeyId() => $_has(1); + @$pb.TagNumber(2) + void clearKeyId() => clearField(2); + + @$pb.TagNumber(3) + SignedBlock get bearer => $_getN(2); + @$pb.TagNumber(3) + set bearer(SignedBlock v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasBearer() => $_has(2); + @$pb.TagNumber(3) + void clearBearer() => clearField(3); + @$pb.TagNumber(3) + SignedBlock ensureBearer() => $_ensure(2); + + @$pb.TagNumber(4) + $core.List get caveats => $_getList(3); + + @$pb.TagNumber(5) + $core.List<$core.int> get signature => $_getN(4); + @$pb.TagNumber(5) + set signature($core.List<$core.int> v) { $_setBytes(4, v); } + @$pb.TagNumber(5) + $core.bool hasSignature() => $_has(4); + @$pb.TagNumber(5) + void clearSignature() => clearField(5); +} + +class SignedBlock extends $pb.GeneratedMessage { + factory SignedBlock({ + $core.List<$core.int>? block, + $core.List<$core.int>? typeUrl, + $core.List<$core.int>? signature, + }) { + final $result = create(); + if (block != null) { + $result.block = block; + } + if (typeUrl != null) { + $result.typeUrl = typeUrl; + } + if (signature != null) { + $result.signature = signature; + } + return $result; + } + SignedBlock._() : super(); + factory SignedBlock.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory SignedBlock.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SignedBlock', package: const $pb.PackageName(_omitMessageNames ? '' : 'corks.v1'), createEmptyInstance: create) + ..a<$core.List<$core.int>>(1, _omitFieldNames ? '' : 'block', $pb.PbFieldType.OY) + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'typeUrl', $pb.PbFieldType.OY) + ..a<$core.List<$core.int>>(3, _omitFieldNames ? '' : 'signature', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SignedBlock clone() => SignedBlock()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SignedBlock copyWith(void Function(SignedBlock) updates) => super.copyWith((message) => updates(message as SignedBlock)) as SignedBlock; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static SignedBlock create() => SignedBlock._(); + SignedBlock createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SignedBlock getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static SignedBlock? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$core.int> get block => $_getN(0); + @$pb.TagNumber(1) + set block($core.List<$core.int> v) { $_setBytes(0, v); } + @$pb.TagNumber(1) + $core.bool hasBlock() => $_has(0); + @$pb.TagNumber(1) + void clearBlock() => clearField(1); + + @$pb.TagNumber(2) + $core.List<$core.int> get typeUrl => $_getN(1); + @$pb.TagNumber(2) + set typeUrl($core.List<$core.int> v) { $_setBytes(1, v); } + @$pb.TagNumber(2) + $core.bool hasTypeUrl() => $_has(1); + @$pb.TagNumber(2) + void clearTypeUrl() => clearField(2); + + @$pb.TagNumber(3) + $core.List<$core.int> get signature => $_getN(2); + @$pb.TagNumber(3) + set signature($core.List<$core.int> v) { $_setBytes(2, v); } + @$pb.TagNumber(3) + $core.bool hasSignature() => $_has(2); + @$pb.TagNumber(3) + void clearSignature() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/corks/v1/cork.pbenum.dart b/packages/corks/lib/src/proto/corks/v1/cork.pbenum.dart new file mode 100644 index 00000000..c5bd364e --- /dev/null +++ b/packages/corks/lib/src/proto/corks/v1/cork.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: corks/v1/cork.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/corks/v1/cork.pbjson.dart b/packages/corks/lib/src/proto/corks/v1/cork.pbjson.dart new file mode 100644 index 00000000..edcbef9e --- /dev/null +++ b/packages/corks/lib/src/proto/corks/v1/cork.pbjson.dart @@ -0,0 +1,52 @@ +// +// Generated code. Do not modify. +// source: corks/v1/cork.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use corkDescriptor instead') +const Cork$json = { + '1': 'Cork', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 12, '10': 'id'}, + {'1': 'key_id', '3': 2, '4': 1, '5': 12, '10': 'keyId'}, + {'1': 'bearer', '3': 3, '4': 1, '5': 11, '6': '.corks.v1.SignedBlock', '9': 0, '10': 'bearer', '17': true}, + {'1': 'caveats', '3': 4, '4': 3, '5': 11, '6': '.corks.v1.SignedBlock', '10': 'caveats'}, + {'1': 'signature', '3': 5, '4': 1, '5': 12, '10': 'signature'}, + ], + '8': [ + {'1': '_bearer'}, + ], +}; + +/// Descriptor for `Cork`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List corkDescriptor = $convert.base64Decode( + 'CgRDb3JrEg4KAmlkGAEgASgMUgJpZBIVCgZrZXlfaWQYAiABKAxSBWtleUlkEjIKBmJlYXJlch' + 'gDIAEoCzIVLmNvcmtzLnYxLlNpZ25lZEJsb2NrSABSBmJlYXJlcogBARIvCgdjYXZlYXRzGAQg' + 'AygLMhUuY29ya3MudjEuU2lnbmVkQmxvY2tSB2NhdmVhdHMSHAoJc2lnbmF0dXJlGAUgASgMUg' + 'lzaWduYXR1cmVCCQoHX2JlYXJlcg=='); + +@$core.Deprecated('Use signedBlockDescriptor instead') +const SignedBlock$json = { + '1': 'SignedBlock', + '2': [ + {'1': 'block', '3': 1, '4': 1, '5': 12, '10': 'block'}, + {'1': 'type_url', '3': 2, '4': 1, '5': 12, '10': 'typeUrl'}, + {'1': 'signature', '3': 3, '4': 1, '5': 12, '10': 'signature'}, + ], +}; + +/// Descriptor for `SignedBlock`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List signedBlockDescriptor = $convert.base64Decode( + 'CgtTaWduZWRCbG9jaxIUCgVibG9jaxgBIAEoDFIFYmxvY2sSGQoIdHlwZV91cmwYAiABKAxSB3' + 'R5cGVVcmwSHAoJc2lnbmF0dXJlGAMgASgMUglzaWduYXR1cmU='); + diff --git a/packages/corks/lib/src/proto/corks/v1/cork.pbserver.dart b/packages/corks/lib/src/proto/corks/v1/cork.pbserver.dart new file mode 100644 index 00000000..22f9438b --- /dev/null +++ b/packages/corks/lib/src/proto/corks/v1/cork.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: corks/v1/cork.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'cork.pb.dart'; + diff --git a/packages/corks/lib/src/proto/dart/dart_options.pb.dart b/packages/corks/lib/src/proto/dart/dart_options.pb.dart new file mode 100644 index 00000000..fe78ea84 --- /dev/null +++ b/packages/corks/lib/src/proto/dart/dart_options.pb.dart @@ -0,0 +1,178 @@ +// +// Generated code. Do not modify. +// source: dart/dart_options.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// A mixin that can be used in the 'with' clause of the generated Dart class +/// for a proto message. +class DartMixin extends $pb.GeneratedMessage { + factory DartMixin({ + $core.String? name, + $core.String? importFrom, + $core.String? parent, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (importFrom != null) { + $result.importFrom = importFrom; + } + if (parent != null) { + $result.parent = parent; + } + return $result; + } + DartMixin._() : super(); + factory DartMixin.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DartMixin.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DartMixin', package: const $pb.PackageName(_omitMessageNames ? '' : 'dart_options'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'importFrom') + ..aOS(3, _omitFieldNames ? '' : 'parent') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DartMixin clone() => DartMixin()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DartMixin copyWith(void Function(DartMixin) updates) => super.copyWith((message) => updates(message as DartMixin)) as DartMixin; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DartMixin create() => DartMixin._(); + DartMixin createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DartMixin getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DartMixin? _defaultInstance; + + /// The name of the mixin class. + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + /// A URI pointing to the Dart library that defines the mixin. + /// The generated Dart code will use this in an import statement. + @$pb.TagNumber(2) + $core.String get importFrom => $_getSZ(1); + @$pb.TagNumber(2) + set importFrom($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasImportFrom() => $_has(1); + @$pb.TagNumber(2) + void clearImportFrom() => clearField(2); + + /// The name of another mixin to be applied ahead of this one. + /// The generated class for the message will inherit from all mixins + /// in the parent chain. + @$pb.TagNumber(3) + $core.String get parent => $_getSZ(2); + @$pb.TagNumber(3) + set parent($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasParent() => $_has(2); + @$pb.TagNumber(3) + void clearParent() => clearField(3); +} + +/// Defines additional Dart imports to be used with messages in this file. +class Imports extends $pb.GeneratedMessage { + factory Imports({ + $core.Iterable? mixins, + }) { + final $result = create(); + if (mixins != null) { + $result.mixins.addAll(mixins); + } + return $result; + } + Imports._() : super(); + factory Imports.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Imports.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Imports', package: const $pb.PackageName(_omitMessageNames ? '' : 'dart_options'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'mixins', $pb.PbFieldType.PM, subBuilder: DartMixin.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Imports clone() => Imports()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Imports copyWith(void Function(Imports) updates) => super.copyWith((message) => updates(message as Imports)) as Imports; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Imports create() => Imports._(); + Imports createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Imports getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Imports? _defaultInstance; + + /// Mixins to be used on messages in this file. + /// These mixins are in addition to internally defined mixins (e.g PbMapMixin) + /// and may override them. + /// + /// Warning: mixins are experimental. The protoc Dart plugin doesn't check + /// for name conflicts between mixin class members and generated class members, + /// so the generated code may contain errors. Therefore, running dartanalyzer + /// on the generated file is a good idea. + @$pb.TagNumber(1) + $core.List get mixins => $_getList(0); +} + +class Dart_options { + static final imports = $pb.Extension(_omitMessageNames ? '' : 'google.protobuf.FileOptions', _omitFieldNames ? '' : 'imports', 28125061, $pb.PbFieldType.OM, defaultOrMaker: Imports.getDefault, subBuilder: Imports.create); + static final defaultMixin = $pb.Extension<$core.String>(_omitMessageNames ? '' : 'google.protobuf.FileOptions', _omitFieldNames ? '' : 'defaultMixin', 96128839, $pb.PbFieldType.OS); + static final mixin = $pb.Extension<$core.String>(_omitMessageNames ? '' : 'google.protobuf.MessageOptions', _omitFieldNames ? '' : 'mixin', 96128839, $pb.PbFieldType.OS); + static final overrideGetter = $pb.Extension<$core.bool>(_omitMessageNames ? '' : 'google.protobuf.FieldOptions', _omitFieldNames ? '' : 'overrideGetter', 28205290, $pb.PbFieldType.OB); + static final overrideSetter = $pb.Extension<$core.bool>(_omitMessageNames ? '' : 'google.protobuf.FieldOptions', _omitFieldNames ? '' : 'overrideSetter', 28937366, $pb.PbFieldType.OB); + static final overrideHasMethod = $pb.Extension<$core.bool>(_omitMessageNames ? '' : 'google.protobuf.FieldOptions', _omitFieldNames ? '' : 'overrideHasMethod', 28937461, $pb.PbFieldType.OB); + static final overrideClearMethod = $pb.Extension<$core.bool>(_omitMessageNames ? '' : 'google.protobuf.FieldOptions', _omitFieldNames ? '' : 'overrideClearMethod', 28907907, $pb.PbFieldType.OB); + static final dartName = $pb.Extension<$core.String>(_omitMessageNames ? '' : 'google.protobuf.FieldOptions', _omitFieldNames ? '' : 'dartName', 28700919, $pb.PbFieldType.OS); + static void registerAllExtensions($pb.ExtensionRegistry registry) { + registry.add(imports); + registry.add(defaultMixin); + registry.add(mixin); + registry.add(overrideGetter); + registry.add(overrideSetter); + registry.add(overrideHasMethod); + registry.add(overrideClearMethod); + registry.add(dartName); + } +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/dart/dart_options.pbenum.dart b/packages/corks/lib/src/proto/dart/dart_options.pbenum.dart new file mode 100644 index 00000000..8193ea48 --- /dev/null +++ b/packages/corks/lib/src/proto/dart/dart_options.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: dart/dart_options.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/dart/dart_options.pbjson.dart b/packages/corks/lib/src/proto/dart/dart_options.pbjson.dart new file mode 100644 index 00000000..e858a6b2 --- /dev/null +++ b/packages/corks/lib/src/proto/dart/dart_options.pbjson.dart @@ -0,0 +1,43 @@ +// +// Generated code. Do not modify. +// source: dart/dart_options.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use dartMixinDescriptor instead') +const DartMixin$json = { + '1': 'DartMixin', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'import_from', '3': 2, '4': 1, '5': 9, '10': 'importFrom'}, + {'1': 'parent', '3': 3, '4': 1, '5': 9, '10': 'parent'}, + ], +}; + +/// Descriptor for `DartMixin`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List dartMixinDescriptor = $convert.base64Decode( + 'CglEYXJ0TWl4aW4SEgoEbmFtZRgBIAEoCVIEbmFtZRIfCgtpbXBvcnRfZnJvbRgCIAEoCVIKaW' + '1wb3J0RnJvbRIWCgZwYXJlbnQYAyABKAlSBnBhcmVudA=='); + +@$core.Deprecated('Use importsDescriptor instead') +const Imports$json = { + '1': 'Imports', + '2': [ + {'1': 'mixins', '3': 1, '4': 3, '5': 11, '6': '.dart_options.DartMixin', '10': 'mixins'}, + ], +}; + +/// Descriptor for `Imports`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List importsDescriptor = $convert.base64Decode( + 'CgdJbXBvcnRzEi8KBm1peGlucxgBIAMoCzIXLmRhcnRfb3B0aW9ucy5EYXJ0TWl4aW5SBm1peG' + 'lucw=='); + diff --git a/packages/corks/lib/src/proto/dart/dart_options.pbserver.dart b/packages/corks/lib/src/proto/dart/dart_options.pbserver.dart new file mode 100644 index 00000000..c3bb25e5 --- /dev/null +++ b/packages/corks/lib/src/proto/dart/dart_options.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: dart/dart_options.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'dart_options.pb.dart'; + diff --git a/packages/corks/lib/src/proto/google/protobuf/any.pb.dart b/packages/corks/lib/src/proto/google/protobuf/any.pb.dart new file mode 100644 index 00000000..212e7c74 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/any.pb.dart @@ -0,0 +1,208 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/any.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; +import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin; + +/// `Any` contains an arbitrary serialized protocol buffer message along with a +/// URL that describes the type of the serialized message. +/// +/// Protobuf library provides support to pack/unpack Any values in the form +/// of utility functions or additional generated methods of the Any type. +/// +/// Example 1: Pack and unpack a message in C++. +/// +/// Foo foo = ...; +/// Any any; +/// any.PackFrom(foo); +/// ... +/// if (any.UnpackTo(&foo)) { +/// ... +/// } +/// +/// Example 2: Pack and unpack a message in Java. +/// +/// Foo foo = ...; +/// Any any = Any.pack(foo); +/// ... +/// if (any.is(Foo.class)) { +/// foo = any.unpack(Foo.class); +/// } +/// // or ... +/// if (any.isSameTypeAs(Foo.getDefaultInstance())) { +/// foo = any.unpack(Foo.getDefaultInstance()); +/// } +/// +/// Example 3: Pack and unpack a message in Python. +/// +/// foo = Foo(...) +/// any = Any() +/// any.Pack(foo) +/// ... +/// if any.Is(Foo.DESCRIPTOR): +/// any.Unpack(foo) +/// ... +/// +/// Example 4: Pack and unpack a message in Go +/// +/// foo := &pb.Foo{...} +/// any, err := anypb.New(foo) +/// if err != nil { +/// ... +/// } +/// ... +/// foo := &pb.Foo{} +/// if err := any.UnmarshalTo(foo); err != nil { +/// ... +/// } +/// +/// The pack methods provided by protobuf library will by default use +/// 'type.googleapis.com/full.type.name' as the type URL and the unpack +/// methods only use the fully qualified type name after the last '/' +/// in the type URL, for example "foo.bar.com/x/y.z" will yield type +/// name "y.z". +/// +/// JSON +/// ==== +/// The JSON representation of an `Any` value uses the regular +/// representation of the deserialized, embedded message, with an +/// additional field `@type` which contains the type URL. Example: +/// +/// package google.profile; +/// message Person { +/// string first_name = 1; +/// string last_name = 2; +/// } +/// +/// { +/// "@type": "type.googleapis.com/google.profile.Person", +/// "firstName": , +/// "lastName": +/// } +/// +/// If the embedded message type is well-known and has a custom JSON +/// representation, that representation will be embedded adding a field +/// `value` which holds the custom JSON in addition to the `@type` +/// field. Example (for message [google.protobuf.Duration][]): +/// +/// { +/// "@type": "type.googleapis.com/google.protobuf.Duration", +/// "value": "1.212s" +/// } +class Any extends $pb.GeneratedMessage with $mixin.AnyMixin { + factory Any({ + $core.String? typeUrl, + $core.List<$core.int>? value, + }) { + final $result = create(); + if (typeUrl != null) { + $result.typeUrl = typeUrl; + } + if (value != null) { + $result.value = value; + } + return $result; + } + Any._() : super(); + factory Any.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Any.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Any', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.AnyMixin.toProto3JsonHelper, fromProto3Json: $mixin.AnyMixin.fromProto3JsonHelper) + ..aOS(1, _omitFieldNames ? '' : 'typeUrl') + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'value', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Any clone() => Any()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Any copyWith(void Function(Any) updates) => super.copyWith((message) => updates(message as Any)) as Any; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Any create() => Any._(); + Any createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Any getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Any? _defaultInstance; + + /// A URL/resource name that uniquely identifies the type of the serialized + /// protocol buffer message. This string must contain at least + /// one "/" character. The last segment of the URL's path must represent + /// the fully qualified name of the type (as in + /// `path/google.protobuf.Duration`). The name should be in a canonical form + /// (e.g., leading "." is not accepted). + /// + /// In practice, teams usually precompile into the binary all types that they + /// expect it to use in the context of Any. However, for URLs which use the + /// scheme `http`, `https`, or no scheme, one can optionally set up a type + /// server that maps type URLs to message definitions as follows: + /// + /// * If no scheme is provided, `https` is assumed. + /// * An HTTP GET on the URL must yield a [google.protobuf.Type][] + /// value in binary format, or produce an error. + /// * Applications are allowed to cache lookup results based on the + /// URL, or have them precompiled into a binary to avoid any + /// lookup. Therefore, binary compatibility needs to be preserved + /// on changes to types. (Use versioned type names to manage + /// breaking changes.) + /// + /// Note: this functionality is not currently available in the official + /// protobuf release, and it is not used for type URLs beginning with + /// type.googleapis.com. As of May 2023, there are no widely used type server + /// implementations and no plans to implement one. + /// + /// Schemes other than `http`, `https` (or the empty scheme) might be + /// used with implementation specific semantics. + @$pb.TagNumber(1) + $core.String get typeUrl => $_getSZ(0); + @$pb.TagNumber(1) + set typeUrl($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasTypeUrl() => $_has(0); + @$pb.TagNumber(1) + void clearTypeUrl() => clearField(1); + + /// Must be a valid serialized protocol buffer of the above specified type. + @$pb.TagNumber(2) + $core.List<$core.int> get value => $_getN(1); + @$pb.TagNumber(2) + set value($core.List<$core.int> v) { $_setBytes(1, v); } + @$pb.TagNumber(2) + $core.bool hasValue() => $_has(1); + @$pb.TagNumber(2) + void clearValue() => clearField(2); + /// Creates a new [Any] encoding [message]. + /// + /// The [typeUrl] will be [typeUrlPrefix]/`fullName` where `fullName` is + /// the fully qualified name of the type of [message]. + static Any pack($pb.GeneratedMessage message, + {$core.String typeUrlPrefix = 'type.googleapis.com'}) { + final result = create(); + $mixin.AnyMixin.packIntoAny(result, message, + typeUrlPrefix: typeUrlPrefix); + return result; + } +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/any.pbenum.dart b/packages/corks/lib/src/proto/google/protobuf/any.pbenum.dart new file mode 100644 index 00000000..effdb475 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/any.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/any.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/google/protobuf/any.pbjson.dart b/packages/corks/lib/src/proto/google/protobuf/any.pbjson.dart new file mode 100644 index 00000000..beaeb5fa --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/any.pbjson.dart @@ -0,0 +1,28 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/any.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use anyDescriptor instead') +const Any$json = { + '1': 'Any', + '2': [ + {'1': 'type_url', '3': 1, '4': 1, '5': 9, '10': 'typeUrl'}, + {'1': 'value', '3': 2, '4': 1, '5': 12, '10': 'value'}, + ], +}; + +/// Descriptor for `Any`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List anyDescriptor = $convert.base64Decode( + 'CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVl'); + diff --git a/packages/corks/lib/src/proto/google/protobuf/any.pbserver.dart b/packages/corks/lib/src/proto/google/protobuf/any.pbserver.dart new file mode 100644 index 00000000..b332b59d --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/any.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/any.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'any.pb.dart'; + diff --git a/packages/corks/lib/src/proto/google/protobuf/descriptor.pb.dart b/packages/corks/lib/src/proto/google/protobuf/descriptor.pb.dart new file mode 100644 index 00000000..4aaf3191 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/descriptor.pb.dart @@ -0,0 +1,3767 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/descriptor.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'descriptor.pbenum.dart'; + +export 'descriptor.pbenum.dart'; + +/// The protocol compiler can output a FileDescriptorSet containing the .proto +/// files it parses. +class FileDescriptorSet extends $pb.GeneratedMessage { + factory FileDescriptorSet({ + $core.Iterable? file, + }) { + final $result = create(); + if (file != null) { + $result.file.addAll(file); + } + return $result; + } + FileDescriptorSet._() : super(); + factory FileDescriptorSet.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FileDescriptorSet.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FileDescriptorSet', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'file', $pb.PbFieldType.PM, subBuilder: FileDescriptorProto.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FileDescriptorSet clone() => FileDescriptorSet()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FileDescriptorSet copyWith(void Function(FileDescriptorSet) updates) => super.copyWith((message) => updates(message as FileDescriptorSet)) as FileDescriptorSet; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FileDescriptorSet create() => FileDescriptorSet._(); + FileDescriptorSet createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FileDescriptorSet getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FileDescriptorSet? _defaultInstance; + + @$pb.TagNumber(1) + $core.List get file => $_getList(0); +} + +/// Describes a complete .proto file. +class FileDescriptorProto extends $pb.GeneratedMessage { + factory FileDescriptorProto({ + $core.String? name, + $core.String? package, + $core.Iterable<$core.String>? dependency, + $core.Iterable? messageType, + $core.Iterable? enumType, + $core.Iterable? service, + $core.Iterable? extension, + FileOptions? options, + SourceCodeInfo? sourceCodeInfo, + $core.Iterable<$core.int>? publicDependency, + $core.Iterable<$core.int>? weakDependency, + $core.String? syntax, + Edition? edition, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (package != null) { + $result.package = package; + } + if (dependency != null) { + $result.dependency.addAll(dependency); + } + if (messageType != null) { + $result.messageType.addAll(messageType); + } + if (enumType != null) { + $result.enumType.addAll(enumType); + } + if (service != null) { + $result.service.addAll(service); + } + if (extension != null) { + $result.extension.addAll(extension); + } + if (options != null) { + $result.options = options; + } + if (sourceCodeInfo != null) { + $result.sourceCodeInfo = sourceCodeInfo; + } + if (publicDependency != null) { + $result.publicDependency.addAll(publicDependency); + } + if (weakDependency != null) { + $result.weakDependency.addAll(weakDependency); + } + if (syntax != null) { + $result.syntax = syntax; + } + if (edition != null) { + $result.edition = edition; + } + return $result; + } + FileDescriptorProto._() : super(); + factory FileDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FileDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FileDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'package') + ..pPS(3, _omitFieldNames ? '' : 'dependency') + ..pc(4, _omitFieldNames ? '' : 'messageType', $pb.PbFieldType.PM, subBuilder: DescriptorProto.create) + ..pc(5, _omitFieldNames ? '' : 'enumType', $pb.PbFieldType.PM, subBuilder: EnumDescriptorProto.create) + ..pc(6, _omitFieldNames ? '' : 'service', $pb.PbFieldType.PM, subBuilder: ServiceDescriptorProto.create) + ..pc(7, _omitFieldNames ? '' : 'extension', $pb.PbFieldType.PM, subBuilder: FieldDescriptorProto.create) + ..aOM(8, _omitFieldNames ? '' : 'options', subBuilder: FileOptions.create) + ..aOM(9, _omitFieldNames ? '' : 'sourceCodeInfo', subBuilder: SourceCodeInfo.create) + ..p<$core.int>(10, _omitFieldNames ? '' : 'publicDependency', $pb.PbFieldType.P3) + ..p<$core.int>(11, _omitFieldNames ? '' : 'weakDependency', $pb.PbFieldType.P3) + ..aOS(12, _omitFieldNames ? '' : 'syntax') + ..e(14, _omitFieldNames ? '' : 'edition', $pb.PbFieldType.OE, defaultOrMaker: Edition.EDITION_UNKNOWN, valueOf: Edition.valueOf, enumValues: Edition.values) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FileDescriptorProto clone() => FileDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FileDescriptorProto copyWith(void Function(FileDescriptorProto) updates) => super.copyWith((message) => updates(message as FileDescriptorProto)) as FileDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FileDescriptorProto create() => FileDescriptorProto._(); + FileDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FileDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FileDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + $core.String get package => $_getSZ(1); + @$pb.TagNumber(2) + set package($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPackage() => $_has(1); + @$pb.TagNumber(2) + void clearPackage() => clearField(2); + + /// Names of files imported by this file. + @$pb.TagNumber(3) + $core.List<$core.String> get dependency => $_getList(2); + + /// All top-level definitions in this file. + @$pb.TagNumber(4) + $core.List get messageType => $_getList(3); + + @$pb.TagNumber(5) + $core.List get enumType => $_getList(4); + + @$pb.TagNumber(6) + $core.List get service => $_getList(5); + + @$pb.TagNumber(7) + $core.List get extension => $_getList(6); + + @$pb.TagNumber(8) + FileOptions get options => $_getN(7); + @$pb.TagNumber(8) + set options(FileOptions v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasOptions() => $_has(7); + @$pb.TagNumber(8) + void clearOptions() => clearField(8); + @$pb.TagNumber(8) + FileOptions ensureOptions() => $_ensure(7); + + /// This field contains optional information about the original source code. + /// You may safely remove this entire field without harming runtime + /// functionality of the descriptors -- the information is needed only by + /// development tools. + @$pb.TagNumber(9) + SourceCodeInfo get sourceCodeInfo => $_getN(8); + @$pb.TagNumber(9) + set sourceCodeInfo(SourceCodeInfo v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasSourceCodeInfo() => $_has(8); + @$pb.TagNumber(9) + void clearSourceCodeInfo() => clearField(9); + @$pb.TagNumber(9) + SourceCodeInfo ensureSourceCodeInfo() => $_ensure(8); + + /// Indexes of the public imported files in the dependency list above. + @$pb.TagNumber(10) + $core.List<$core.int> get publicDependency => $_getList(9); + + /// Indexes of the weak imported files in the dependency list. + /// For Google-internal migration only. Do not use. + @$pb.TagNumber(11) + $core.List<$core.int> get weakDependency => $_getList(10); + + /// The syntax of the proto file. + /// The supported values are "proto2", "proto3", and "editions". + /// + /// If `edition` is present, this value must be "editions". + @$pb.TagNumber(12) + $core.String get syntax => $_getSZ(11); + @$pb.TagNumber(12) + set syntax($core.String v) { $_setString(11, v); } + @$pb.TagNumber(12) + $core.bool hasSyntax() => $_has(11); + @$pb.TagNumber(12) + void clearSyntax() => clearField(12); + + /// The edition of the proto file. + @$pb.TagNumber(14) + Edition get edition => $_getN(12); + @$pb.TagNumber(14) + set edition(Edition v) { setField(14, v); } + @$pb.TagNumber(14) + $core.bool hasEdition() => $_has(12); + @$pb.TagNumber(14) + void clearEdition() => clearField(14); +} + +class DescriptorProto_ExtensionRange extends $pb.GeneratedMessage { + factory DescriptorProto_ExtensionRange({ + $core.int? start, + $core.int? end, + ExtensionRangeOptions? options, + }) { + final $result = create(); + if (start != null) { + $result.start = start; + } + if (end != null) { + $result.end = end; + } + if (options != null) { + $result.options = options; + } + return $result; + } + DescriptorProto_ExtensionRange._() : super(); + factory DescriptorProto_ExtensionRange.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DescriptorProto_ExtensionRange.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DescriptorProto.ExtensionRange', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'start', $pb.PbFieldType.O3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'end', $pb.PbFieldType.O3) + ..aOM(3, _omitFieldNames ? '' : 'options', subBuilder: ExtensionRangeOptions.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DescriptorProto_ExtensionRange clone() => DescriptorProto_ExtensionRange()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DescriptorProto_ExtensionRange copyWith(void Function(DescriptorProto_ExtensionRange) updates) => super.copyWith((message) => updates(message as DescriptorProto_ExtensionRange)) as DescriptorProto_ExtensionRange; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DescriptorProto_ExtensionRange create() => DescriptorProto_ExtensionRange._(); + DescriptorProto_ExtensionRange createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DescriptorProto_ExtensionRange getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DescriptorProto_ExtensionRange? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get start => $_getIZ(0); + @$pb.TagNumber(1) + set start($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasStart() => $_has(0); + @$pb.TagNumber(1) + void clearStart() => clearField(1); + + @$pb.TagNumber(2) + $core.int get end => $_getIZ(1); + @$pb.TagNumber(2) + set end($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasEnd() => $_has(1); + @$pb.TagNumber(2) + void clearEnd() => clearField(2); + + @$pb.TagNumber(3) + ExtensionRangeOptions get options => $_getN(2); + @$pb.TagNumber(3) + set options(ExtensionRangeOptions v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasOptions() => $_has(2); + @$pb.TagNumber(3) + void clearOptions() => clearField(3); + @$pb.TagNumber(3) + ExtensionRangeOptions ensureOptions() => $_ensure(2); +} + +/// Range of reserved tag numbers. Reserved tag numbers may not be used by +/// fields or extension ranges in the same message. Reserved ranges may +/// not overlap. +class DescriptorProto_ReservedRange extends $pb.GeneratedMessage { + factory DescriptorProto_ReservedRange({ + $core.int? start, + $core.int? end, + }) { + final $result = create(); + if (start != null) { + $result.start = start; + } + if (end != null) { + $result.end = end; + } + return $result; + } + DescriptorProto_ReservedRange._() : super(); + factory DescriptorProto_ReservedRange.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DescriptorProto_ReservedRange.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DescriptorProto.ReservedRange', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'start', $pb.PbFieldType.O3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'end', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DescriptorProto_ReservedRange clone() => DescriptorProto_ReservedRange()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DescriptorProto_ReservedRange copyWith(void Function(DescriptorProto_ReservedRange) updates) => super.copyWith((message) => updates(message as DescriptorProto_ReservedRange)) as DescriptorProto_ReservedRange; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DescriptorProto_ReservedRange create() => DescriptorProto_ReservedRange._(); + DescriptorProto_ReservedRange createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DescriptorProto_ReservedRange getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DescriptorProto_ReservedRange? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get start => $_getIZ(0); + @$pb.TagNumber(1) + set start($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasStart() => $_has(0); + @$pb.TagNumber(1) + void clearStart() => clearField(1); + + @$pb.TagNumber(2) + $core.int get end => $_getIZ(1); + @$pb.TagNumber(2) + set end($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasEnd() => $_has(1); + @$pb.TagNumber(2) + void clearEnd() => clearField(2); +} + +/// Describes a message type. +class DescriptorProto extends $pb.GeneratedMessage { + factory DescriptorProto({ + $core.String? name, + $core.Iterable? field, + $core.Iterable? nestedType, + $core.Iterable? enumType, + $core.Iterable? extensionRange, + $core.Iterable? extension, + MessageOptions? options, + $core.Iterable? oneofDecl, + $core.Iterable? reservedRange, + $core.Iterable<$core.String>? reservedName, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (field != null) { + $result.field.addAll(field); + } + if (nestedType != null) { + $result.nestedType.addAll(nestedType); + } + if (enumType != null) { + $result.enumType.addAll(enumType); + } + if (extensionRange != null) { + $result.extensionRange.addAll(extensionRange); + } + if (extension != null) { + $result.extension.addAll(extension); + } + if (options != null) { + $result.options = options; + } + if (oneofDecl != null) { + $result.oneofDecl.addAll(oneofDecl); + } + if (reservedRange != null) { + $result.reservedRange.addAll(reservedRange); + } + if (reservedName != null) { + $result.reservedName.addAll(reservedName); + } + return $result; + } + DescriptorProto._() : super(); + factory DescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..pc(2, _omitFieldNames ? '' : 'field', $pb.PbFieldType.PM, subBuilder: FieldDescriptorProto.create) + ..pc(3, _omitFieldNames ? '' : 'nestedType', $pb.PbFieldType.PM, subBuilder: DescriptorProto.create) + ..pc(4, _omitFieldNames ? '' : 'enumType', $pb.PbFieldType.PM, subBuilder: EnumDescriptorProto.create) + ..pc(5, _omitFieldNames ? '' : 'extensionRange', $pb.PbFieldType.PM, subBuilder: DescriptorProto_ExtensionRange.create) + ..pc(6, _omitFieldNames ? '' : 'extension', $pb.PbFieldType.PM, subBuilder: FieldDescriptorProto.create) + ..aOM(7, _omitFieldNames ? '' : 'options', subBuilder: MessageOptions.create) + ..pc(8, _omitFieldNames ? '' : 'oneofDecl', $pb.PbFieldType.PM, subBuilder: OneofDescriptorProto.create) + ..pc(9, _omitFieldNames ? '' : 'reservedRange', $pb.PbFieldType.PM, subBuilder: DescriptorProto_ReservedRange.create) + ..pPS(10, _omitFieldNames ? '' : 'reservedName') + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DescriptorProto clone() => DescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DescriptorProto copyWith(void Function(DescriptorProto) updates) => super.copyWith((message) => updates(message as DescriptorProto)) as DescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DescriptorProto create() => DescriptorProto._(); + DescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + $core.List get field => $_getList(1); + + @$pb.TagNumber(3) + $core.List get nestedType => $_getList(2); + + @$pb.TagNumber(4) + $core.List get enumType => $_getList(3); + + @$pb.TagNumber(5) + $core.List get extensionRange => $_getList(4); + + @$pb.TagNumber(6) + $core.List get extension => $_getList(5); + + @$pb.TagNumber(7) + MessageOptions get options => $_getN(6); + @$pb.TagNumber(7) + set options(MessageOptions v) { setField(7, v); } + @$pb.TagNumber(7) + $core.bool hasOptions() => $_has(6); + @$pb.TagNumber(7) + void clearOptions() => clearField(7); + @$pb.TagNumber(7) + MessageOptions ensureOptions() => $_ensure(6); + + @$pb.TagNumber(8) + $core.List get oneofDecl => $_getList(7); + + @$pb.TagNumber(9) + $core.List get reservedRange => $_getList(8); + + /// Reserved field names, which may not be used by fields in the same message. + /// A given name may only be reserved once. + @$pb.TagNumber(10) + $core.List<$core.String> get reservedName => $_getList(9); +} + +class ExtensionRangeOptions_Declaration extends $pb.GeneratedMessage { + factory ExtensionRangeOptions_Declaration({ + $core.int? number, + $core.String? fullName, + $core.String? type, + $core.bool? reserved, + $core.bool? repeated, + }) { + final $result = create(); + if (number != null) { + $result.number = number; + } + if (fullName != null) { + $result.fullName = fullName; + } + if (type != null) { + $result.type = type; + } + if (reserved != null) { + $result.reserved = reserved; + } + if (repeated != null) { + $result.repeated = repeated; + } + return $result; + } + ExtensionRangeOptions_Declaration._() : super(); + factory ExtensionRangeOptions_Declaration.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExtensionRangeOptions_Declaration.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExtensionRangeOptions.Declaration', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'number', $pb.PbFieldType.O3) + ..aOS(2, _omitFieldNames ? '' : 'fullName') + ..aOS(3, _omitFieldNames ? '' : 'type') + ..aOB(5, _omitFieldNames ? '' : 'reserved') + ..aOB(6, _omitFieldNames ? '' : 'repeated') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExtensionRangeOptions_Declaration clone() => ExtensionRangeOptions_Declaration()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExtensionRangeOptions_Declaration copyWith(void Function(ExtensionRangeOptions_Declaration) updates) => super.copyWith((message) => updates(message as ExtensionRangeOptions_Declaration)) as ExtensionRangeOptions_Declaration; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExtensionRangeOptions_Declaration create() => ExtensionRangeOptions_Declaration._(); + ExtensionRangeOptions_Declaration createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExtensionRangeOptions_Declaration getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExtensionRangeOptions_Declaration? _defaultInstance; + + /// The extension number declared within the extension range. + @$pb.TagNumber(1) + $core.int get number => $_getIZ(0); + @$pb.TagNumber(1) + set number($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasNumber() => $_has(0); + @$pb.TagNumber(1) + void clearNumber() => clearField(1); + + /// The fully-qualified name of the extension field. There must be a leading + /// dot in front of the full name. + @$pb.TagNumber(2) + $core.String get fullName => $_getSZ(1); + @$pb.TagNumber(2) + set fullName($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasFullName() => $_has(1); + @$pb.TagNumber(2) + void clearFullName() => clearField(2); + + /// The fully-qualified type name of the extension field. Unlike + /// Metadata.type, Declaration.type must have a leading dot for messages + /// and enums. + @$pb.TagNumber(3) + $core.String get type => $_getSZ(2); + @$pb.TagNumber(3) + set type($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasType() => $_has(2); + @$pb.TagNumber(3) + void clearType() => clearField(3); + + /// If true, indicates that the number is reserved in the extension range, + /// and any extension field with the number will fail to compile. Set this + /// when a declared extension field is deleted. + @$pb.TagNumber(5) + $core.bool get reserved => $_getBF(3); + @$pb.TagNumber(5) + set reserved($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(5) + $core.bool hasReserved() => $_has(3); + @$pb.TagNumber(5) + void clearReserved() => clearField(5); + + /// If true, indicates that the extension must be defined as repeated. + /// Otherwise the extension must be defined as optional. + @$pb.TagNumber(6) + $core.bool get repeated => $_getBF(4); + @$pb.TagNumber(6) + set repeated($core.bool v) { $_setBool(4, v); } + @$pb.TagNumber(6) + $core.bool hasRepeated() => $_has(4); + @$pb.TagNumber(6) + void clearRepeated() => clearField(6); +} + +class ExtensionRangeOptions extends $pb.GeneratedMessage { + factory ExtensionRangeOptions({ + $core.Iterable? declaration, + ExtensionRangeOptions_VerificationState? verification, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (declaration != null) { + $result.declaration.addAll(declaration); + } + if (verification != null) { + $result.verification = verification; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + ExtensionRangeOptions._() : super(); + factory ExtensionRangeOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ExtensionRangeOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ExtensionRangeOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(2, _omitFieldNames ? '' : 'declaration', $pb.PbFieldType.PM, subBuilder: ExtensionRangeOptions_Declaration.create) + ..e(3, _omitFieldNames ? '' : 'verification', $pb.PbFieldType.OE, defaultOrMaker: ExtensionRangeOptions_VerificationState.UNVERIFIED, valueOf: ExtensionRangeOptions_VerificationState.valueOf, enumValues: ExtensionRangeOptions_VerificationState.values) + ..aOM(50, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ExtensionRangeOptions clone() => ExtensionRangeOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ExtensionRangeOptions copyWith(void Function(ExtensionRangeOptions) updates) => super.copyWith((message) => updates(message as ExtensionRangeOptions)) as ExtensionRangeOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ExtensionRangeOptions create() => ExtensionRangeOptions._(); + ExtensionRangeOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ExtensionRangeOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ExtensionRangeOptions? _defaultInstance; + + /// For external users: DO NOT USE. We are in the process of open sourcing + /// extension declaration and executing internal cleanups before it can be + /// used externally. + @$pb.TagNumber(2) + $core.List get declaration => $_getList(0); + + /// The verification state of the range. + /// TODO: flip the default to DECLARATION once all empty ranges + /// are marked as UNVERIFIED. + @$pb.TagNumber(3) + ExtensionRangeOptions_VerificationState get verification => $_getN(1); + @$pb.TagNumber(3) + set verification(ExtensionRangeOptions_VerificationState v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasVerification() => $_has(1); + @$pb.TagNumber(3) + void clearVerification() => clearField(3); + + /// Any features defined in the specific edition. + @$pb.TagNumber(50) + FeatureSet get features => $_getN(2); + @$pb.TagNumber(50) + set features(FeatureSet v) { setField(50, v); } + @$pb.TagNumber(50) + $core.bool hasFeatures() => $_has(2); + @$pb.TagNumber(50) + void clearFeatures() => clearField(50); + @$pb.TagNumber(50) + FeatureSet ensureFeatures() => $_ensure(2); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(3); +} + +/// Describes a field within a message. +class FieldDescriptorProto extends $pb.GeneratedMessage { + factory FieldDescriptorProto({ + $core.String? name, + $core.String? extendee, + $core.int? number, + FieldDescriptorProto_Label? label, + FieldDescriptorProto_Type? type, + $core.String? typeName, + $core.String? defaultValue, + FieldOptions? options, + $core.int? oneofIndex, + $core.String? jsonName, + $core.bool? proto3Optional, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (extendee != null) { + $result.extendee = extendee; + } + if (number != null) { + $result.number = number; + } + if (label != null) { + $result.label = label; + } + if (type != null) { + $result.type = type; + } + if (typeName != null) { + $result.typeName = typeName; + } + if (defaultValue != null) { + $result.defaultValue = defaultValue; + } + if (options != null) { + $result.options = options; + } + if (oneofIndex != null) { + $result.oneofIndex = oneofIndex; + } + if (jsonName != null) { + $result.jsonName = jsonName; + } + if (proto3Optional != null) { + $result.proto3Optional = proto3Optional; + } + return $result; + } + FieldDescriptorProto._() : super(); + factory FieldDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FieldDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FieldDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'extendee') + ..a<$core.int>(3, _omitFieldNames ? '' : 'number', $pb.PbFieldType.O3) + ..e(4, _omitFieldNames ? '' : 'label', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Label.LABEL_OPTIONAL, valueOf: FieldDescriptorProto_Label.valueOf, enumValues: FieldDescriptorProto_Label.values) + ..e(5, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: FieldDescriptorProto_Type.TYPE_DOUBLE, valueOf: FieldDescriptorProto_Type.valueOf, enumValues: FieldDescriptorProto_Type.values) + ..aOS(6, _omitFieldNames ? '' : 'typeName') + ..aOS(7, _omitFieldNames ? '' : 'defaultValue') + ..aOM(8, _omitFieldNames ? '' : 'options', subBuilder: FieldOptions.create) + ..a<$core.int>(9, _omitFieldNames ? '' : 'oneofIndex', $pb.PbFieldType.O3) + ..aOS(10, _omitFieldNames ? '' : 'jsonName') + ..aOB(17, _omitFieldNames ? '' : 'proto3Optional') + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FieldDescriptorProto clone() => FieldDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FieldDescriptorProto copyWith(void Function(FieldDescriptorProto) updates) => super.copyWith((message) => updates(message as FieldDescriptorProto)) as FieldDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FieldDescriptorProto create() => FieldDescriptorProto._(); + FieldDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FieldDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FieldDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + /// For extensions, this is the name of the type being extended. It is + /// resolved in the same manner as type_name. + @$pb.TagNumber(2) + $core.String get extendee => $_getSZ(1); + @$pb.TagNumber(2) + set extendee($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasExtendee() => $_has(1); + @$pb.TagNumber(2) + void clearExtendee() => clearField(2); + + @$pb.TagNumber(3) + $core.int get number => $_getIZ(2); + @$pb.TagNumber(3) + set number($core.int v) { $_setSignedInt32(2, v); } + @$pb.TagNumber(3) + $core.bool hasNumber() => $_has(2); + @$pb.TagNumber(3) + void clearNumber() => clearField(3); + + @$pb.TagNumber(4) + FieldDescriptorProto_Label get label => $_getN(3); + @$pb.TagNumber(4) + set label(FieldDescriptorProto_Label v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasLabel() => $_has(3); + @$pb.TagNumber(4) + void clearLabel() => clearField(4); + + /// If type_name is set, this need not be set. If both this and type_name + /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + @$pb.TagNumber(5) + FieldDescriptorProto_Type get type => $_getN(4); + @$pb.TagNumber(5) + set type(FieldDescriptorProto_Type v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasType() => $_has(4); + @$pb.TagNumber(5) + void clearType() => clearField(5); + + /// For message and enum types, this is the name of the type. If the name + /// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + /// rules are used to find the type (i.e. first the nested types within this + /// message are searched, then within the parent, on up to the root + /// namespace). + @$pb.TagNumber(6) + $core.String get typeName => $_getSZ(5); + @$pb.TagNumber(6) + set typeName($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasTypeName() => $_has(5); + @$pb.TagNumber(6) + void clearTypeName() => clearField(6); + + /// For numeric types, contains the original text representation of the value. + /// For booleans, "true" or "false". + /// For strings, contains the default text contents (not escaped in any way). + /// For bytes, contains the C escaped value. All bytes >= 128 are escaped. + @$pb.TagNumber(7) + $core.String get defaultValue => $_getSZ(6); + @$pb.TagNumber(7) + set defaultValue($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasDefaultValue() => $_has(6); + @$pb.TagNumber(7) + void clearDefaultValue() => clearField(7); + + @$pb.TagNumber(8) + FieldOptions get options => $_getN(7); + @$pb.TagNumber(8) + set options(FieldOptions v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasOptions() => $_has(7); + @$pb.TagNumber(8) + void clearOptions() => clearField(8); + @$pb.TagNumber(8) + FieldOptions ensureOptions() => $_ensure(7); + + /// If set, gives the index of a oneof in the containing type's oneof_decl + /// list. This field is a member of that oneof. + @$pb.TagNumber(9) + $core.int get oneofIndex => $_getIZ(8); + @$pb.TagNumber(9) + set oneofIndex($core.int v) { $_setSignedInt32(8, v); } + @$pb.TagNumber(9) + $core.bool hasOneofIndex() => $_has(8); + @$pb.TagNumber(9) + void clearOneofIndex() => clearField(9); + + /// JSON name of this field. The value is set by protocol compiler. If the + /// user has set a "json_name" option on this field, that option's value + /// will be used. Otherwise, it's deduced from the field's name by converting + /// it to camelCase. + @$pb.TagNumber(10) + $core.String get jsonName => $_getSZ(9); + @$pb.TagNumber(10) + set jsonName($core.String v) { $_setString(9, v); } + @$pb.TagNumber(10) + $core.bool hasJsonName() => $_has(9); + @$pb.TagNumber(10) + void clearJsonName() => clearField(10); + + /// If true, this is a proto3 "optional". When a proto3 field is optional, it + /// tracks presence regardless of field type. + /// + /// When proto3_optional is true, this field must be belong to a oneof to + /// signal to old proto3 clients that presence is tracked for this field. This + /// oneof is known as a "synthetic" oneof, and this field must be its sole + /// member (each proto3 optional field gets its own synthetic oneof). Synthetic + /// oneofs exist in the descriptor only, and do not generate any API. Synthetic + /// oneofs must be ordered after all "real" oneofs. + /// + /// For message fields, proto3_optional doesn't create any semantic change, + /// since non-repeated message fields always track presence. However it still + /// indicates the semantic detail of whether the user wrote "optional" or not. + /// This can be useful for round-tripping the .proto file. For consistency we + /// give message fields a synthetic oneof also, even though it is not required + /// to track presence. This is especially important because the parser can't + /// tell if a field is a message or an enum, so it must always create a + /// synthetic oneof. + /// + /// Proto2 optional fields do not set this flag, because they already indicate + /// optional with `LABEL_OPTIONAL`. + @$pb.TagNumber(17) + $core.bool get proto3Optional => $_getBF(10); + @$pb.TagNumber(17) + set proto3Optional($core.bool v) { $_setBool(10, v); } + @$pb.TagNumber(17) + $core.bool hasProto3Optional() => $_has(10); + @$pb.TagNumber(17) + void clearProto3Optional() => clearField(17); +} + +/// Describes a oneof. +class OneofDescriptorProto extends $pb.GeneratedMessage { + factory OneofDescriptorProto({ + $core.String? name, + OneofOptions? options, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (options != null) { + $result.options = options; + } + return $result; + } + OneofDescriptorProto._() : super(); + factory OneofDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory OneofDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OneofDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOM(2, _omitFieldNames ? '' : 'options', subBuilder: OneofOptions.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + OneofDescriptorProto clone() => OneofDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + OneofDescriptorProto copyWith(void Function(OneofDescriptorProto) updates) => super.copyWith((message) => updates(message as OneofDescriptorProto)) as OneofDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static OneofDescriptorProto create() => OneofDescriptorProto._(); + OneofDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static OneofDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static OneofDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + OneofOptions get options => $_getN(1); + @$pb.TagNumber(2) + set options(OneofOptions v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasOptions() => $_has(1); + @$pb.TagNumber(2) + void clearOptions() => clearField(2); + @$pb.TagNumber(2) + OneofOptions ensureOptions() => $_ensure(1); +} + +/// Range of reserved numeric values. Reserved values may not be used by +/// entries in the same enum. Reserved ranges may not overlap. +/// +/// Note that this is distinct from DescriptorProto.ReservedRange in that it +/// is inclusive such that it can appropriately represent the entire int32 +/// domain. +class EnumDescriptorProto_EnumReservedRange extends $pb.GeneratedMessage { + factory EnumDescriptorProto_EnumReservedRange({ + $core.int? start, + $core.int? end, + }) { + final $result = create(); + if (start != null) { + $result.start = start; + } + if (end != null) { + $result.end = end; + } + return $result; + } + EnumDescriptorProto_EnumReservedRange._() : super(); + factory EnumDescriptorProto_EnumReservedRange.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EnumDescriptorProto_EnumReservedRange.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EnumDescriptorProto.EnumReservedRange', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'start', $pb.PbFieldType.O3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'end', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EnumDescriptorProto_EnumReservedRange clone() => EnumDescriptorProto_EnumReservedRange()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EnumDescriptorProto_EnumReservedRange copyWith(void Function(EnumDescriptorProto_EnumReservedRange) updates) => super.copyWith((message) => updates(message as EnumDescriptorProto_EnumReservedRange)) as EnumDescriptorProto_EnumReservedRange; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EnumDescriptorProto_EnumReservedRange create() => EnumDescriptorProto_EnumReservedRange._(); + EnumDescriptorProto_EnumReservedRange createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EnumDescriptorProto_EnumReservedRange getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EnumDescriptorProto_EnumReservedRange? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get start => $_getIZ(0); + @$pb.TagNumber(1) + set start($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasStart() => $_has(0); + @$pb.TagNumber(1) + void clearStart() => clearField(1); + + @$pb.TagNumber(2) + $core.int get end => $_getIZ(1); + @$pb.TagNumber(2) + set end($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasEnd() => $_has(1); + @$pb.TagNumber(2) + void clearEnd() => clearField(2); +} + +/// Describes an enum type. +class EnumDescriptorProto extends $pb.GeneratedMessage { + factory EnumDescriptorProto({ + $core.String? name, + $core.Iterable? value, + EnumOptions? options, + $core.Iterable? reservedRange, + $core.Iterable<$core.String>? reservedName, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (value != null) { + $result.value.addAll(value); + } + if (options != null) { + $result.options = options; + } + if (reservedRange != null) { + $result.reservedRange.addAll(reservedRange); + } + if (reservedName != null) { + $result.reservedName.addAll(reservedName); + } + return $result; + } + EnumDescriptorProto._() : super(); + factory EnumDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EnumDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EnumDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..pc(2, _omitFieldNames ? '' : 'value', $pb.PbFieldType.PM, subBuilder: EnumValueDescriptorProto.create) + ..aOM(3, _omitFieldNames ? '' : 'options', subBuilder: EnumOptions.create) + ..pc(4, _omitFieldNames ? '' : 'reservedRange', $pb.PbFieldType.PM, subBuilder: EnumDescriptorProto_EnumReservedRange.create) + ..pPS(5, _omitFieldNames ? '' : 'reservedName') + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EnumDescriptorProto clone() => EnumDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EnumDescriptorProto copyWith(void Function(EnumDescriptorProto) updates) => super.copyWith((message) => updates(message as EnumDescriptorProto)) as EnumDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EnumDescriptorProto create() => EnumDescriptorProto._(); + EnumDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EnumDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EnumDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + $core.List get value => $_getList(1); + + @$pb.TagNumber(3) + EnumOptions get options => $_getN(2); + @$pb.TagNumber(3) + set options(EnumOptions v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasOptions() => $_has(2); + @$pb.TagNumber(3) + void clearOptions() => clearField(3); + @$pb.TagNumber(3) + EnumOptions ensureOptions() => $_ensure(2); + + /// Range of reserved numeric values. Reserved numeric values may not be used + /// by enum values in the same enum declaration. Reserved ranges may not + /// overlap. + @$pb.TagNumber(4) + $core.List get reservedRange => $_getList(3); + + /// Reserved enum value names, which may not be reused. A given name may only + /// be reserved once. + @$pb.TagNumber(5) + $core.List<$core.String> get reservedName => $_getList(4); +} + +/// Describes a value within an enum. +class EnumValueDescriptorProto extends $pb.GeneratedMessage { + factory EnumValueDescriptorProto({ + $core.String? name, + $core.int? number, + EnumValueOptions? options, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (number != null) { + $result.number = number; + } + if (options != null) { + $result.options = options; + } + return $result; + } + EnumValueDescriptorProto._() : super(); + factory EnumValueDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EnumValueDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EnumValueDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..a<$core.int>(2, _omitFieldNames ? '' : 'number', $pb.PbFieldType.O3) + ..aOM(3, _omitFieldNames ? '' : 'options', subBuilder: EnumValueOptions.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EnumValueDescriptorProto clone() => EnumValueDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EnumValueDescriptorProto copyWith(void Function(EnumValueDescriptorProto) updates) => super.copyWith((message) => updates(message as EnumValueDescriptorProto)) as EnumValueDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EnumValueDescriptorProto create() => EnumValueDescriptorProto._(); + EnumValueDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EnumValueDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EnumValueDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + $core.int get number => $_getIZ(1); + @$pb.TagNumber(2) + set number($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasNumber() => $_has(1); + @$pb.TagNumber(2) + void clearNumber() => clearField(2); + + @$pb.TagNumber(3) + EnumValueOptions get options => $_getN(2); + @$pb.TagNumber(3) + set options(EnumValueOptions v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasOptions() => $_has(2); + @$pb.TagNumber(3) + void clearOptions() => clearField(3); + @$pb.TagNumber(3) + EnumValueOptions ensureOptions() => $_ensure(2); +} + +/// Describes a service. +class ServiceDescriptorProto extends $pb.GeneratedMessage { + factory ServiceDescriptorProto({ + $core.String? name, + $core.Iterable? method, + ServiceOptions? options, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (method != null) { + $result.method.addAll(method); + } + if (options != null) { + $result.options = options; + } + return $result; + } + ServiceDescriptorProto._() : super(); + factory ServiceDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ServiceDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ServiceDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..pc(2, _omitFieldNames ? '' : 'method', $pb.PbFieldType.PM, subBuilder: MethodDescriptorProto.create) + ..aOM(3, _omitFieldNames ? '' : 'options', subBuilder: ServiceOptions.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ServiceDescriptorProto clone() => ServiceDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ServiceDescriptorProto copyWith(void Function(ServiceDescriptorProto) updates) => super.copyWith((message) => updates(message as ServiceDescriptorProto)) as ServiceDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ServiceDescriptorProto create() => ServiceDescriptorProto._(); + ServiceDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ServiceDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ServiceDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + @$pb.TagNumber(2) + $core.List get method => $_getList(1); + + @$pb.TagNumber(3) + ServiceOptions get options => $_getN(2); + @$pb.TagNumber(3) + set options(ServiceOptions v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasOptions() => $_has(2); + @$pb.TagNumber(3) + void clearOptions() => clearField(3); + @$pb.TagNumber(3) + ServiceOptions ensureOptions() => $_ensure(2); +} + +/// Describes a method of a service. +class MethodDescriptorProto extends $pb.GeneratedMessage { + factory MethodDescriptorProto({ + $core.String? name, + $core.String? inputType, + $core.String? outputType, + MethodOptions? options, + $core.bool? clientStreaming, + $core.bool? serverStreaming, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (inputType != null) { + $result.inputType = inputType; + } + if (outputType != null) { + $result.outputType = outputType; + } + if (options != null) { + $result.options = options; + } + if (clientStreaming != null) { + $result.clientStreaming = clientStreaming; + } + if (serverStreaming != null) { + $result.serverStreaming = serverStreaming; + } + return $result; + } + MethodDescriptorProto._() : super(); + factory MethodDescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MethodDescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MethodDescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'inputType') + ..aOS(3, _omitFieldNames ? '' : 'outputType') + ..aOM(4, _omitFieldNames ? '' : 'options', subBuilder: MethodOptions.create) + ..aOB(5, _omitFieldNames ? '' : 'clientStreaming') + ..aOB(6, _omitFieldNames ? '' : 'serverStreaming') + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MethodDescriptorProto clone() => MethodDescriptorProto()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MethodDescriptorProto copyWith(void Function(MethodDescriptorProto) updates) => super.copyWith((message) => updates(message as MethodDescriptorProto)) as MethodDescriptorProto; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MethodDescriptorProto create() => MethodDescriptorProto._(); + MethodDescriptorProto createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MethodDescriptorProto getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MethodDescriptorProto? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + /// Input and output type names. These are resolved in the same way as + /// FieldDescriptorProto.type_name, but must refer to a message type. + @$pb.TagNumber(2) + $core.String get inputType => $_getSZ(1); + @$pb.TagNumber(2) + set inputType($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasInputType() => $_has(1); + @$pb.TagNumber(2) + void clearInputType() => clearField(2); + + @$pb.TagNumber(3) + $core.String get outputType => $_getSZ(2); + @$pb.TagNumber(3) + set outputType($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasOutputType() => $_has(2); + @$pb.TagNumber(3) + void clearOutputType() => clearField(3); + + @$pb.TagNumber(4) + MethodOptions get options => $_getN(3); + @$pb.TagNumber(4) + set options(MethodOptions v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasOptions() => $_has(3); + @$pb.TagNumber(4) + void clearOptions() => clearField(4); + @$pb.TagNumber(4) + MethodOptions ensureOptions() => $_ensure(3); + + /// Identifies if client streams multiple client messages + @$pb.TagNumber(5) + $core.bool get clientStreaming => $_getBF(4); + @$pb.TagNumber(5) + set clientStreaming($core.bool v) { $_setBool(4, v); } + @$pb.TagNumber(5) + $core.bool hasClientStreaming() => $_has(4); + @$pb.TagNumber(5) + void clearClientStreaming() => clearField(5); + + /// Identifies if server streams multiple server messages + @$pb.TagNumber(6) + $core.bool get serverStreaming => $_getBF(5); + @$pb.TagNumber(6) + set serverStreaming($core.bool v) { $_setBool(5, v); } + @$pb.TagNumber(6) + $core.bool hasServerStreaming() => $_has(5); + @$pb.TagNumber(6) + void clearServerStreaming() => clearField(6); +} + +class FileOptions extends $pb.GeneratedMessage { + factory FileOptions({ + $core.String? javaPackage, + $core.String? javaOuterClassname, + FileOptions_OptimizeMode? optimizeFor, + $core.bool? javaMultipleFiles, + $core.String? goPackage, + $core.bool? ccGenericServices, + $core.bool? javaGenericServices, + $core.bool? pyGenericServices, + @$core.Deprecated('This field is deprecated.') + $core.bool? javaGenerateEqualsAndHash, + $core.bool? deprecated, + $core.bool? javaStringCheckUtf8, + $core.bool? ccEnableArenas, + $core.String? objcClassPrefix, + $core.String? csharpNamespace, + $core.String? swiftPrefix, + $core.String? phpClassPrefix, + $core.String? phpNamespace, + $core.bool? phpGenericServices, + $core.String? phpMetadataNamespace, + $core.String? rubyPackage, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (javaPackage != null) { + $result.javaPackage = javaPackage; + } + if (javaOuterClassname != null) { + $result.javaOuterClassname = javaOuterClassname; + } + if (optimizeFor != null) { + $result.optimizeFor = optimizeFor; + } + if (javaMultipleFiles != null) { + $result.javaMultipleFiles = javaMultipleFiles; + } + if (goPackage != null) { + $result.goPackage = goPackage; + } + if (ccGenericServices != null) { + $result.ccGenericServices = ccGenericServices; + } + if (javaGenericServices != null) { + $result.javaGenericServices = javaGenericServices; + } + if (pyGenericServices != null) { + $result.pyGenericServices = pyGenericServices; + } + if (javaGenerateEqualsAndHash != null) { + // ignore: deprecated_member_use_from_same_package + $result.javaGenerateEqualsAndHash = javaGenerateEqualsAndHash; + } + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (javaStringCheckUtf8 != null) { + $result.javaStringCheckUtf8 = javaStringCheckUtf8; + } + if (ccEnableArenas != null) { + $result.ccEnableArenas = ccEnableArenas; + } + if (objcClassPrefix != null) { + $result.objcClassPrefix = objcClassPrefix; + } + if (csharpNamespace != null) { + $result.csharpNamespace = csharpNamespace; + } + if (swiftPrefix != null) { + $result.swiftPrefix = swiftPrefix; + } + if (phpClassPrefix != null) { + $result.phpClassPrefix = phpClassPrefix; + } + if (phpNamespace != null) { + $result.phpNamespace = phpNamespace; + } + if (phpGenericServices != null) { + $result.phpGenericServices = phpGenericServices; + } + if (phpMetadataNamespace != null) { + $result.phpMetadataNamespace = phpMetadataNamespace; + } + if (rubyPackage != null) { + $result.rubyPackage = rubyPackage; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + FileOptions._() : super(); + factory FileOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FileOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FileOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'javaPackage') + ..aOS(8, _omitFieldNames ? '' : 'javaOuterClassname') + ..e(9, _omitFieldNames ? '' : 'optimizeFor', $pb.PbFieldType.OE, defaultOrMaker: FileOptions_OptimizeMode.SPEED, valueOf: FileOptions_OptimizeMode.valueOf, enumValues: FileOptions_OptimizeMode.values) + ..aOB(10, _omitFieldNames ? '' : 'javaMultipleFiles') + ..aOS(11, _omitFieldNames ? '' : 'goPackage') + ..aOB(16, _omitFieldNames ? '' : 'ccGenericServices') + ..aOB(17, _omitFieldNames ? '' : 'javaGenericServices') + ..aOB(18, _omitFieldNames ? '' : 'pyGenericServices') + ..aOB(20, _omitFieldNames ? '' : 'javaGenerateEqualsAndHash') + ..aOB(23, _omitFieldNames ? '' : 'deprecated') + ..aOB(27, _omitFieldNames ? '' : 'javaStringCheckUtf8') + ..a<$core.bool>(31, _omitFieldNames ? '' : 'ccEnableArenas', $pb.PbFieldType.OB, defaultOrMaker: true) + ..aOS(36, _omitFieldNames ? '' : 'objcClassPrefix') + ..aOS(37, _omitFieldNames ? '' : 'csharpNamespace') + ..aOS(39, _omitFieldNames ? '' : 'swiftPrefix') + ..aOS(40, _omitFieldNames ? '' : 'phpClassPrefix') + ..aOS(41, _omitFieldNames ? '' : 'phpNamespace') + ..aOB(42, _omitFieldNames ? '' : 'phpGenericServices') + ..aOS(44, _omitFieldNames ? '' : 'phpMetadataNamespace') + ..aOS(45, _omitFieldNames ? '' : 'rubyPackage') + ..aOM(50, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FileOptions clone() => FileOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FileOptions copyWith(void Function(FileOptions) updates) => super.copyWith((message) => updates(message as FileOptions)) as FileOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FileOptions create() => FileOptions._(); + FileOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FileOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FileOptions? _defaultInstance; + + /// Sets the Java package where classes generated from this .proto will be + /// placed. By default, the proto package is used, but this is often + /// inappropriate because proto packages do not normally start with backwards + /// domain names. + @$pb.TagNumber(1) + $core.String get javaPackage => $_getSZ(0); + @$pb.TagNumber(1) + set javaPackage($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasJavaPackage() => $_has(0); + @$pb.TagNumber(1) + void clearJavaPackage() => clearField(1); + + /// Controls the name of the wrapper Java class generated for the .proto file. + /// That class will always contain the .proto file's getDescriptor() method as + /// well as any top-level extensions defined in the .proto file. + /// If java_multiple_files is disabled, then all the other classes from the + /// .proto file will be nested inside the single wrapper outer class. + @$pb.TagNumber(8) + $core.String get javaOuterClassname => $_getSZ(1); + @$pb.TagNumber(8) + set javaOuterClassname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(8) + $core.bool hasJavaOuterClassname() => $_has(1); + @$pb.TagNumber(8) + void clearJavaOuterClassname() => clearField(8); + + @$pb.TagNumber(9) + FileOptions_OptimizeMode get optimizeFor => $_getN(2); + @$pb.TagNumber(9) + set optimizeFor(FileOptions_OptimizeMode v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasOptimizeFor() => $_has(2); + @$pb.TagNumber(9) + void clearOptimizeFor() => clearField(9); + + /// If enabled, then the Java code generator will generate a separate .java + /// file for each top-level message, enum, and service defined in the .proto + /// file. Thus, these types will *not* be nested inside the wrapper class + /// named by java_outer_classname. However, the wrapper class will still be + /// generated to contain the file's getDescriptor() method as well as any + /// top-level extensions defined in the file. + @$pb.TagNumber(10) + $core.bool get javaMultipleFiles => $_getBF(3); + @$pb.TagNumber(10) + set javaMultipleFiles($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(10) + $core.bool hasJavaMultipleFiles() => $_has(3); + @$pb.TagNumber(10) + void clearJavaMultipleFiles() => clearField(10); + + /// Sets the Go package where structs generated from this .proto will be + /// placed. If omitted, the Go package will be derived from the following: + /// - The basename of the package import path, if provided. + /// - Otherwise, the package statement in the .proto file, if present. + /// - Otherwise, the basename of the .proto file, without extension. + @$pb.TagNumber(11) + $core.String get goPackage => $_getSZ(4); + @$pb.TagNumber(11) + set goPackage($core.String v) { $_setString(4, v); } + @$pb.TagNumber(11) + $core.bool hasGoPackage() => $_has(4); + @$pb.TagNumber(11) + void clearGoPackage() => clearField(11); + + /// Should generic services be generated in each language? "Generic" services + /// are not specific to any particular RPC system. They are generated by the + /// main code generators in each language (without additional plugins). + /// Generic services were the only kind of service generation supported by + /// early versions of google.protobuf. + /// + /// Generic services are now considered deprecated in favor of using plugins + /// that generate code specific to your particular RPC system. Therefore, + /// these default to false. Old code which depends on generic services should + /// explicitly set them to true. + @$pb.TagNumber(16) + $core.bool get ccGenericServices => $_getBF(5); + @$pb.TagNumber(16) + set ccGenericServices($core.bool v) { $_setBool(5, v); } + @$pb.TagNumber(16) + $core.bool hasCcGenericServices() => $_has(5); + @$pb.TagNumber(16) + void clearCcGenericServices() => clearField(16); + + @$pb.TagNumber(17) + $core.bool get javaGenericServices => $_getBF(6); + @$pb.TagNumber(17) + set javaGenericServices($core.bool v) { $_setBool(6, v); } + @$pb.TagNumber(17) + $core.bool hasJavaGenericServices() => $_has(6); + @$pb.TagNumber(17) + void clearJavaGenericServices() => clearField(17); + + @$pb.TagNumber(18) + $core.bool get pyGenericServices => $_getBF(7); + @$pb.TagNumber(18) + set pyGenericServices($core.bool v) { $_setBool(7, v); } + @$pb.TagNumber(18) + $core.bool hasPyGenericServices() => $_has(7); + @$pb.TagNumber(18) + void clearPyGenericServices() => clearField(18); + + /// This option does nothing. + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(20) + $core.bool get javaGenerateEqualsAndHash => $_getBF(8); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(20) + set javaGenerateEqualsAndHash($core.bool v) { $_setBool(8, v); } + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(20) + $core.bool hasJavaGenerateEqualsAndHash() => $_has(8); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(20) + void clearJavaGenerateEqualsAndHash() => clearField(20); + + /// Is this file deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for everything in the file, or it will be completely ignored; in the very + /// least, this is a formalization for deprecating files. + @$pb.TagNumber(23) + $core.bool get deprecated => $_getBF(9); + @$pb.TagNumber(23) + set deprecated($core.bool v) { $_setBool(9, v); } + @$pb.TagNumber(23) + $core.bool hasDeprecated() => $_has(9); + @$pb.TagNumber(23) + void clearDeprecated() => clearField(23); + + /// If set true, then the Java2 code generator will generate code that + /// throws an exception whenever an attempt is made to assign a non-UTF-8 + /// byte sequence to a string field. + /// Message reflection will do the same. + /// However, an extension field still accepts non-UTF-8 byte sequences. + /// This option has no effect on when used with the lite runtime. + @$pb.TagNumber(27) + $core.bool get javaStringCheckUtf8 => $_getBF(10); + @$pb.TagNumber(27) + set javaStringCheckUtf8($core.bool v) { $_setBool(10, v); } + @$pb.TagNumber(27) + $core.bool hasJavaStringCheckUtf8() => $_has(10); + @$pb.TagNumber(27) + void clearJavaStringCheckUtf8() => clearField(27); + + /// Enables the use of arenas for the proto messages in this file. This applies + /// only to generated classes for C++. + @$pb.TagNumber(31) + $core.bool get ccEnableArenas => $_getB(11, true); + @$pb.TagNumber(31) + set ccEnableArenas($core.bool v) { $_setBool(11, v); } + @$pb.TagNumber(31) + $core.bool hasCcEnableArenas() => $_has(11); + @$pb.TagNumber(31) + void clearCcEnableArenas() => clearField(31); + + /// Sets the objective c class prefix which is prepended to all objective c + /// generated classes from this .proto. There is no default. + @$pb.TagNumber(36) + $core.String get objcClassPrefix => $_getSZ(12); + @$pb.TagNumber(36) + set objcClassPrefix($core.String v) { $_setString(12, v); } + @$pb.TagNumber(36) + $core.bool hasObjcClassPrefix() => $_has(12); + @$pb.TagNumber(36) + void clearObjcClassPrefix() => clearField(36); + + /// Namespace for generated classes; defaults to the package. + @$pb.TagNumber(37) + $core.String get csharpNamespace => $_getSZ(13); + @$pb.TagNumber(37) + set csharpNamespace($core.String v) { $_setString(13, v); } + @$pb.TagNumber(37) + $core.bool hasCsharpNamespace() => $_has(13); + @$pb.TagNumber(37) + void clearCsharpNamespace() => clearField(37); + + /// By default Swift generators will take the proto package and CamelCase it + /// replacing '.' with underscore and use that to prefix the types/symbols + /// defined. When this options is provided, they will use this value instead + /// to prefix the types/symbols defined. + @$pb.TagNumber(39) + $core.String get swiftPrefix => $_getSZ(14); + @$pb.TagNumber(39) + set swiftPrefix($core.String v) { $_setString(14, v); } + @$pb.TagNumber(39) + $core.bool hasSwiftPrefix() => $_has(14); + @$pb.TagNumber(39) + void clearSwiftPrefix() => clearField(39); + + /// Sets the php class prefix which is prepended to all php generated classes + /// from this .proto. Default is empty. + @$pb.TagNumber(40) + $core.String get phpClassPrefix => $_getSZ(15); + @$pb.TagNumber(40) + set phpClassPrefix($core.String v) { $_setString(15, v); } + @$pb.TagNumber(40) + $core.bool hasPhpClassPrefix() => $_has(15); + @$pb.TagNumber(40) + void clearPhpClassPrefix() => clearField(40); + + /// Use this option to change the namespace of php generated classes. Default + /// is empty. When this option is empty, the package name will be used for + /// determining the namespace. + @$pb.TagNumber(41) + $core.String get phpNamespace => $_getSZ(16); + @$pb.TagNumber(41) + set phpNamespace($core.String v) { $_setString(16, v); } + @$pb.TagNumber(41) + $core.bool hasPhpNamespace() => $_has(16); + @$pb.TagNumber(41) + void clearPhpNamespace() => clearField(41); + + @$pb.TagNumber(42) + $core.bool get phpGenericServices => $_getBF(17); + @$pb.TagNumber(42) + set phpGenericServices($core.bool v) { $_setBool(17, v); } + @$pb.TagNumber(42) + $core.bool hasPhpGenericServices() => $_has(17); + @$pb.TagNumber(42) + void clearPhpGenericServices() => clearField(42); + + /// Use this option to change the namespace of php generated metadata classes. + /// Default is empty. When this option is empty, the proto file name will be + /// used for determining the namespace. + @$pb.TagNumber(44) + $core.String get phpMetadataNamespace => $_getSZ(18); + @$pb.TagNumber(44) + set phpMetadataNamespace($core.String v) { $_setString(18, v); } + @$pb.TagNumber(44) + $core.bool hasPhpMetadataNamespace() => $_has(18); + @$pb.TagNumber(44) + void clearPhpMetadataNamespace() => clearField(44); + + /// Use this option to change the package of ruby generated classes. Default + /// is empty. When this option is not set, the package name will be used for + /// determining the ruby package. + @$pb.TagNumber(45) + $core.String get rubyPackage => $_getSZ(19); + @$pb.TagNumber(45) + set rubyPackage($core.String v) { $_setString(19, v); } + @$pb.TagNumber(45) + $core.bool hasRubyPackage() => $_has(19); + @$pb.TagNumber(45) + void clearRubyPackage() => clearField(45); + + /// Any features defined in the specific edition. + @$pb.TagNumber(50) + FeatureSet get features => $_getN(20); + @$pb.TagNumber(50) + set features(FeatureSet v) { setField(50, v); } + @$pb.TagNumber(50) + $core.bool hasFeatures() => $_has(20); + @$pb.TagNumber(50) + void clearFeatures() => clearField(50); + @$pb.TagNumber(50) + FeatureSet ensureFeatures() => $_ensure(20); + + /// The parser stores options it doesn't recognize here. + /// See the documentation for the "Options" section above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(21); +} + +class MessageOptions extends $pb.GeneratedMessage { + factory MessageOptions({ + $core.bool? messageSetWireFormat, + $core.bool? noStandardDescriptorAccessor, + $core.bool? deprecated, + $core.bool? mapEntry, + @$core.Deprecated('This field is deprecated.') + $core.bool? deprecatedLegacyJsonFieldConflicts, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (messageSetWireFormat != null) { + $result.messageSetWireFormat = messageSetWireFormat; + } + if (noStandardDescriptorAccessor != null) { + $result.noStandardDescriptorAccessor = noStandardDescriptorAccessor; + } + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (mapEntry != null) { + $result.mapEntry = mapEntry; + } + if (deprecatedLegacyJsonFieldConflicts != null) { + // ignore: deprecated_member_use_from_same_package + $result.deprecatedLegacyJsonFieldConflicts = deprecatedLegacyJsonFieldConflicts; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + MessageOptions._() : super(); + factory MessageOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MessageOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MessageOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'messageSetWireFormat') + ..aOB(2, _omitFieldNames ? '' : 'noStandardDescriptorAccessor') + ..aOB(3, _omitFieldNames ? '' : 'deprecated') + ..aOB(7, _omitFieldNames ? '' : 'mapEntry') + ..aOB(11, _omitFieldNames ? '' : 'deprecatedLegacyJsonFieldConflicts') + ..aOM(12, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MessageOptions clone() => MessageOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MessageOptions copyWith(void Function(MessageOptions) updates) => super.copyWith((message) => updates(message as MessageOptions)) as MessageOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MessageOptions create() => MessageOptions._(); + MessageOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MessageOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MessageOptions? _defaultInstance; + + /// Set true to use the old proto1 MessageSet wire format for extensions. + /// This is provided for backwards-compatibility with the MessageSet wire + /// format. You should not use this for any other reason: It's less + /// efficient, has fewer features, and is more complicated. + /// + /// The message must be defined exactly as follows: + /// message Foo { + /// option message_set_wire_format = true; + /// extensions 4 to max; + /// } + /// Note that the message cannot have any defined fields; MessageSets only + /// have extensions. + /// + /// All extensions of your type must be singular messages; e.g. they cannot + /// be int32s, enums, or repeated messages. + /// + /// Because this is an option, the above two restrictions are not enforced by + /// the protocol compiler. + @$pb.TagNumber(1) + $core.bool get messageSetWireFormat => $_getBF(0); + @$pb.TagNumber(1) + set messageSetWireFormat($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(1) + $core.bool hasMessageSetWireFormat() => $_has(0); + @$pb.TagNumber(1) + void clearMessageSetWireFormat() => clearField(1); + + /// Disables the generation of the standard "descriptor()" accessor, which can + /// conflict with a field of the same name. This is meant to make migration + /// from proto1 easier; new code should avoid fields named "descriptor". + @$pb.TagNumber(2) + $core.bool get noStandardDescriptorAccessor => $_getBF(1); + @$pb.TagNumber(2) + set noStandardDescriptorAccessor($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasNoStandardDescriptorAccessor() => $_has(1); + @$pb.TagNumber(2) + void clearNoStandardDescriptorAccessor() => clearField(2); + + /// Is this message deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for the message, or it will be completely ignored; in the very least, + /// this is a formalization for deprecating messages. + @$pb.TagNumber(3) + $core.bool get deprecated => $_getBF(2); + @$pb.TagNumber(3) + set deprecated($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasDeprecated() => $_has(2); + @$pb.TagNumber(3) + void clearDeprecated() => clearField(3); + + /// NOTE: Do not set the option in .proto files. Always use the maps syntax + /// instead. The option should only be implicitly set by the proto compiler + /// parser. + /// + /// Whether the message is an automatically generated map entry type for the + /// maps field. + /// + /// For maps fields: + /// map map_field = 1; + /// The parsed descriptor looks like: + /// message MapFieldEntry { + /// option map_entry = true; + /// optional KeyType key = 1; + /// optional ValueType value = 2; + /// } + /// repeated MapFieldEntry map_field = 1; + /// + /// Implementations may choose not to generate the map_entry=true message, but + /// use a native map in the target language to hold the keys and values. + /// The reflection APIs in such implementations still need to work as + /// if the field is a repeated message field. + @$pb.TagNumber(7) + $core.bool get mapEntry => $_getBF(3); + @$pb.TagNumber(7) + set mapEntry($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(7) + $core.bool hasMapEntry() => $_has(3); + @$pb.TagNumber(7) + void clearMapEntry() => clearField(7); + + /// Enable the legacy handling of JSON field name conflicts. This lowercases + /// and strips underscored from the fields before comparison in proto3 only. + /// The new behavior takes `json_name` into account and applies to proto2 as + /// well. + /// + /// This should only be used as a temporary measure against broken builds due + /// to the change in behavior for JSON field name conflicts. + /// + /// TODO This is legacy behavior we plan to remove once downstream + /// teams have had time to migrate. + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(11) + $core.bool get deprecatedLegacyJsonFieldConflicts => $_getBF(4); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(11) + set deprecatedLegacyJsonFieldConflicts($core.bool v) { $_setBool(4, v); } + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(11) + $core.bool hasDeprecatedLegacyJsonFieldConflicts() => $_has(4); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(11) + void clearDeprecatedLegacyJsonFieldConflicts() => clearField(11); + + /// Any features defined in the specific edition. + @$pb.TagNumber(12) + FeatureSet get features => $_getN(5); + @$pb.TagNumber(12) + set features(FeatureSet v) { setField(12, v); } + @$pb.TagNumber(12) + $core.bool hasFeatures() => $_has(5); + @$pb.TagNumber(12) + void clearFeatures() => clearField(12); + @$pb.TagNumber(12) + FeatureSet ensureFeatures() => $_ensure(5); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(6); +} + +class FieldOptions_EditionDefault extends $pb.GeneratedMessage { + factory FieldOptions_EditionDefault({ + $core.String? value, + Edition? edition, + }) { + final $result = create(); + if (value != null) { + $result.value = value; + } + if (edition != null) { + $result.edition = edition; + } + return $result; + } + FieldOptions_EditionDefault._() : super(); + factory FieldOptions_EditionDefault.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FieldOptions_EditionDefault.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FieldOptions.EditionDefault', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOS(2, _omitFieldNames ? '' : 'value') + ..e(3, _omitFieldNames ? '' : 'edition', $pb.PbFieldType.OE, defaultOrMaker: Edition.EDITION_UNKNOWN, valueOf: Edition.valueOf, enumValues: Edition.values) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FieldOptions_EditionDefault clone() => FieldOptions_EditionDefault()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FieldOptions_EditionDefault copyWith(void Function(FieldOptions_EditionDefault) updates) => super.copyWith((message) => updates(message as FieldOptions_EditionDefault)) as FieldOptions_EditionDefault; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FieldOptions_EditionDefault create() => FieldOptions_EditionDefault._(); + FieldOptions_EditionDefault createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FieldOptions_EditionDefault getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FieldOptions_EditionDefault? _defaultInstance; + + @$pb.TagNumber(2) + $core.String get value => $_getSZ(0); + @$pb.TagNumber(2) + set value($core.String v) { $_setString(0, v); } + @$pb.TagNumber(2) + $core.bool hasValue() => $_has(0); + @$pb.TagNumber(2) + void clearValue() => clearField(2); + + @$pb.TagNumber(3) + Edition get edition => $_getN(1); + @$pb.TagNumber(3) + set edition(Edition v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasEdition() => $_has(1); + @$pb.TagNumber(3) + void clearEdition() => clearField(3); +} + +class FieldOptions extends $pb.GeneratedMessage { + factory FieldOptions({ + FieldOptions_CType? ctype, + $core.bool? packed, + $core.bool? deprecated, + $core.bool? lazy, + FieldOptions_JSType? jstype, + $core.bool? weak, + $core.bool? unverifiedLazy, + $core.bool? debugRedact, + FieldOptions_OptionRetention? retention, + $core.Iterable? targets, + $core.Iterable? editionDefaults, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (ctype != null) { + $result.ctype = ctype; + } + if (packed != null) { + $result.packed = packed; + } + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (lazy != null) { + $result.lazy = lazy; + } + if (jstype != null) { + $result.jstype = jstype; + } + if (weak != null) { + $result.weak = weak; + } + if (unverifiedLazy != null) { + $result.unverifiedLazy = unverifiedLazy; + } + if (debugRedact != null) { + $result.debugRedact = debugRedact; + } + if (retention != null) { + $result.retention = retention; + } + if (targets != null) { + $result.targets.addAll(targets); + } + if (editionDefaults != null) { + $result.editionDefaults.addAll(editionDefaults); + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + FieldOptions._() : super(); + factory FieldOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FieldOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FieldOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'ctype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_CType.STRING, valueOf: FieldOptions_CType.valueOf, enumValues: FieldOptions_CType.values) + ..aOB(2, _omitFieldNames ? '' : 'packed') + ..aOB(3, _omitFieldNames ? '' : 'deprecated') + ..aOB(5, _omitFieldNames ? '' : 'lazy') + ..e(6, _omitFieldNames ? '' : 'jstype', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_JSType.JS_NORMAL, valueOf: FieldOptions_JSType.valueOf, enumValues: FieldOptions_JSType.values) + ..aOB(10, _omitFieldNames ? '' : 'weak') + ..aOB(15, _omitFieldNames ? '' : 'unverifiedLazy') + ..aOB(16, _omitFieldNames ? '' : 'debugRedact') + ..e(17, _omitFieldNames ? '' : 'retention', $pb.PbFieldType.OE, defaultOrMaker: FieldOptions_OptionRetention.RETENTION_UNKNOWN, valueOf: FieldOptions_OptionRetention.valueOf, enumValues: FieldOptions_OptionRetention.values) + ..pc(19, _omitFieldNames ? '' : 'targets', $pb.PbFieldType.PE, valueOf: FieldOptions_OptionTargetType.valueOf, enumValues: FieldOptions_OptionTargetType.values, defaultEnumValue: FieldOptions_OptionTargetType.TARGET_TYPE_UNKNOWN) + ..pc(20, _omitFieldNames ? '' : 'editionDefaults', $pb.PbFieldType.PM, subBuilder: FieldOptions_EditionDefault.create) + ..aOM(21, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FieldOptions clone() => FieldOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FieldOptions copyWith(void Function(FieldOptions) updates) => super.copyWith((message) => updates(message as FieldOptions)) as FieldOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FieldOptions create() => FieldOptions._(); + FieldOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FieldOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FieldOptions? _defaultInstance; + + /// The ctype option instructs the C++ code generator to use a different + /// representation of the field than it normally would. See the specific + /// options below. This option is only implemented to support use of + /// [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of + /// type "bytes" in the open source release -- sorry, we'll try to include + /// other types in a future version! + @$pb.TagNumber(1) + FieldOptions_CType get ctype => $_getN(0); + @$pb.TagNumber(1) + set ctype(FieldOptions_CType v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasCtype() => $_has(0); + @$pb.TagNumber(1) + void clearCtype() => clearField(1); + + /// The packed option can be enabled for repeated primitive fields to enable + /// a more efficient representation on the wire. Rather than repeatedly + /// writing the tag and type for each element, the entire array is encoded as + /// a single length-delimited blob. In proto3, only explicit setting it to + /// false will avoid using packed encoding. This option is prohibited in + /// Editions, but the `repeated_field_encoding` feature can be used to control + /// the behavior. + @$pb.TagNumber(2) + $core.bool get packed => $_getBF(1); + @$pb.TagNumber(2) + set packed($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasPacked() => $_has(1); + @$pb.TagNumber(2) + void clearPacked() => clearField(2); + + /// Is this field deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for accessors, or it will be completely ignored; in the very least, this + /// is a formalization for deprecating fields. + @$pb.TagNumber(3) + $core.bool get deprecated => $_getBF(2); + @$pb.TagNumber(3) + set deprecated($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasDeprecated() => $_has(2); + @$pb.TagNumber(3) + void clearDeprecated() => clearField(3); + + /// Should this field be parsed lazily? Lazy applies only to message-type + /// fields. It means that when the outer message is initially parsed, the + /// inner message's contents will not be parsed but instead stored in encoded + /// form. The inner message will actually be parsed when it is first accessed. + /// + /// This is only a hint. Implementations are free to choose whether to use + /// eager or lazy parsing regardless of the value of this option. However, + /// setting this option true suggests that the protocol author believes that + /// using lazy parsing on this field is worth the additional bookkeeping + /// overhead typically needed to implement it. + /// + /// This option does not affect the public interface of any generated code; + /// all method signatures remain the same. Furthermore, thread-safety of the + /// interface is not affected by this option; const methods remain safe to + /// call from multiple threads concurrently, while non-const methods continue + /// to require exclusive access. + /// + /// Note that implementations may choose not to check required fields within + /// a lazy sub-message. That is, calling IsInitialized() on the outer message + /// may return true even if the inner message has missing required fields. + /// This is necessary because otherwise the inner message would have to be + /// parsed in order to perform the check, defeating the purpose of lazy + /// parsing. An implementation which chooses not to check required fields + /// must be consistent about it. That is, for any particular sub-message, the + /// implementation must either *always* check its required fields, or *never* + /// check its required fields, regardless of whether or not the message has + /// been parsed. + /// + /// As of May 2022, lazy verifies the contents of the byte stream during + /// parsing. An invalid byte stream will cause the overall parsing to fail. + @$pb.TagNumber(5) + $core.bool get lazy => $_getBF(3); + @$pb.TagNumber(5) + set lazy($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(5) + $core.bool hasLazy() => $_has(3); + @$pb.TagNumber(5) + void clearLazy() => clearField(5); + + /// The jstype option determines the JavaScript type used for values of the + /// field. The option is permitted only for 64 bit integral and fixed types + /// (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + /// is represented as JavaScript string, which avoids loss of precision that + /// can happen when a large value is converted to a floating point JavaScript. + /// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + /// use the JavaScript "number" type. The behavior of the default option + /// JS_NORMAL is implementation dependent. + /// + /// This option is an enum to permit additional types to be added, e.g. + /// goog.math.Integer. + @$pb.TagNumber(6) + FieldOptions_JSType get jstype => $_getN(4); + @$pb.TagNumber(6) + set jstype(FieldOptions_JSType v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasJstype() => $_has(4); + @$pb.TagNumber(6) + void clearJstype() => clearField(6); + + /// For Google-internal migration only. Do not use. + @$pb.TagNumber(10) + $core.bool get weak => $_getBF(5); + @$pb.TagNumber(10) + set weak($core.bool v) { $_setBool(5, v); } + @$pb.TagNumber(10) + $core.bool hasWeak() => $_has(5); + @$pb.TagNumber(10) + void clearWeak() => clearField(10); + + /// unverified_lazy does no correctness checks on the byte stream. This should + /// only be used where lazy with verification is prohibitive for performance + /// reasons. + @$pb.TagNumber(15) + $core.bool get unverifiedLazy => $_getBF(6); + @$pb.TagNumber(15) + set unverifiedLazy($core.bool v) { $_setBool(6, v); } + @$pb.TagNumber(15) + $core.bool hasUnverifiedLazy() => $_has(6); + @$pb.TagNumber(15) + void clearUnverifiedLazy() => clearField(15); + + /// Indicate that the field value should not be printed out when using debug + /// formats, e.g. when the field contains sensitive credentials. + @$pb.TagNumber(16) + $core.bool get debugRedact => $_getBF(7); + @$pb.TagNumber(16) + set debugRedact($core.bool v) { $_setBool(7, v); } + @$pb.TagNumber(16) + $core.bool hasDebugRedact() => $_has(7); + @$pb.TagNumber(16) + void clearDebugRedact() => clearField(16); + + @$pb.TagNumber(17) + FieldOptions_OptionRetention get retention => $_getN(8); + @$pb.TagNumber(17) + set retention(FieldOptions_OptionRetention v) { setField(17, v); } + @$pb.TagNumber(17) + $core.bool hasRetention() => $_has(8); + @$pb.TagNumber(17) + void clearRetention() => clearField(17); + + @$pb.TagNumber(19) + $core.List get targets => $_getList(9); + + @$pb.TagNumber(20) + $core.List get editionDefaults => $_getList(10); + + /// Any features defined in the specific edition. + @$pb.TagNumber(21) + FeatureSet get features => $_getN(11); + @$pb.TagNumber(21) + set features(FeatureSet v) { setField(21, v); } + @$pb.TagNumber(21) + $core.bool hasFeatures() => $_has(11); + @$pb.TagNumber(21) + void clearFeatures() => clearField(21); + @$pb.TagNumber(21) + FeatureSet ensureFeatures() => $_ensure(11); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(12); +} + +class OneofOptions extends $pb.GeneratedMessage { + factory OneofOptions({ + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + OneofOptions._() : super(); + factory OneofOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory OneofOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OneofOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + OneofOptions clone() => OneofOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + OneofOptions copyWith(void Function(OneofOptions) updates) => super.copyWith((message) => updates(message as OneofOptions)) as OneofOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static OneofOptions create() => OneofOptions._(); + OneofOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static OneofOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static OneofOptions? _defaultInstance; + + /// Any features defined in the specific edition. + @$pb.TagNumber(1) + FeatureSet get features => $_getN(0); + @$pb.TagNumber(1) + set features(FeatureSet v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasFeatures() => $_has(0); + @$pb.TagNumber(1) + void clearFeatures() => clearField(1); + @$pb.TagNumber(1) + FeatureSet ensureFeatures() => $_ensure(0); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(1); +} + +class EnumOptions extends $pb.GeneratedMessage { + factory EnumOptions({ + $core.bool? allowAlias, + $core.bool? deprecated, + @$core.Deprecated('This field is deprecated.') + $core.bool? deprecatedLegacyJsonFieldConflicts, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (allowAlias != null) { + $result.allowAlias = allowAlias; + } + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (deprecatedLegacyJsonFieldConflicts != null) { + // ignore: deprecated_member_use_from_same_package + $result.deprecatedLegacyJsonFieldConflicts = deprecatedLegacyJsonFieldConflicts; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + EnumOptions._() : super(); + factory EnumOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EnumOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EnumOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOB(2, _omitFieldNames ? '' : 'allowAlias') + ..aOB(3, _omitFieldNames ? '' : 'deprecated') + ..aOB(6, _omitFieldNames ? '' : 'deprecatedLegacyJsonFieldConflicts') + ..aOM(7, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EnumOptions clone() => EnumOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EnumOptions copyWith(void Function(EnumOptions) updates) => super.copyWith((message) => updates(message as EnumOptions)) as EnumOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EnumOptions create() => EnumOptions._(); + EnumOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EnumOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EnumOptions? _defaultInstance; + + /// Set this option to true to allow mapping different tag names to the same + /// value. + @$pb.TagNumber(2) + $core.bool get allowAlias => $_getBF(0); + @$pb.TagNumber(2) + set allowAlias($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(2) + $core.bool hasAllowAlias() => $_has(0); + @$pb.TagNumber(2) + void clearAllowAlias() => clearField(2); + + /// Is this enum deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for the enum, or it will be completely ignored; in the very least, this + /// is a formalization for deprecating enums. + @$pb.TagNumber(3) + $core.bool get deprecated => $_getBF(1); + @$pb.TagNumber(3) + set deprecated($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(3) + $core.bool hasDeprecated() => $_has(1); + @$pb.TagNumber(3) + void clearDeprecated() => clearField(3); + + /// Enable the legacy handling of JSON field name conflicts. This lowercases + /// and strips underscored from the fields before comparison in proto3 only. + /// The new behavior takes `json_name` into account and applies to proto2 as + /// well. + /// TODO Remove this legacy behavior once downstream teams have + /// had time to migrate. + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(6) + $core.bool get deprecatedLegacyJsonFieldConflicts => $_getBF(2); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(6) + set deprecatedLegacyJsonFieldConflicts($core.bool v) { $_setBool(2, v); } + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(6) + $core.bool hasDeprecatedLegacyJsonFieldConflicts() => $_has(2); + @$core.Deprecated('This field is deprecated.') + @$pb.TagNumber(6) + void clearDeprecatedLegacyJsonFieldConflicts() => clearField(6); + + /// Any features defined in the specific edition. + @$pb.TagNumber(7) + FeatureSet get features => $_getN(3); + @$pb.TagNumber(7) + set features(FeatureSet v) { setField(7, v); } + @$pb.TagNumber(7) + $core.bool hasFeatures() => $_has(3); + @$pb.TagNumber(7) + void clearFeatures() => clearField(7); + @$pb.TagNumber(7) + FeatureSet ensureFeatures() => $_ensure(3); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(4); +} + +class EnumValueOptions extends $pb.GeneratedMessage { + factory EnumValueOptions({ + $core.bool? deprecated, + FeatureSet? features, + $core.bool? debugRedact, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (features != null) { + $result.features = features; + } + if (debugRedact != null) { + $result.debugRedact = debugRedact; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + EnumValueOptions._() : super(); + factory EnumValueOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EnumValueOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EnumValueOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'deprecated') + ..aOM(2, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..aOB(3, _omitFieldNames ? '' : 'debugRedact') + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EnumValueOptions clone() => EnumValueOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EnumValueOptions copyWith(void Function(EnumValueOptions) updates) => super.copyWith((message) => updates(message as EnumValueOptions)) as EnumValueOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EnumValueOptions create() => EnumValueOptions._(); + EnumValueOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EnumValueOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EnumValueOptions? _defaultInstance; + + /// Is this enum value deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for the enum value, or it will be completely ignored; in the very least, + /// this is a formalization for deprecating enum values. + @$pb.TagNumber(1) + $core.bool get deprecated => $_getBF(0); + @$pb.TagNumber(1) + set deprecated($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(1) + $core.bool hasDeprecated() => $_has(0); + @$pb.TagNumber(1) + void clearDeprecated() => clearField(1); + + /// Any features defined in the specific edition. + @$pb.TagNumber(2) + FeatureSet get features => $_getN(1); + @$pb.TagNumber(2) + set features(FeatureSet v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasFeatures() => $_has(1); + @$pb.TagNumber(2) + void clearFeatures() => clearField(2); + @$pb.TagNumber(2) + FeatureSet ensureFeatures() => $_ensure(1); + + /// Indicate that fields annotated with this enum value should not be printed + /// out when using debug formats, e.g. when the field contains sensitive + /// credentials. + @$pb.TagNumber(3) + $core.bool get debugRedact => $_getBF(2); + @$pb.TagNumber(3) + set debugRedact($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasDebugRedact() => $_has(2); + @$pb.TagNumber(3) + void clearDebugRedact() => clearField(3); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(3); +} + +class ServiceOptions extends $pb.GeneratedMessage { + factory ServiceOptions({ + $core.bool? deprecated, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + ServiceOptions._() : super(); + factory ServiceOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ServiceOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ServiceOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOB(33, _omitFieldNames ? '' : 'deprecated') + ..aOM(34, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ServiceOptions clone() => ServiceOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ServiceOptions copyWith(void Function(ServiceOptions) updates) => super.copyWith((message) => updates(message as ServiceOptions)) as ServiceOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ServiceOptions create() => ServiceOptions._(); + ServiceOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ServiceOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ServiceOptions? _defaultInstance; + + /// Is this service deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for the service, or it will be completely ignored; in the very least, + /// this is a formalization for deprecating services. + @$pb.TagNumber(33) + $core.bool get deprecated => $_getBF(0); + @$pb.TagNumber(33) + set deprecated($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(33) + $core.bool hasDeprecated() => $_has(0); + @$pb.TagNumber(33) + void clearDeprecated() => clearField(33); + + /// Any features defined in the specific edition. + @$pb.TagNumber(34) + FeatureSet get features => $_getN(1); + @$pb.TagNumber(34) + set features(FeatureSet v) { setField(34, v); } + @$pb.TagNumber(34) + $core.bool hasFeatures() => $_has(1); + @$pb.TagNumber(34) + void clearFeatures() => clearField(34); + @$pb.TagNumber(34) + FeatureSet ensureFeatures() => $_ensure(1); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(2); +} + +class MethodOptions extends $pb.GeneratedMessage { + factory MethodOptions({ + $core.bool? deprecated, + MethodOptions_IdempotencyLevel? idempotencyLevel, + FeatureSet? features, + $core.Iterable? uninterpretedOption, + }) { + final $result = create(); + if (deprecated != null) { + $result.deprecated = deprecated; + } + if (idempotencyLevel != null) { + $result.idempotencyLevel = idempotencyLevel; + } + if (features != null) { + $result.features = features; + } + if (uninterpretedOption != null) { + $result.uninterpretedOption.addAll(uninterpretedOption); + } + return $result; + } + MethodOptions._() : super(); + factory MethodOptions.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MethodOptions.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MethodOptions', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOB(33, _omitFieldNames ? '' : 'deprecated') + ..e(34, _omitFieldNames ? '' : 'idempotencyLevel', $pb.PbFieldType.OE, defaultOrMaker: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN, valueOf: MethodOptions_IdempotencyLevel.valueOf, enumValues: MethodOptions_IdempotencyLevel.values) + ..aOM(35, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..pc(999, _omitFieldNames ? '' : 'uninterpretedOption', $pb.PbFieldType.PM, subBuilder: UninterpretedOption.create) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MethodOptions clone() => MethodOptions()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MethodOptions copyWith(void Function(MethodOptions) updates) => super.copyWith((message) => updates(message as MethodOptions)) as MethodOptions; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MethodOptions create() => MethodOptions._(); + MethodOptions createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MethodOptions getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MethodOptions? _defaultInstance; + + /// Is this method deprecated? + /// Depending on the target platform, this can emit Deprecated annotations + /// for the method, or it will be completely ignored; in the very least, + /// this is a formalization for deprecating methods. + @$pb.TagNumber(33) + $core.bool get deprecated => $_getBF(0); + @$pb.TagNumber(33) + set deprecated($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(33) + $core.bool hasDeprecated() => $_has(0); + @$pb.TagNumber(33) + void clearDeprecated() => clearField(33); + + @$pb.TagNumber(34) + MethodOptions_IdempotencyLevel get idempotencyLevel => $_getN(1); + @$pb.TagNumber(34) + set idempotencyLevel(MethodOptions_IdempotencyLevel v) { setField(34, v); } + @$pb.TagNumber(34) + $core.bool hasIdempotencyLevel() => $_has(1); + @$pb.TagNumber(34) + void clearIdempotencyLevel() => clearField(34); + + /// Any features defined in the specific edition. + @$pb.TagNumber(35) + FeatureSet get features => $_getN(2); + @$pb.TagNumber(35) + set features(FeatureSet v) { setField(35, v); } + @$pb.TagNumber(35) + $core.bool hasFeatures() => $_has(2); + @$pb.TagNumber(35) + void clearFeatures() => clearField(35); + @$pb.TagNumber(35) + FeatureSet ensureFeatures() => $_ensure(2); + + /// The parser stores options it doesn't recognize here. See above. + @$pb.TagNumber(999) + $core.List get uninterpretedOption => $_getList(3); +} + +/// The name of the uninterpreted option. Each string represents a segment in +/// a dot-separated name. is_extension is true iff a segment represents an +/// extension (denoted with parentheses in options specs in .proto files). +/// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents +/// "foo.(bar.baz).moo". +class UninterpretedOption_NamePart extends $pb.GeneratedMessage { + factory UninterpretedOption_NamePart({ + $core.String? namePart, + $core.bool? isExtension, + }) { + final $result = create(); + if (namePart != null) { + $result.namePart = namePart; + } + if (isExtension != null) { + $result.isExtension = isExtension; + } + return $result; + } + UninterpretedOption_NamePart._() : super(); + factory UninterpretedOption_NamePart.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UninterpretedOption_NamePart.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UninterpretedOption.NamePart', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aQS(1, _omitFieldNames ? '' : 'namePart') + ..a<$core.bool>(2, _omitFieldNames ? '' : 'isExtension', $pb.PbFieldType.QB) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UninterpretedOption_NamePart clone() => UninterpretedOption_NamePart()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UninterpretedOption_NamePart copyWith(void Function(UninterpretedOption_NamePart) updates) => super.copyWith((message) => updates(message as UninterpretedOption_NamePart)) as UninterpretedOption_NamePart; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UninterpretedOption_NamePart create() => UninterpretedOption_NamePart._(); + UninterpretedOption_NamePart createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UninterpretedOption_NamePart getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UninterpretedOption_NamePart? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get namePart => $_getSZ(0); + @$pb.TagNumber(1) + set namePart($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasNamePart() => $_has(0); + @$pb.TagNumber(1) + void clearNamePart() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get isExtension => $_getBF(1); + @$pb.TagNumber(2) + set isExtension($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasIsExtension() => $_has(1); + @$pb.TagNumber(2) + void clearIsExtension() => clearField(2); +} + +/// A message representing a option the parser does not recognize. This only +/// appears in options protos created by the compiler::Parser class. +/// DescriptorPool resolves these when building Descriptor objects. Therefore, +/// options protos in descriptor objects (e.g. returned by Descriptor::options(), +/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +/// in them. +class UninterpretedOption extends $pb.GeneratedMessage { + factory UninterpretedOption({ + $core.Iterable? name, + $core.String? identifierValue, + $fixnum.Int64? positiveIntValue, + $fixnum.Int64? negativeIntValue, + $core.double? doubleValue, + $core.List<$core.int>? stringValue, + $core.String? aggregateValue, + }) { + final $result = create(); + if (name != null) { + $result.name.addAll(name); + } + if (identifierValue != null) { + $result.identifierValue = identifierValue; + } + if (positiveIntValue != null) { + $result.positiveIntValue = positiveIntValue; + } + if (negativeIntValue != null) { + $result.negativeIntValue = negativeIntValue; + } + if (doubleValue != null) { + $result.doubleValue = doubleValue; + } + if (stringValue != null) { + $result.stringValue = stringValue; + } + if (aggregateValue != null) { + $result.aggregateValue = aggregateValue; + } + return $result; + } + UninterpretedOption._() : super(); + factory UninterpretedOption.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UninterpretedOption.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UninterpretedOption', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(2, _omitFieldNames ? '' : 'name', $pb.PbFieldType.PM, subBuilder: UninterpretedOption_NamePart.create) + ..aOS(3, _omitFieldNames ? '' : 'identifierValue') + ..a<$fixnum.Int64>(4, _omitFieldNames ? '' : 'positiveIntValue', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aInt64(5, _omitFieldNames ? '' : 'negativeIntValue') + ..a<$core.double>(6, _omitFieldNames ? '' : 'doubleValue', $pb.PbFieldType.OD) + ..a<$core.List<$core.int>>(7, _omitFieldNames ? '' : 'stringValue', $pb.PbFieldType.OY) + ..aOS(8, _omitFieldNames ? '' : 'aggregateValue') + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UninterpretedOption clone() => UninterpretedOption()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UninterpretedOption copyWith(void Function(UninterpretedOption) updates) => super.copyWith((message) => updates(message as UninterpretedOption)) as UninterpretedOption; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UninterpretedOption create() => UninterpretedOption._(); + UninterpretedOption createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UninterpretedOption getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UninterpretedOption? _defaultInstance; + + @$pb.TagNumber(2) + $core.List get name => $_getList(0); + + /// The value of the uninterpreted option, in whatever type the tokenizer + /// identified it as during parsing. Exactly one of these should be set. + @$pb.TagNumber(3) + $core.String get identifierValue => $_getSZ(1); + @$pb.TagNumber(3) + set identifierValue($core.String v) { $_setString(1, v); } + @$pb.TagNumber(3) + $core.bool hasIdentifierValue() => $_has(1); + @$pb.TagNumber(3) + void clearIdentifierValue() => clearField(3); + + @$pb.TagNumber(4) + $fixnum.Int64 get positiveIntValue => $_getI64(2); + @$pb.TagNumber(4) + set positiveIntValue($fixnum.Int64 v) { $_setInt64(2, v); } + @$pb.TagNumber(4) + $core.bool hasPositiveIntValue() => $_has(2); + @$pb.TagNumber(4) + void clearPositiveIntValue() => clearField(4); + + @$pb.TagNumber(5) + $fixnum.Int64 get negativeIntValue => $_getI64(3); + @$pb.TagNumber(5) + set negativeIntValue($fixnum.Int64 v) { $_setInt64(3, v); } + @$pb.TagNumber(5) + $core.bool hasNegativeIntValue() => $_has(3); + @$pb.TagNumber(5) + void clearNegativeIntValue() => clearField(5); + + @$pb.TagNumber(6) + $core.double get doubleValue => $_getN(4); + @$pb.TagNumber(6) + set doubleValue($core.double v) { $_setDouble(4, v); } + @$pb.TagNumber(6) + $core.bool hasDoubleValue() => $_has(4); + @$pb.TagNumber(6) + void clearDoubleValue() => clearField(6); + + @$pb.TagNumber(7) + $core.List<$core.int> get stringValue => $_getN(5); + @$pb.TagNumber(7) + set stringValue($core.List<$core.int> v) { $_setBytes(5, v); } + @$pb.TagNumber(7) + $core.bool hasStringValue() => $_has(5); + @$pb.TagNumber(7) + void clearStringValue() => clearField(7); + + @$pb.TagNumber(8) + $core.String get aggregateValue => $_getSZ(6); + @$pb.TagNumber(8) + set aggregateValue($core.String v) { $_setString(6, v); } + @$pb.TagNumber(8) + $core.bool hasAggregateValue() => $_has(6); + @$pb.TagNumber(8) + void clearAggregateValue() => clearField(8); +} + +/// TODO Enums in C++ gencode (and potentially other languages) are +/// not well scoped. This means that each of the feature enums below can clash +/// with each other. The short names we've chosen maximize call-site +/// readability, but leave us very open to this scenario. A future feature will +/// be designed and implemented to handle this, hopefully before we ever hit a +/// conflict here. +class FeatureSet extends $pb.GeneratedMessage { + factory FeatureSet({ + FeatureSet_FieldPresence? fieldPresence, + FeatureSet_EnumType? enumType, + FeatureSet_RepeatedFieldEncoding? repeatedFieldEncoding, + FeatureSet_Utf8Validation? utf8Validation, + FeatureSet_MessageEncoding? messageEncoding, + FeatureSet_JsonFormat? jsonFormat, + }) { + final $result = create(); + if (fieldPresence != null) { + $result.fieldPresence = fieldPresence; + } + if (enumType != null) { + $result.enumType = enumType; + } + if (repeatedFieldEncoding != null) { + $result.repeatedFieldEncoding = repeatedFieldEncoding; + } + if (utf8Validation != null) { + $result.utf8Validation = utf8Validation; + } + if (messageEncoding != null) { + $result.messageEncoding = messageEncoding; + } + if (jsonFormat != null) { + $result.jsonFormat = jsonFormat; + } + return $result; + } + FeatureSet._() : super(); + factory FeatureSet.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FeatureSet.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FeatureSet', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'fieldPresence', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN, valueOf: FeatureSet_FieldPresence.valueOf, enumValues: FeatureSet_FieldPresence.values) + ..e(2, _omitFieldNames ? '' : 'enumType', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_EnumType.ENUM_TYPE_UNKNOWN, valueOf: FeatureSet_EnumType.valueOf, enumValues: FeatureSet_EnumType.values) + ..e(3, _omitFieldNames ? '' : 'repeatedFieldEncoding', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN, valueOf: FeatureSet_RepeatedFieldEncoding.valueOf, enumValues: FeatureSet_RepeatedFieldEncoding.values) + ..e(4, _omitFieldNames ? '' : 'utf8Validation', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN, valueOf: FeatureSet_Utf8Validation.valueOf, enumValues: FeatureSet_Utf8Validation.values) + ..e(5, _omitFieldNames ? '' : 'messageEncoding', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN, valueOf: FeatureSet_MessageEncoding.valueOf, enumValues: FeatureSet_MessageEncoding.values) + ..e(6, _omitFieldNames ? '' : 'jsonFormat', $pb.PbFieldType.OE, defaultOrMaker: FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN, valueOf: FeatureSet_JsonFormat.valueOf, enumValues: FeatureSet_JsonFormat.values) + ..hasExtensions = true + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FeatureSet clone() => FeatureSet()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FeatureSet copyWith(void Function(FeatureSet) updates) => super.copyWith((message) => updates(message as FeatureSet)) as FeatureSet; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FeatureSet create() => FeatureSet._(); + FeatureSet createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FeatureSet getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FeatureSet? _defaultInstance; + + @$pb.TagNumber(1) + FeatureSet_FieldPresence get fieldPresence => $_getN(0); + @$pb.TagNumber(1) + set fieldPresence(FeatureSet_FieldPresence v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasFieldPresence() => $_has(0); + @$pb.TagNumber(1) + void clearFieldPresence() => clearField(1); + + @$pb.TagNumber(2) + FeatureSet_EnumType get enumType => $_getN(1); + @$pb.TagNumber(2) + set enumType(FeatureSet_EnumType v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasEnumType() => $_has(1); + @$pb.TagNumber(2) + void clearEnumType() => clearField(2); + + @$pb.TagNumber(3) + FeatureSet_RepeatedFieldEncoding get repeatedFieldEncoding => $_getN(2); + @$pb.TagNumber(3) + set repeatedFieldEncoding(FeatureSet_RepeatedFieldEncoding v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasRepeatedFieldEncoding() => $_has(2); + @$pb.TagNumber(3) + void clearRepeatedFieldEncoding() => clearField(3); + + @$pb.TagNumber(4) + FeatureSet_Utf8Validation get utf8Validation => $_getN(3); + @$pb.TagNumber(4) + set utf8Validation(FeatureSet_Utf8Validation v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasUtf8Validation() => $_has(3); + @$pb.TagNumber(4) + void clearUtf8Validation() => clearField(4); + + @$pb.TagNumber(5) + FeatureSet_MessageEncoding get messageEncoding => $_getN(4); + @$pb.TagNumber(5) + set messageEncoding(FeatureSet_MessageEncoding v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasMessageEncoding() => $_has(4); + @$pb.TagNumber(5) + void clearMessageEncoding() => clearField(5); + + @$pb.TagNumber(6) + FeatureSet_JsonFormat get jsonFormat => $_getN(5); + @$pb.TagNumber(6) + set jsonFormat(FeatureSet_JsonFormat v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasJsonFormat() => $_has(5); + @$pb.TagNumber(6) + void clearJsonFormat() => clearField(6); +} + +/// A map from every known edition with a unique set of defaults to its +/// defaults. Not all editions may be contained here. For a given edition, +/// the defaults at the closest matching edition ordered at or before it should +/// be used. This field must be in strict ascending order by edition. +class FeatureSetDefaults_FeatureSetEditionDefault extends $pb.GeneratedMessage { + factory FeatureSetDefaults_FeatureSetEditionDefault({ + FeatureSet? features, + Edition? edition, + }) { + final $result = create(); + if (features != null) { + $result.features = features; + } + if (edition != null) { + $result.edition = edition; + } + return $result; + } + FeatureSetDefaults_FeatureSetEditionDefault._() : super(); + factory FeatureSetDefaults_FeatureSetEditionDefault.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FeatureSetDefaults_FeatureSetEditionDefault.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FeatureSetDefaults.FeatureSetEditionDefault', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..aOM(2, _omitFieldNames ? '' : 'features', subBuilder: FeatureSet.create) + ..e(3, _omitFieldNames ? '' : 'edition', $pb.PbFieldType.OE, defaultOrMaker: Edition.EDITION_UNKNOWN, valueOf: Edition.valueOf, enumValues: Edition.values) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FeatureSetDefaults_FeatureSetEditionDefault clone() => FeatureSetDefaults_FeatureSetEditionDefault()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FeatureSetDefaults_FeatureSetEditionDefault copyWith(void Function(FeatureSetDefaults_FeatureSetEditionDefault) updates) => super.copyWith((message) => updates(message as FeatureSetDefaults_FeatureSetEditionDefault)) as FeatureSetDefaults_FeatureSetEditionDefault; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FeatureSetDefaults_FeatureSetEditionDefault create() => FeatureSetDefaults_FeatureSetEditionDefault._(); + FeatureSetDefaults_FeatureSetEditionDefault createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FeatureSetDefaults_FeatureSetEditionDefault getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FeatureSetDefaults_FeatureSetEditionDefault? _defaultInstance; + + @$pb.TagNumber(2) + FeatureSet get features => $_getN(0); + @$pb.TagNumber(2) + set features(FeatureSet v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasFeatures() => $_has(0); + @$pb.TagNumber(2) + void clearFeatures() => clearField(2); + @$pb.TagNumber(2) + FeatureSet ensureFeatures() => $_ensure(0); + + @$pb.TagNumber(3) + Edition get edition => $_getN(1); + @$pb.TagNumber(3) + set edition(Edition v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasEdition() => $_has(1); + @$pb.TagNumber(3) + void clearEdition() => clearField(3); +} + +/// A compiled specification for the defaults of a set of features. These +/// messages are generated from FeatureSet extensions and can be used to seed +/// feature resolution. The resolution with this object becomes a simple search +/// for the closest matching edition, followed by proto merges. +class FeatureSetDefaults extends $pb.GeneratedMessage { + factory FeatureSetDefaults({ + $core.Iterable? defaults, + Edition? minimumEdition, + Edition? maximumEdition, + }) { + final $result = create(); + if (defaults != null) { + $result.defaults.addAll(defaults); + } + if (minimumEdition != null) { + $result.minimumEdition = minimumEdition; + } + if (maximumEdition != null) { + $result.maximumEdition = maximumEdition; + } + return $result; + } + FeatureSetDefaults._() : super(); + factory FeatureSetDefaults.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FeatureSetDefaults.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FeatureSetDefaults', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'defaults', $pb.PbFieldType.PM, subBuilder: FeatureSetDefaults_FeatureSetEditionDefault.create) + ..e(4, _omitFieldNames ? '' : 'minimumEdition', $pb.PbFieldType.OE, defaultOrMaker: Edition.EDITION_UNKNOWN, valueOf: Edition.valueOf, enumValues: Edition.values) + ..e(5, _omitFieldNames ? '' : 'maximumEdition', $pb.PbFieldType.OE, defaultOrMaker: Edition.EDITION_UNKNOWN, valueOf: Edition.valueOf, enumValues: Edition.values) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FeatureSetDefaults clone() => FeatureSetDefaults()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FeatureSetDefaults copyWith(void Function(FeatureSetDefaults) updates) => super.copyWith((message) => updates(message as FeatureSetDefaults)) as FeatureSetDefaults; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FeatureSetDefaults create() => FeatureSetDefaults._(); + FeatureSetDefaults createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FeatureSetDefaults getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FeatureSetDefaults? _defaultInstance; + + @$pb.TagNumber(1) + $core.List get defaults => $_getList(0); + + /// The minimum supported edition (inclusive) when this was constructed. + /// Editions before this will not have defaults. + @$pb.TagNumber(4) + Edition get minimumEdition => $_getN(1); + @$pb.TagNumber(4) + set minimumEdition(Edition v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasMinimumEdition() => $_has(1); + @$pb.TagNumber(4) + void clearMinimumEdition() => clearField(4); + + /// The maximum known edition (inclusive) when this was constructed. Editions + /// after this will not have reliable defaults. + @$pb.TagNumber(5) + Edition get maximumEdition => $_getN(2); + @$pb.TagNumber(5) + set maximumEdition(Edition v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasMaximumEdition() => $_has(2); + @$pb.TagNumber(5) + void clearMaximumEdition() => clearField(5); +} + +class SourceCodeInfo_Location extends $pb.GeneratedMessage { + factory SourceCodeInfo_Location({ + $core.Iterable<$core.int>? path, + $core.Iterable<$core.int>? span, + $core.String? leadingComments, + $core.String? trailingComments, + $core.Iterable<$core.String>? leadingDetachedComments, + }) { + final $result = create(); + if (path != null) { + $result.path.addAll(path); + } + if (span != null) { + $result.span.addAll(span); + } + if (leadingComments != null) { + $result.leadingComments = leadingComments; + } + if (trailingComments != null) { + $result.trailingComments = trailingComments; + } + if (leadingDetachedComments != null) { + $result.leadingDetachedComments.addAll(leadingDetachedComments); + } + return $result; + } + SourceCodeInfo_Location._() : super(); + factory SourceCodeInfo_Location.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory SourceCodeInfo_Location.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SourceCodeInfo.Location', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..p<$core.int>(1, _omitFieldNames ? '' : 'path', $pb.PbFieldType.K3) + ..p<$core.int>(2, _omitFieldNames ? '' : 'span', $pb.PbFieldType.K3) + ..aOS(3, _omitFieldNames ? '' : 'leadingComments') + ..aOS(4, _omitFieldNames ? '' : 'trailingComments') + ..pPS(6, _omitFieldNames ? '' : 'leadingDetachedComments') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SourceCodeInfo_Location clone() => SourceCodeInfo_Location()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SourceCodeInfo_Location copyWith(void Function(SourceCodeInfo_Location) updates) => super.copyWith((message) => updates(message as SourceCodeInfo_Location)) as SourceCodeInfo_Location; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static SourceCodeInfo_Location create() => SourceCodeInfo_Location._(); + SourceCodeInfo_Location createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SourceCodeInfo_Location getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static SourceCodeInfo_Location? _defaultInstance; + + /// Identifies which part of the FileDescriptorProto was defined at this + /// location. + /// + /// Each element is a field number or an index. They form a path from + /// the root FileDescriptorProto to the place where the definition occurs. + /// For example, this path: + /// [ 4, 3, 2, 7, 1 ] + /// refers to: + /// file.message_type(3) // 4, 3 + /// .field(7) // 2, 7 + /// .name() // 1 + /// This is because FileDescriptorProto.message_type has field number 4: + /// repeated DescriptorProto message_type = 4; + /// and DescriptorProto.field has field number 2: + /// repeated FieldDescriptorProto field = 2; + /// and FieldDescriptorProto.name has field number 1: + /// optional string name = 1; + /// + /// Thus, the above path gives the location of a field name. If we removed + /// the last element: + /// [ 4, 3, 2, 7 ] + /// this path refers to the whole field declaration (from the beginning + /// of the label to the terminating semicolon). + @$pb.TagNumber(1) + $core.List<$core.int> get path => $_getList(0); + + /// Always has exactly three or four elements: start line, start column, + /// end line (optional, otherwise assumed same as start line), end column. + /// These are packed into a single field for efficiency. Note that line + /// and column numbers are zero-based -- typically you will want to add + /// 1 to each before displaying to a user. + @$pb.TagNumber(2) + $core.List<$core.int> get span => $_getList(1); + + /// If this SourceCodeInfo represents a complete declaration, these are any + /// comments appearing before and after the declaration which appear to be + /// attached to the declaration. + /// + /// A series of line comments appearing on consecutive lines, with no other + /// tokens appearing on those lines, will be treated as a single comment. + /// + /// leading_detached_comments will keep paragraphs of comments that appear + /// before (but not connected to) the current element. Each paragraph, + /// separated by empty lines, will be one comment element in the repeated + /// field. + /// + /// Only the comment content is provided; comment markers (e.g. //) are + /// stripped out. For block comments, leading whitespace and an asterisk + /// will be stripped from the beginning of each line other than the first. + /// Newlines are included in the output. + /// + /// Examples: + /// + /// optional int32 foo = 1; // Comment attached to foo. + /// // Comment attached to bar. + /// optional int32 bar = 2; + /// + /// optional string baz = 3; + /// // Comment attached to baz. + /// // Another line attached to baz. + /// + /// // Comment attached to moo. + /// // + /// // Another line attached to moo. + /// optional double moo = 4; + /// + /// // Detached comment for corge. This is not leading or trailing comments + /// // to moo or corge because there are blank lines separating it from + /// // both. + /// + /// // Detached comment for corge paragraph 2. + /// + /// optional string corge = 5; + /// /* Block comment attached + /// * to corge. Leading asterisks + /// * will be removed. */ + /// /* Block comment attached to + /// * grault. */ + /// optional int32 grault = 6; + /// + /// // ignored detached comments. + @$pb.TagNumber(3) + $core.String get leadingComments => $_getSZ(2); + @$pb.TagNumber(3) + set leadingComments($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasLeadingComments() => $_has(2); + @$pb.TagNumber(3) + void clearLeadingComments() => clearField(3); + + @$pb.TagNumber(4) + $core.String get trailingComments => $_getSZ(3); + @$pb.TagNumber(4) + set trailingComments($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasTrailingComments() => $_has(3); + @$pb.TagNumber(4) + void clearTrailingComments() => clearField(4); + + @$pb.TagNumber(6) + $core.List<$core.String> get leadingDetachedComments => $_getList(4); +} + +/// Encapsulates information about the original source file from which a +/// FileDescriptorProto was generated. +class SourceCodeInfo extends $pb.GeneratedMessage { + factory SourceCodeInfo({ + $core.Iterable? location, + }) { + final $result = create(); + if (location != null) { + $result.location.addAll(location); + } + return $result; + } + SourceCodeInfo._() : super(); + factory SourceCodeInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory SourceCodeInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SourceCodeInfo', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'location', $pb.PbFieldType.PM, subBuilder: SourceCodeInfo_Location.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SourceCodeInfo clone() => SourceCodeInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SourceCodeInfo copyWith(void Function(SourceCodeInfo) updates) => super.copyWith((message) => updates(message as SourceCodeInfo)) as SourceCodeInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static SourceCodeInfo create() => SourceCodeInfo._(); + SourceCodeInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SourceCodeInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static SourceCodeInfo? _defaultInstance; + + /// A Location identifies a piece of source code in a .proto file which + /// corresponds to a particular definition. This information is intended + /// to be useful to IDEs, code indexers, documentation generators, and similar + /// tools. + /// + /// For example, say we have a file like: + /// message Foo { + /// optional string foo = 1; + /// } + /// Let's look at just the field definition: + /// optional string foo = 1; + /// ^ ^^ ^^ ^ ^^^ + /// a bc de f ghi + /// We have the following locations: + /// span path represents + /// [a,i) [ 4, 0, 2, 0 ] The whole field definition. + /// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + /// [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + /// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + /// [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + /// + /// Notes: + /// - A location may refer to a repeated field itself (i.e. not to any + /// particular index within it). This is used whenever a set of elements are + /// logically enclosed in a single code segment. For example, an entire + /// extend block (possibly containing multiple extension definitions) will + /// have an outer location whose path refers to the "extensions" repeated + /// field without an index. + /// - Multiple locations may have the same path. This happens when a single + /// logical declaration is spread out across multiple places. The most + /// obvious example is the "extend" block again -- there may be multiple + /// extend blocks in the same scope, each of which will have the same path. + /// - A location's span is not always a subset of its parent's span. For + /// example, the "extendee" of an extension declaration appears at the + /// beginning of the "extend" block and is shared by all extensions within + /// the block. + /// - Just because a location's span is a subset of some other location's span + /// does not mean that it is a descendant. For example, a "group" defines + /// both a type and a field in a single declaration. Thus, the locations + /// corresponding to the type and field and their components will overlap. + /// - Code which tries to interpret locations should probably be designed to + /// ignore those that it doesn't understand, as more types of locations could + /// be recorded in the future. + @$pb.TagNumber(1) + $core.List get location => $_getList(0); +} + +class GeneratedCodeInfo_Annotation extends $pb.GeneratedMessage { + factory GeneratedCodeInfo_Annotation({ + $core.Iterable<$core.int>? path, + $core.String? sourceFile, + $core.int? begin, + $core.int? end, + GeneratedCodeInfo_Annotation_Semantic? semantic, + }) { + final $result = create(); + if (path != null) { + $result.path.addAll(path); + } + if (sourceFile != null) { + $result.sourceFile = sourceFile; + } + if (begin != null) { + $result.begin = begin; + } + if (end != null) { + $result.end = end; + } + if (semantic != null) { + $result.semantic = semantic; + } + return $result; + } + GeneratedCodeInfo_Annotation._() : super(); + factory GeneratedCodeInfo_Annotation.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GeneratedCodeInfo_Annotation.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GeneratedCodeInfo.Annotation', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..p<$core.int>(1, _omitFieldNames ? '' : 'path', $pb.PbFieldType.K3) + ..aOS(2, _omitFieldNames ? '' : 'sourceFile') + ..a<$core.int>(3, _omitFieldNames ? '' : 'begin', $pb.PbFieldType.O3) + ..a<$core.int>(4, _omitFieldNames ? '' : 'end', $pb.PbFieldType.O3) + ..e(5, _omitFieldNames ? '' : 'semantic', $pb.PbFieldType.OE, defaultOrMaker: GeneratedCodeInfo_Annotation_Semantic.NONE, valueOf: GeneratedCodeInfo_Annotation_Semantic.valueOf, enumValues: GeneratedCodeInfo_Annotation_Semantic.values) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GeneratedCodeInfo_Annotation clone() => GeneratedCodeInfo_Annotation()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GeneratedCodeInfo_Annotation copyWith(void Function(GeneratedCodeInfo_Annotation) updates) => super.copyWith((message) => updates(message as GeneratedCodeInfo_Annotation)) as GeneratedCodeInfo_Annotation; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GeneratedCodeInfo_Annotation create() => GeneratedCodeInfo_Annotation._(); + GeneratedCodeInfo_Annotation createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GeneratedCodeInfo_Annotation getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GeneratedCodeInfo_Annotation? _defaultInstance; + + /// Identifies the element in the original source .proto file. This field + /// is formatted the same as SourceCodeInfo.Location.path. + @$pb.TagNumber(1) + $core.List<$core.int> get path => $_getList(0); + + /// Identifies the filesystem path to the original source .proto. + @$pb.TagNumber(2) + $core.String get sourceFile => $_getSZ(1); + @$pb.TagNumber(2) + set sourceFile($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasSourceFile() => $_has(1); + @$pb.TagNumber(2) + void clearSourceFile() => clearField(2); + + /// Identifies the starting offset in bytes in the generated code + /// that relates to the identified object. + @$pb.TagNumber(3) + $core.int get begin => $_getIZ(2); + @$pb.TagNumber(3) + set begin($core.int v) { $_setSignedInt32(2, v); } + @$pb.TagNumber(3) + $core.bool hasBegin() => $_has(2); + @$pb.TagNumber(3) + void clearBegin() => clearField(3); + + /// Identifies the ending offset in bytes in the generated code that + /// relates to the identified object. The end offset should be one past + /// the last relevant byte (so the length of the text = end - begin). + @$pb.TagNumber(4) + $core.int get end => $_getIZ(3); + @$pb.TagNumber(4) + set end($core.int v) { $_setSignedInt32(3, v); } + @$pb.TagNumber(4) + $core.bool hasEnd() => $_has(3); + @$pb.TagNumber(4) + void clearEnd() => clearField(4); + + @$pb.TagNumber(5) + GeneratedCodeInfo_Annotation_Semantic get semantic => $_getN(4); + @$pb.TagNumber(5) + set semantic(GeneratedCodeInfo_Annotation_Semantic v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasSemantic() => $_has(4); + @$pb.TagNumber(5) + void clearSemantic() => clearField(5); +} + +/// Describes the relationship between generated code and its original source +/// file. A GeneratedCodeInfo message is associated with only one generated +/// source file, but may contain references to different source .proto files. +class GeneratedCodeInfo extends $pb.GeneratedMessage { + factory GeneratedCodeInfo({ + $core.Iterable? annotation, + }) { + final $result = create(); + if (annotation != null) { + $result.annotation.addAll(annotation); + } + return $result; + } + GeneratedCodeInfo._() : super(); + factory GeneratedCodeInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GeneratedCodeInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GeneratedCodeInfo', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'annotation', $pb.PbFieldType.PM, subBuilder: GeneratedCodeInfo_Annotation.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GeneratedCodeInfo clone() => GeneratedCodeInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GeneratedCodeInfo copyWith(void Function(GeneratedCodeInfo) updates) => super.copyWith((message) => updates(message as GeneratedCodeInfo)) as GeneratedCodeInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GeneratedCodeInfo create() => GeneratedCodeInfo._(); + GeneratedCodeInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GeneratedCodeInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GeneratedCodeInfo? _defaultInstance; + + /// An Annotation connects some span of text in generated code to an element + /// of its generating .proto file. + @$pb.TagNumber(1) + $core.List get annotation => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/descriptor.pbenum.dart b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbenum.dart new file mode 100644 index 00000000..3e18c030 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbenum.dart @@ -0,0 +1,377 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/descriptor.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// The full set of known editions. +class Edition extends $pb.ProtobufEnum { + static const Edition EDITION_UNKNOWN = Edition._(0, _omitEnumNames ? '' : 'EDITION_UNKNOWN'); + static const Edition EDITION_PROTO2 = Edition._(998, _omitEnumNames ? '' : 'EDITION_PROTO2'); + static const Edition EDITION_PROTO3 = Edition._(999, _omitEnumNames ? '' : 'EDITION_PROTO3'); + static const Edition EDITION_2023 = Edition._(1000, _omitEnumNames ? '' : 'EDITION_2023'); + static const Edition EDITION_1_TEST_ONLY = Edition._(1, _omitEnumNames ? '' : 'EDITION_1_TEST_ONLY'); + static const Edition EDITION_2_TEST_ONLY = Edition._(2, _omitEnumNames ? '' : 'EDITION_2_TEST_ONLY'); + static const Edition EDITION_99997_TEST_ONLY = Edition._(99997, _omitEnumNames ? '' : 'EDITION_99997_TEST_ONLY'); + static const Edition EDITION_99998_TEST_ONLY = Edition._(99998, _omitEnumNames ? '' : 'EDITION_99998_TEST_ONLY'); + static const Edition EDITION_99999_TEST_ONLY = Edition._(99999, _omitEnumNames ? '' : 'EDITION_99999_TEST_ONLY'); + + static const $core.List values = [ + EDITION_UNKNOWN, + EDITION_PROTO2, + EDITION_PROTO3, + EDITION_2023, + EDITION_1_TEST_ONLY, + EDITION_2_TEST_ONLY, + EDITION_99997_TEST_ONLY, + EDITION_99998_TEST_ONLY, + EDITION_99999_TEST_ONLY, + ]; + + static final $core.Map<$core.int, Edition> _byValue = $pb.ProtobufEnum.initByValue(values); + static Edition? valueOf($core.int value) => _byValue[value]; + + const Edition._($core.int v, $core.String n) : super(v, n); +} + +/// The verification state of the extension range. +class ExtensionRangeOptions_VerificationState extends $pb.ProtobufEnum { + static const ExtensionRangeOptions_VerificationState DECLARATION = ExtensionRangeOptions_VerificationState._(0, _omitEnumNames ? '' : 'DECLARATION'); + static const ExtensionRangeOptions_VerificationState UNVERIFIED = ExtensionRangeOptions_VerificationState._(1, _omitEnumNames ? '' : 'UNVERIFIED'); + + static const $core.List values = [ + DECLARATION, + UNVERIFIED, + ]; + + static final $core.Map<$core.int, ExtensionRangeOptions_VerificationState> _byValue = $pb.ProtobufEnum.initByValue(values); + static ExtensionRangeOptions_VerificationState? valueOf($core.int value) => _byValue[value]; + + const ExtensionRangeOptions_VerificationState._($core.int v, $core.String n) : super(v, n); +} + +class FieldDescriptorProto_Type extends $pb.ProtobufEnum { + static const FieldDescriptorProto_Type TYPE_DOUBLE = FieldDescriptorProto_Type._(1, _omitEnumNames ? '' : 'TYPE_DOUBLE'); + static const FieldDescriptorProto_Type TYPE_FLOAT = FieldDescriptorProto_Type._(2, _omitEnumNames ? '' : 'TYPE_FLOAT'); + static const FieldDescriptorProto_Type TYPE_INT64 = FieldDescriptorProto_Type._(3, _omitEnumNames ? '' : 'TYPE_INT64'); + static const FieldDescriptorProto_Type TYPE_UINT64 = FieldDescriptorProto_Type._(4, _omitEnumNames ? '' : 'TYPE_UINT64'); + static const FieldDescriptorProto_Type TYPE_INT32 = FieldDescriptorProto_Type._(5, _omitEnumNames ? '' : 'TYPE_INT32'); + static const FieldDescriptorProto_Type TYPE_FIXED64 = FieldDescriptorProto_Type._(6, _omitEnumNames ? '' : 'TYPE_FIXED64'); + static const FieldDescriptorProto_Type TYPE_FIXED32 = FieldDescriptorProto_Type._(7, _omitEnumNames ? '' : 'TYPE_FIXED32'); + static const FieldDescriptorProto_Type TYPE_BOOL = FieldDescriptorProto_Type._(8, _omitEnumNames ? '' : 'TYPE_BOOL'); + static const FieldDescriptorProto_Type TYPE_STRING = FieldDescriptorProto_Type._(9, _omitEnumNames ? '' : 'TYPE_STRING'); + static const FieldDescriptorProto_Type TYPE_GROUP = FieldDescriptorProto_Type._(10, _omitEnumNames ? '' : 'TYPE_GROUP'); + static const FieldDescriptorProto_Type TYPE_MESSAGE = FieldDescriptorProto_Type._(11, _omitEnumNames ? '' : 'TYPE_MESSAGE'); + static const FieldDescriptorProto_Type TYPE_BYTES = FieldDescriptorProto_Type._(12, _omitEnumNames ? '' : 'TYPE_BYTES'); + static const FieldDescriptorProto_Type TYPE_UINT32 = FieldDescriptorProto_Type._(13, _omitEnumNames ? '' : 'TYPE_UINT32'); + static const FieldDescriptorProto_Type TYPE_ENUM = FieldDescriptorProto_Type._(14, _omitEnumNames ? '' : 'TYPE_ENUM'); + static const FieldDescriptorProto_Type TYPE_SFIXED32 = FieldDescriptorProto_Type._(15, _omitEnumNames ? '' : 'TYPE_SFIXED32'); + static const FieldDescriptorProto_Type TYPE_SFIXED64 = FieldDescriptorProto_Type._(16, _omitEnumNames ? '' : 'TYPE_SFIXED64'); + static const FieldDescriptorProto_Type TYPE_SINT32 = FieldDescriptorProto_Type._(17, _omitEnumNames ? '' : 'TYPE_SINT32'); + static const FieldDescriptorProto_Type TYPE_SINT64 = FieldDescriptorProto_Type._(18, _omitEnumNames ? '' : 'TYPE_SINT64'); + + static const $core.List values = [ + TYPE_DOUBLE, + TYPE_FLOAT, + TYPE_INT64, + TYPE_UINT64, + TYPE_INT32, + TYPE_FIXED64, + TYPE_FIXED32, + TYPE_BOOL, + TYPE_STRING, + TYPE_GROUP, + TYPE_MESSAGE, + TYPE_BYTES, + TYPE_UINT32, + TYPE_ENUM, + TYPE_SFIXED32, + TYPE_SFIXED64, + TYPE_SINT32, + TYPE_SINT64, + ]; + + static final $core.Map<$core.int, FieldDescriptorProto_Type> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldDescriptorProto_Type? valueOf($core.int value) => _byValue[value]; + + const FieldDescriptorProto_Type._($core.int v, $core.String n) : super(v, n); +} + +class FieldDescriptorProto_Label extends $pb.ProtobufEnum { + static const FieldDescriptorProto_Label LABEL_OPTIONAL = FieldDescriptorProto_Label._(1, _omitEnumNames ? '' : 'LABEL_OPTIONAL'); + static const FieldDescriptorProto_Label LABEL_REPEATED = FieldDescriptorProto_Label._(3, _omitEnumNames ? '' : 'LABEL_REPEATED'); + static const FieldDescriptorProto_Label LABEL_REQUIRED = FieldDescriptorProto_Label._(2, _omitEnumNames ? '' : 'LABEL_REQUIRED'); + + static const $core.List values = [ + LABEL_OPTIONAL, + LABEL_REPEATED, + LABEL_REQUIRED, + ]; + + static final $core.Map<$core.int, FieldDescriptorProto_Label> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldDescriptorProto_Label? valueOf($core.int value) => _byValue[value]; + + const FieldDescriptorProto_Label._($core.int v, $core.String n) : super(v, n); +} + +/// Generated classes can be optimized for speed or code size. +class FileOptions_OptimizeMode extends $pb.ProtobufEnum { + static const FileOptions_OptimizeMode SPEED = FileOptions_OptimizeMode._(1, _omitEnumNames ? '' : 'SPEED'); + static const FileOptions_OptimizeMode CODE_SIZE = FileOptions_OptimizeMode._(2, _omitEnumNames ? '' : 'CODE_SIZE'); + static const FileOptions_OptimizeMode LITE_RUNTIME = FileOptions_OptimizeMode._(3, _omitEnumNames ? '' : 'LITE_RUNTIME'); + + static const $core.List values = [ + SPEED, + CODE_SIZE, + LITE_RUNTIME, + ]; + + static final $core.Map<$core.int, FileOptions_OptimizeMode> _byValue = $pb.ProtobufEnum.initByValue(values); + static FileOptions_OptimizeMode? valueOf($core.int value) => _byValue[value]; + + const FileOptions_OptimizeMode._($core.int v, $core.String n) : super(v, n); +} + +class FieldOptions_CType extends $pb.ProtobufEnum { + static const FieldOptions_CType STRING = FieldOptions_CType._(0, _omitEnumNames ? '' : 'STRING'); + static const FieldOptions_CType CORD = FieldOptions_CType._(1, _omitEnumNames ? '' : 'CORD'); + static const FieldOptions_CType STRING_PIECE = FieldOptions_CType._(2, _omitEnumNames ? '' : 'STRING_PIECE'); + + static const $core.List values = [ + STRING, + CORD, + STRING_PIECE, + ]; + + static final $core.Map<$core.int, FieldOptions_CType> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldOptions_CType? valueOf($core.int value) => _byValue[value]; + + const FieldOptions_CType._($core.int v, $core.String n) : super(v, n); +} + +class FieldOptions_JSType extends $pb.ProtobufEnum { + static const FieldOptions_JSType JS_NORMAL = FieldOptions_JSType._(0, _omitEnumNames ? '' : 'JS_NORMAL'); + static const FieldOptions_JSType JS_STRING = FieldOptions_JSType._(1, _omitEnumNames ? '' : 'JS_STRING'); + static const FieldOptions_JSType JS_NUMBER = FieldOptions_JSType._(2, _omitEnumNames ? '' : 'JS_NUMBER'); + + static const $core.List values = [ + JS_NORMAL, + JS_STRING, + JS_NUMBER, + ]; + + static final $core.Map<$core.int, FieldOptions_JSType> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldOptions_JSType? valueOf($core.int value) => _byValue[value]; + + const FieldOptions_JSType._($core.int v, $core.String n) : super(v, n); +} + +/// If set to RETENTION_SOURCE, the option will be omitted from the binary. +/// Note: as of January 2023, support for this is in progress and does not yet +/// have an effect (b/264593489). +class FieldOptions_OptionRetention extends $pb.ProtobufEnum { + static const FieldOptions_OptionRetention RETENTION_UNKNOWN = FieldOptions_OptionRetention._(0, _omitEnumNames ? '' : 'RETENTION_UNKNOWN'); + static const FieldOptions_OptionRetention RETENTION_RUNTIME = FieldOptions_OptionRetention._(1, _omitEnumNames ? '' : 'RETENTION_RUNTIME'); + static const FieldOptions_OptionRetention RETENTION_SOURCE = FieldOptions_OptionRetention._(2, _omitEnumNames ? '' : 'RETENTION_SOURCE'); + + static const $core.List values = [ + RETENTION_UNKNOWN, + RETENTION_RUNTIME, + RETENTION_SOURCE, + ]; + + static final $core.Map<$core.int, FieldOptions_OptionRetention> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldOptions_OptionRetention? valueOf($core.int value) => _byValue[value]; + + const FieldOptions_OptionRetention._($core.int v, $core.String n) : super(v, n); +} + +/// This indicates the types of entities that the field may apply to when used +/// as an option. If it is unset, then the field may be freely used as an +/// option on any kind of entity. Note: as of January 2023, support for this is +/// in progress and does not yet have an effect (b/264593489). +class FieldOptions_OptionTargetType extends $pb.ProtobufEnum { + static const FieldOptions_OptionTargetType TARGET_TYPE_UNKNOWN = FieldOptions_OptionTargetType._(0, _omitEnumNames ? '' : 'TARGET_TYPE_UNKNOWN'); + static const FieldOptions_OptionTargetType TARGET_TYPE_FILE = FieldOptions_OptionTargetType._(1, _omitEnumNames ? '' : 'TARGET_TYPE_FILE'); + static const FieldOptions_OptionTargetType TARGET_TYPE_EXTENSION_RANGE = FieldOptions_OptionTargetType._(2, _omitEnumNames ? '' : 'TARGET_TYPE_EXTENSION_RANGE'); + static const FieldOptions_OptionTargetType TARGET_TYPE_MESSAGE = FieldOptions_OptionTargetType._(3, _omitEnumNames ? '' : 'TARGET_TYPE_MESSAGE'); + static const FieldOptions_OptionTargetType TARGET_TYPE_FIELD = FieldOptions_OptionTargetType._(4, _omitEnumNames ? '' : 'TARGET_TYPE_FIELD'); + static const FieldOptions_OptionTargetType TARGET_TYPE_ONEOF = FieldOptions_OptionTargetType._(5, _omitEnumNames ? '' : 'TARGET_TYPE_ONEOF'); + static const FieldOptions_OptionTargetType TARGET_TYPE_ENUM = FieldOptions_OptionTargetType._(6, _omitEnumNames ? '' : 'TARGET_TYPE_ENUM'); + static const FieldOptions_OptionTargetType TARGET_TYPE_ENUM_ENTRY = FieldOptions_OptionTargetType._(7, _omitEnumNames ? '' : 'TARGET_TYPE_ENUM_ENTRY'); + static const FieldOptions_OptionTargetType TARGET_TYPE_SERVICE = FieldOptions_OptionTargetType._(8, _omitEnumNames ? '' : 'TARGET_TYPE_SERVICE'); + static const FieldOptions_OptionTargetType TARGET_TYPE_METHOD = FieldOptions_OptionTargetType._(9, _omitEnumNames ? '' : 'TARGET_TYPE_METHOD'); + + static const $core.List values = [ + TARGET_TYPE_UNKNOWN, + TARGET_TYPE_FILE, + TARGET_TYPE_EXTENSION_RANGE, + TARGET_TYPE_MESSAGE, + TARGET_TYPE_FIELD, + TARGET_TYPE_ONEOF, + TARGET_TYPE_ENUM, + TARGET_TYPE_ENUM_ENTRY, + TARGET_TYPE_SERVICE, + TARGET_TYPE_METHOD, + ]; + + static final $core.Map<$core.int, FieldOptions_OptionTargetType> _byValue = $pb.ProtobufEnum.initByValue(values); + static FieldOptions_OptionTargetType? valueOf($core.int value) => _byValue[value]; + + const FieldOptions_OptionTargetType._($core.int v, $core.String n) : super(v, n); +} + +/// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, +/// or neither? HTTP based RPC implementation may choose GET verb for safe +/// methods, and PUT verb for idempotent methods instead of the default POST. +class MethodOptions_IdempotencyLevel extends $pb.ProtobufEnum { + static const MethodOptions_IdempotencyLevel IDEMPOTENCY_UNKNOWN = MethodOptions_IdempotencyLevel._(0, _omitEnumNames ? '' : 'IDEMPOTENCY_UNKNOWN'); + static const MethodOptions_IdempotencyLevel NO_SIDE_EFFECTS = MethodOptions_IdempotencyLevel._(1, _omitEnumNames ? '' : 'NO_SIDE_EFFECTS'); + static const MethodOptions_IdempotencyLevel IDEMPOTENT = MethodOptions_IdempotencyLevel._(2, _omitEnumNames ? '' : 'IDEMPOTENT'); + + static const $core.List values = [ + IDEMPOTENCY_UNKNOWN, + NO_SIDE_EFFECTS, + IDEMPOTENT, + ]; + + static final $core.Map<$core.int, MethodOptions_IdempotencyLevel> _byValue = $pb.ProtobufEnum.initByValue(values); + static MethodOptions_IdempotencyLevel? valueOf($core.int value) => _byValue[value]; + + const MethodOptions_IdempotencyLevel._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_FieldPresence extends $pb.ProtobufEnum { + static const FeatureSet_FieldPresence FIELD_PRESENCE_UNKNOWN = FeatureSet_FieldPresence._(0, _omitEnumNames ? '' : 'FIELD_PRESENCE_UNKNOWN'); + static const FeatureSet_FieldPresence EXPLICIT = FeatureSet_FieldPresence._(1, _omitEnumNames ? '' : 'EXPLICIT'); + static const FeatureSet_FieldPresence IMPLICIT = FeatureSet_FieldPresence._(2, _omitEnumNames ? '' : 'IMPLICIT'); + static const FeatureSet_FieldPresence LEGACY_REQUIRED = FeatureSet_FieldPresence._(3, _omitEnumNames ? '' : 'LEGACY_REQUIRED'); + + static const $core.List values = [ + FIELD_PRESENCE_UNKNOWN, + EXPLICIT, + IMPLICIT, + LEGACY_REQUIRED, + ]; + + static final $core.Map<$core.int, FeatureSet_FieldPresence> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_FieldPresence? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_FieldPresence._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_EnumType extends $pb.ProtobufEnum { + static const FeatureSet_EnumType ENUM_TYPE_UNKNOWN = FeatureSet_EnumType._(0, _omitEnumNames ? '' : 'ENUM_TYPE_UNKNOWN'); + static const FeatureSet_EnumType OPEN = FeatureSet_EnumType._(1, _omitEnumNames ? '' : 'OPEN'); + static const FeatureSet_EnumType CLOSED = FeatureSet_EnumType._(2, _omitEnumNames ? '' : 'CLOSED'); + + static const $core.List values = [ + ENUM_TYPE_UNKNOWN, + OPEN, + CLOSED, + ]; + + static final $core.Map<$core.int, FeatureSet_EnumType> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_EnumType? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_EnumType._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_RepeatedFieldEncoding extends $pb.ProtobufEnum { + static const FeatureSet_RepeatedFieldEncoding REPEATED_FIELD_ENCODING_UNKNOWN = FeatureSet_RepeatedFieldEncoding._(0, _omitEnumNames ? '' : 'REPEATED_FIELD_ENCODING_UNKNOWN'); + static const FeatureSet_RepeatedFieldEncoding PACKED = FeatureSet_RepeatedFieldEncoding._(1, _omitEnumNames ? '' : 'PACKED'); + static const FeatureSet_RepeatedFieldEncoding EXPANDED = FeatureSet_RepeatedFieldEncoding._(2, _omitEnumNames ? '' : 'EXPANDED'); + + static const $core.List values = [ + REPEATED_FIELD_ENCODING_UNKNOWN, + PACKED, + EXPANDED, + ]; + + static final $core.Map<$core.int, FeatureSet_RepeatedFieldEncoding> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_RepeatedFieldEncoding? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_RepeatedFieldEncoding._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_Utf8Validation extends $pb.ProtobufEnum { + static const FeatureSet_Utf8Validation UTF8_VALIDATION_UNKNOWN = FeatureSet_Utf8Validation._(0, _omitEnumNames ? '' : 'UTF8_VALIDATION_UNKNOWN'); + static const FeatureSet_Utf8Validation NONE = FeatureSet_Utf8Validation._(1, _omitEnumNames ? '' : 'NONE'); + static const FeatureSet_Utf8Validation VERIFY = FeatureSet_Utf8Validation._(2, _omitEnumNames ? '' : 'VERIFY'); + + static const $core.List values = [ + UTF8_VALIDATION_UNKNOWN, + NONE, + VERIFY, + ]; + + static final $core.Map<$core.int, FeatureSet_Utf8Validation> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_Utf8Validation? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_Utf8Validation._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_MessageEncoding extends $pb.ProtobufEnum { + static const FeatureSet_MessageEncoding MESSAGE_ENCODING_UNKNOWN = FeatureSet_MessageEncoding._(0, _omitEnumNames ? '' : 'MESSAGE_ENCODING_UNKNOWN'); + static const FeatureSet_MessageEncoding LENGTH_PREFIXED = FeatureSet_MessageEncoding._(1, _omitEnumNames ? '' : 'LENGTH_PREFIXED'); + static const FeatureSet_MessageEncoding DELIMITED = FeatureSet_MessageEncoding._(2, _omitEnumNames ? '' : 'DELIMITED'); + + static const $core.List values = [ + MESSAGE_ENCODING_UNKNOWN, + LENGTH_PREFIXED, + DELIMITED, + ]; + + static final $core.Map<$core.int, FeatureSet_MessageEncoding> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_MessageEncoding? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_MessageEncoding._($core.int v, $core.String n) : super(v, n); +} + +class FeatureSet_JsonFormat extends $pb.ProtobufEnum { + static const FeatureSet_JsonFormat JSON_FORMAT_UNKNOWN = FeatureSet_JsonFormat._(0, _omitEnumNames ? '' : 'JSON_FORMAT_UNKNOWN'); + static const FeatureSet_JsonFormat ALLOW = FeatureSet_JsonFormat._(1, _omitEnumNames ? '' : 'ALLOW'); + static const FeatureSet_JsonFormat LEGACY_BEST_EFFORT = FeatureSet_JsonFormat._(2, _omitEnumNames ? '' : 'LEGACY_BEST_EFFORT'); + + static const $core.List values = [ + JSON_FORMAT_UNKNOWN, + ALLOW, + LEGACY_BEST_EFFORT, + ]; + + static final $core.Map<$core.int, FeatureSet_JsonFormat> _byValue = $pb.ProtobufEnum.initByValue(values); + static FeatureSet_JsonFormat? valueOf($core.int value) => _byValue[value]; + + const FeatureSet_JsonFormat._($core.int v, $core.String n) : super(v, n); +} + +/// Represents the identified object's effect on the element in the original +/// .proto file. +class GeneratedCodeInfo_Annotation_Semantic extends $pb.ProtobufEnum { + static const GeneratedCodeInfo_Annotation_Semantic NONE = GeneratedCodeInfo_Annotation_Semantic._(0, _omitEnumNames ? '' : 'NONE'); + static const GeneratedCodeInfo_Annotation_Semantic SET = GeneratedCodeInfo_Annotation_Semantic._(1, _omitEnumNames ? '' : 'SET'); + static const GeneratedCodeInfo_Annotation_Semantic ALIAS = GeneratedCodeInfo_Annotation_Semantic._(2, _omitEnumNames ? '' : 'ALIAS'); + + static const $core.List values = [ + NONE, + SET, + ALIAS, + ]; + + static final $core.Map<$core.int, GeneratedCodeInfo_Annotation_Semantic> _byValue = $pb.ProtobufEnum.initByValue(values); + static GeneratedCodeInfo_Annotation_Semantic? valueOf($core.int value) => _byValue[value]; + + const GeneratedCodeInfo_Annotation_Semantic._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/descriptor.pbjson.dart b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbjson.dart new file mode 100644 index 00000000..58f4f727 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbjson.dart @@ -0,0 +1,1004 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/descriptor.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use editionDescriptor instead') +const Edition$json = { + '1': 'Edition', + '2': [ + {'1': 'EDITION_UNKNOWN', '2': 0}, + {'1': 'EDITION_PROTO2', '2': 998}, + {'1': 'EDITION_PROTO3', '2': 999}, + {'1': 'EDITION_2023', '2': 1000}, + {'1': 'EDITION_1_TEST_ONLY', '2': 1}, + {'1': 'EDITION_2_TEST_ONLY', '2': 2}, + {'1': 'EDITION_99997_TEST_ONLY', '2': 99997}, + {'1': 'EDITION_99998_TEST_ONLY', '2': 99998}, + {'1': 'EDITION_99999_TEST_ONLY', '2': 99999}, + ], +}; + +/// Descriptor for `Edition`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List editionDescriptor = $convert.base64Decode( + 'CgdFZGl0aW9uEhMKD0VESVRJT05fVU5LTk9XThAAEhMKDkVESVRJT05fUFJPVE8yEOYHEhMKDk' + 'VESVRJT05fUFJPVE8zEOcHEhEKDEVESVRJT05fMjAyMxDoBxIXChNFRElUSU9OXzFfVEVTVF9P' + 'TkxZEAESFwoTRURJVElPTl8yX1RFU1RfT05MWRACEh0KF0VESVRJT05fOTk5OTdfVEVTVF9PTk' + 'xZEJ2NBhIdChdFRElUSU9OXzk5OTk4X1RFU1RfT05MWRCejQYSHQoXRURJVElPTl85OTk5OV9U' + 'RVNUX09OTFkQn40G'); + +@$core.Deprecated('Use fileDescriptorSetDescriptor instead') +const FileDescriptorSet$json = { + '1': 'FileDescriptorSet', + '2': [ + {'1': 'file', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.FileDescriptorProto', '10': 'file'}, + ], +}; + +/// Descriptor for `FileDescriptorSet`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fileDescriptorSetDescriptor = $convert.base64Decode( + 'ChFGaWxlRGVzY3JpcHRvclNldBI4CgRmaWxlGAEgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbG' + 'VEZXNjcmlwdG9yUHJvdG9SBGZpbGU='); + +@$core.Deprecated('Use fileDescriptorProtoDescriptor instead') +const FileDescriptorProto$json = { + '1': 'FileDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'package', '3': 2, '4': 1, '5': 9, '10': 'package'}, + {'1': 'dependency', '3': 3, '4': 3, '5': 9, '10': 'dependency'}, + {'1': 'public_dependency', '3': 10, '4': 3, '5': 5, '10': 'publicDependency'}, + {'1': 'weak_dependency', '3': 11, '4': 3, '5': 5, '10': 'weakDependency'}, + {'1': 'message_type', '3': 4, '4': 3, '5': 11, '6': '.google.protobuf.DescriptorProto', '10': 'messageType'}, + {'1': 'enum_type', '3': 5, '4': 3, '5': 11, '6': '.google.protobuf.EnumDescriptorProto', '10': 'enumType'}, + {'1': 'service', '3': 6, '4': 3, '5': 11, '6': '.google.protobuf.ServiceDescriptorProto', '10': 'service'}, + {'1': 'extension', '3': 7, '4': 3, '5': 11, '6': '.google.protobuf.FieldDescriptorProto', '10': 'extension'}, + {'1': 'options', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.FileOptions', '10': 'options'}, + {'1': 'source_code_info', '3': 9, '4': 1, '5': 11, '6': '.google.protobuf.SourceCodeInfo', '10': 'sourceCodeInfo'}, + {'1': 'syntax', '3': 12, '4': 1, '5': 9, '10': 'syntax'}, + {'1': 'edition', '3': 14, '4': 1, '5': 14, '6': '.google.protobuf.Edition', '10': 'edition'}, + ], +}; + +/// Descriptor for `FileDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fileDescriptorProtoDescriptor = $convert.base64Decode( + 'ChNGaWxlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSGAoHcGFja2FnZRgCIA' + 'EoCVIHcGFja2FnZRIeCgpkZXBlbmRlbmN5GAMgAygJUgpkZXBlbmRlbmN5EisKEXB1YmxpY19k' + 'ZXBlbmRlbmN5GAogAygFUhBwdWJsaWNEZXBlbmRlbmN5EicKD3dlYWtfZGVwZW5kZW5jeRgLIA' + 'MoBVIOd2Vha0RlcGVuZGVuY3kSQwoMbWVzc2FnZV90eXBlGAQgAygLMiAuZ29vZ2xlLnByb3Rv' + 'YnVmLkRlc2NyaXB0b3JQcm90b1ILbWVzc2FnZVR5cGUSQQoJZW51bV90eXBlGAUgAygLMiQuZ2' + '9vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlEkEKB3NlcnZpY2UY' + 'BiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2NyaXB0b3JQcm90b1IHc2VydmljZR' + 'JDCglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJv' + 'dG9SCWV4dGVuc2lvbhI2CgdvcHRpb25zGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcH' + 'Rpb25zUgdvcHRpb25zEkkKEHNvdXJjZV9jb2RlX2luZm8YCSABKAsyHy5nb29nbGUucHJvdG9i' + 'dWYuU291cmNlQ29kZUluZm9SDnNvdXJjZUNvZGVJbmZvEhYKBnN5bnRheBgMIAEoCVIGc3ludG' + 'F4EjIKB2VkaXRpb24YDiABKA4yGC5nb29nbGUucHJvdG9idWYuRWRpdGlvblIHZWRpdGlvbg=='); + +@$core.Deprecated('Use descriptorProtoDescriptor instead') +const DescriptorProto$json = { + '1': 'DescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'field', '3': 2, '4': 3, '5': 11, '6': '.google.protobuf.FieldDescriptorProto', '10': 'field'}, + {'1': 'extension', '3': 6, '4': 3, '5': 11, '6': '.google.protobuf.FieldDescriptorProto', '10': 'extension'}, + {'1': 'nested_type', '3': 3, '4': 3, '5': 11, '6': '.google.protobuf.DescriptorProto', '10': 'nestedType'}, + {'1': 'enum_type', '3': 4, '4': 3, '5': 11, '6': '.google.protobuf.EnumDescriptorProto', '10': 'enumType'}, + {'1': 'extension_range', '3': 5, '4': 3, '5': 11, '6': '.google.protobuf.DescriptorProto.ExtensionRange', '10': 'extensionRange'}, + {'1': 'oneof_decl', '3': 8, '4': 3, '5': 11, '6': '.google.protobuf.OneofDescriptorProto', '10': 'oneofDecl'}, + {'1': 'options', '3': 7, '4': 1, '5': 11, '6': '.google.protobuf.MessageOptions', '10': 'options'}, + {'1': 'reserved_range', '3': 9, '4': 3, '5': 11, '6': '.google.protobuf.DescriptorProto.ReservedRange', '10': 'reservedRange'}, + {'1': 'reserved_name', '3': 10, '4': 3, '5': 9, '10': 'reservedName'}, + ], + '3': [DescriptorProto_ExtensionRange$json, DescriptorProto_ReservedRange$json], +}; + +@$core.Deprecated('Use descriptorProtoDescriptor instead') +const DescriptorProto_ExtensionRange$json = { + '1': 'ExtensionRange', + '2': [ + {'1': 'start', '3': 1, '4': 1, '5': 5, '10': 'start'}, + {'1': 'end', '3': 2, '4': 1, '5': 5, '10': 'end'}, + {'1': 'options', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.ExtensionRangeOptions', '10': 'options'}, + ], +}; + +@$core.Deprecated('Use descriptorProtoDescriptor instead') +const DescriptorProto_ReservedRange$json = { + '1': 'ReservedRange', + '2': [ + {'1': 'start', '3': 1, '4': 1, '5': 5, '10': 'start'}, + {'1': 'end', '3': 2, '4': 1, '5': 5, '10': 'end'}, + ], +}; + +/// Descriptor for `DescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List descriptorProtoDescriptor = $convert.base64Decode( + 'Cg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLm' + 'dvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9u' + 'GAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb2' + '4SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3Rv' + 'UgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRG' + 'VzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29n' + 'bGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW' + '5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRv' + 'clByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZX' + 'NzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5w' + 'cm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg' + '1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoF' + 'c3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi' + '5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2Vy' + 'dmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5k'); + +@$core.Deprecated('Use extensionRangeOptionsDescriptor instead') +const ExtensionRangeOptions$json = { + '1': 'ExtensionRangeOptions', + '2': [ + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + {'1': 'declaration', '3': 2, '4': 3, '5': 11, '6': '.google.protobuf.ExtensionRangeOptions.Declaration', '8': {}, '10': 'declaration'}, + {'1': 'features', '3': 50, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'verification', '3': 3, '4': 1, '5': 14, '6': '.google.protobuf.ExtensionRangeOptions.VerificationState', '7': 'UNVERIFIED', '10': 'verification'}, + ], + '3': [ExtensionRangeOptions_Declaration$json], + '4': [ExtensionRangeOptions_VerificationState$json], + '5': [ + {'1': 1000, '2': 536870912}, + ], +}; + +@$core.Deprecated('Use extensionRangeOptionsDescriptor instead') +const ExtensionRangeOptions_Declaration$json = { + '1': 'Declaration', + '2': [ + {'1': 'number', '3': 1, '4': 1, '5': 5, '10': 'number'}, + {'1': 'full_name', '3': 2, '4': 1, '5': 9, '10': 'fullName'}, + {'1': 'type', '3': 3, '4': 1, '5': 9, '10': 'type'}, + {'1': 'reserved', '3': 5, '4': 1, '5': 8, '10': 'reserved'}, + {'1': 'repeated', '3': 6, '4': 1, '5': 8, '10': 'repeated'}, + ], + '9': [ + {'1': 4, '2': 5}, + ], +}; + +@$core.Deprecated('Use extensionRangeOptionsDescriptor instead') +const ExtensionRangeOptions_VerificationState$json = { + '1': 'VerificationState', + '2': [ + {'1': 'DECLARATION', '2': 0}, + {'1': 'UNVERIFIED', '2': 1}, + ], +}; + +/// Descriptor for `ExtensionRangeOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List extensionRangeOptionsDescriptor = $convert.base64Decode( + 'ChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMi' + 'QuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRp' + 'b24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2' + 'VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEjcKCGZlYXR1cmVzGDIgASgL' + 'MhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXRSCGZlYXR1cmVzEmgKDHZlcmlmaWNhdGlvbh' + 'gDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0' + 'aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqUAQoLRGVjbGFyYXRpb24SFgoGbn' + 'VtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBl' + 'GAMgASgJUgR0eXBlEhoKCHJlc2VydmVkGAUgASgIUghyZXNlcnZlZBIaCghyZXBlYXRlZBgGIA' + 'EoCFIIcmVwZWF0ZWRKBAgEEAUiNAoRVmVyaWZpY2F0aW9uU3RhdGUSDwoLREVDTEFSQVRJT04Q' + 'ABIOCgpVTlZFUklGSUVEEAEqCQjoBxCAgICAAg=='); + +@$core.Deprecated('Use fieldDescriptorProtoDescriptor instead') +const FieldDescriptorProto$json = { + '1': 'FieldDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'number', '3': 3, '4': 1, '5': 5, '10': 'number'}, + {'1': 'label', '3': 4, '4': 1, '5': 14, '6': '.google.protobuf.FieldDescriptorProto.Label', '10': 'label'}, + {'1': 'type', '3': 5, '4': 1, '5': 14, '6': '.google.protobuf.FieldDescriptorProto.Type', '10': 'type'}, + {'1': 'type_name', '3': 6, '4': 1, '5': 9, '10': 'typeName'}, + {'1': 'extendee', '3': 2, '4': 1, '5': 9, '10': 'extendee'}, + {'1': 'default_value', '3': 7, '4': 1, '5': 9, '10': 'defaultValue'}, + {'1': 'oneof_index', '3': 9, '4': 1, '5': 5, '10': 'oneofIndex'}, + {'1': 'json_name', '3': 10, '4': 1, '5': 9, '10': 'jsonName'}, + {'1': 'options', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.FieldOptions', '10': 'options'}, + {'1': 'proto3_optional', '3': 17, '4': 1, '5': 8, '10': 'proto3Optional'}, + ], + '4': [FieldDescriptorProto_Type$json, FieldDescriptorProto_Label$json], +}; + +@$core.Deprecated('Use fieldDescriptorProtoDescriptor instead') +const FieldDescriptorProto_Type$json = { + '1': 'Type', + '2': [ + {'1': 'TYPE_DOUBLE', '2': 1}, + {'1': 'TYPE_FLOAT', '2': 2}, + {'1': 'TYPE_INT64', '2': 3}, + {'1': 'TYPE_UINT64', '2': 4}, + {'1': 'TYPE_INT32', '2': 5}, + {'1': 'TYPE_FIXED64', '2': 6}, + {'1': 'TYPE_FIXED32', '2': 7}, + {'1': 'TYPE_BOOL', '2': 8}, + {'1': 'TYPE_STRING', '2': 9}, + {'1': 'TYPE_GROUP', '2': 10}, + {'1': 'TYPE_MESSAGE', '2': 11}, + {'1': 'TYPE_BYTES', '2': 12}, + {'1': 'TYPE_UINT32', '2': 13}, + {'1': 'TYPE_ENUM', '2': 14}, + {'1': 'TYPE_SFIXED32', '2': 15}, + {'1': 'TYPE_SFIXED64', '2': 16}, + {'1': 'TYPE_SINT32', '2': 17}, + {'1': 'TYPE_SINT64', '2': 18}, + ], +}; + +@$core.Deprecated('Use fieldDescriptorProtoDescriptor instead') +const FieldDescriptorProto_Label$json = { + '1': 'Label', + '2': [ + {'1': 'LABEL_OPTIONAL', '2': 1}, + {'1': 'LABEL_REPEATED', '2': 3}, + {'1': 'LABEL_REQUIRED', '2': 2}, + ], +}; + +/// Descriptor for `FieldDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fieldDescriptorProtoDescriptor = $convert.base64Decode( + 'ChRGaWVsZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgDIA' + 'EoBVIGbnVtYmVyEkEKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3Jp' + 'cHRvclByb3RvLkxhYmVsUgVsYWJlbBI+CgR0eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLk' + 'ZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGVSBHR5cGUSGwoJdHlwZV9uYW1lGAYgASgJUgh0eXBl' + 'TmFtZRIaCghleHRlbmRlZRgCIAEoCVIIZXh0ZW5kZWUSIwoNZGVmYXVsdF92YWx1ZRgHIAEoCV' + 'IMZGVmYXVsdFZhbHVlEh8KC29uZW9mX2luZGV4GAkgASgFUgpvbmVvZkluZGV4EhsKCWpzb25f' + 'bmFtZRgKIAEoCVIIanNvbk5hbWUSNwoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi' + '5GaWVsZE9wdGlvbnNSB29wdGlvbnMSJwoPcHJvdG8zX29wdGlvbmFsGBEgASgIUg5wcm90bzNP' + 'cHRpb25hbCK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWV' + 'BFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhF' + 'RDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCR' + 'IOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZ' + 'UEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0' + 'ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIiQwoFTGFiZWwSEgoO' + 'TEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVBFQVRFRBADEhIKDkxBQkVMX1JFUVVJUkVEEA' + 'I='); + +@$core.Deprecated('Use oneofDescriptorProtoDescriptor instead') +const OneofDescriptorProto$json = { + '1': 'OneofDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'options', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.OneofOptions', '10': 'options'}, + ], +}; + +/// Descriptor for `OneofDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List oneofDescriptorProtoDescriptor = $convert.base64Decode( + 'ChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAi' + 'ABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25z'); + +@$core.Deprecated('Use enumDescriptorProtoDescriptor instead') +const EnumDescriptorProto$json = { + '1': 'EnumDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'value', '3': 2, '4': 3, '5': 11, '6': '.google.protobuf.EnumValueDescriptorProto', '10': 'value'}, + {'1': 'options', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.EnumOptions', '10': 'options'}, + {'1': 'reserved_range', '3': 4, '4': 3, '5': 11, '6': '.google.protobuf.EnumDescriptorProto.EnumReservedRange', '10': 'reservedRange'}, + {'1': 'reserved_name', '3': 5, '4': 3, '5': 9, '10': 'reservedName'}, + ], + '3': [EnumDescriptorProto_EnumReservedRange$json], +}; + +@$core.Deprecated('Use enumDescriptorProtoDescriptor instead') +const EnumDescriptorProto_EnumReservedRange$json = { + '1': 'EnumReservedRange', + '2': [ + {'1': 'start', '3': 1, '4': 1, '5': 5, '10': 'start'}, + {'1': 'end', '3': 2, '4': 1, '5': 5, '10': 'end'}, + ], +}; + +/// Descriptor for `EnumDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List enumDescriptorProtoDescriptor = $convert.base64Decode( + 'ChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKA' + 'syKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2Cgdv' + 'cHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDn' + 'Jlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJv' + 'dG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIA' + 'MoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVz' + 'dGFydBIQCgNlbmQYAiABKAVSA2VuZA=='); + +@$core.Deprecated('Use enumValueDescriptorProtoDescriptor instead') +const EnumValueDescriptorProto$json = { + '1': 'EnumValueDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'number', '3': 2, '4': 1, '5': 5, '10': 'number'}, + {'1': 'options', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.EnumValueOptions', '10': 'options'}, + ], +}; + +/// Descriptor for `EnumValueDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List enumValueDescriptorProtoDescriptor = $convert.base64Decode( + 'ChhFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZX' + 'IYAiABKAVSBm51bWJlchI7CgdvcHRpb25zGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLkVudW1W' + 'YWx1ZU9wdGlvbnNSB29wdGlvbnM='); + +@$core.Deprecated('Use serviceDescriptorProtoDescriptor instead') +const ServiceDescriptorProto$json = { + '1': 'ServiceDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'method', '3': 2, '4': 3, '5': 11, '6': '.google.protobuf.MethodDescriptorProto', '10': 'method'}, + {'1': 'options', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.ServiceOptions', '10': 'options'}, + ], +}; + +/// Descriptor for `ServiceDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List serviceDescriptorProtoDescriptor = $convert.base64Decode( + 'ChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGA' + 'IgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkK' + 'B29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbn' + 'M='); + +@$core.Deprecated('Use methodDescriptorProtoDescriptor instead') +const MethodDescriptorProto$json = { + '1': 'MethodDescriptorProto', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'input_type', '3': 2, '4': 1, '5': 9, '10': 'inputType'}, + {'1': 'output_type', '3': 3, '4': 1, '5': 9, '10': 'outputType'}, + {'1': 'options', '3': 4, '4': 1, '5': 11, '6': '.google.protobuf.MethodOptions', '10': 'options'}, + {'1': 'client_streaming', '3': 5, '4': 1, '5': 8, '7': 'false', '10': 'clientStreaming'}, + {'1': 'server_streaming', '3': 6, '4': 1, '5': 8, '7': 'false', '10': 'serverStreaming'}, + ], +}; + +/// Descriptor for `MethodDescriptorProto`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List methodDescriptorProtoDescriptor = $convert.base64Decode( + 'ChVNZXRob2REZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIdCgppbnB1dF90eX' + 'BlGAIgASgJUglpbnB1dFR5cGUSHwoLb3V0cHV0X3R5cGUYAyABKAlSCm91dHB1dFR5cGUSOAoH' + 'b3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zUgdvcHRpb25zEj' + 'AKEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlUg9jbGllbnRTdHJlYW1pbmcSMAoQc2Vy' + 'dmVyX3N0cmVhbWluZxgGIAEoCDoFZmFsc2VSD3NlcnZlclN0cmVhbWluZw=='); + +@$core.Deprecated('Use fileOptionsDescriptor instead') +const FileOptions$json = { + '1': 'FileOptions', + '2': [ + {'1': 'java_package', '3': 1, '4': 1, '5': 9, '10': 'javaPackage'}, + {'1': 'java_outer_classname', '3': 8, '4': 1, '5': 9, '10': 'javaOuterClassname'}, + {'1': 'java_multiple_files', '3': 10, '4': 1, '5': 8, '7': 'false', '10': 'javaMultipleFiles'}, + { + '1': 'java_generate_equals_and_hash', + '3': 20, + '4': 1, + '5': 8, + '8': {'3': true}, + '10': 'javaGenerateEqualsAndHash', + }, + {'1': 'java_string_check_utf8', '3': 27, '4': 1, '5': 8, '7': 'false', '10': 'javaStringCheckUtf8'}, + {'1': 'optimize_for', '3': 9, '4': 1, '5': 14, '6': '.google.protobuf.FileOptions.OptimizeMode', '7': 'SPEED', '10': 'optimizeFor'}, + {'1': 'go_package', '3': 11, '4': 1, '5': 9, '10': 'goPackage'}, + {'1': 'cc_generic_services', '3': 16, '4': 1, '5': 8, '7': 'false', '10': 'ccGenericServices'}, + {'1': 'java_generic_services', '3': 17, '4': 1, '5': 8, '7': 'false', '10': 'javaGenericServices'}, + {'1': 'py_generic_services', '3': 18, '4': 1, '5': 8, '7': 'false', '10': 'pyGenericServices'}, + {'1': 'php_generic_services', '3': 42, '4': 1, '5': 8, '7': 'false', '10': 'phpGenericServices'}, + {'1': 'deprecated', '3': 23, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'cc_enable_arenas', '3': 31, '4': 1, '5': 8, '7': 'true', '10': 'ccEnableArenas'}, + {'1': 'objc_class_prefix', '3': 36, '4': 1, '5': 9, '10': 'objcClassPrefix'}, + {'1': 'csharp_namespace', '3': 37, '4': 1, '5': 9, '10': 'csharpNamespace'}, + {'1': 'swift_prefix', '3': 39, '4': 1, '5': 9, '10': 'swiftPrefix'}, + {'1': 'php_class_prefix', '3': 40, '4': 1, '5': 9, '10': 'phpClassPrefix'}, + {'1': 'php_namespace', '3': 41, '4': 1, '5': 9, '10': 'phpNamespace'}, + {'1': 'php_metadata_namespace', '3': 44, '4': 1, '5': 9, '10': 'phpMetadataNamespace'}, + {'1': 'ruby_package', '3': 45, '4': 1, '5': 9, '10': 'rubyPackage'}, + {'1': 'features', '3': 50, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '4': [FileOptions_OptimizeMode$json], + '5': [ + {'1': 1000, '2': 536870912}, + ], + '9': [ + {'1': 38, '2': 39}, + ], +}; + +@$core.Deprecated('Use fileOptionsDescriptor instead') +const FileOptions_OptimizeMode$json = { + '1': 'OptimizeMode', + '2': [ + {'1': 'SPEED', '2': 1}, + {'1': 'CODE_SIZE', '2': 2}, + {'1': 'LITE_RUNTIME', '2': 3}, + ], +}; + +/// Descriptor for `FileOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fileOptionsDescriptor = $convert.base64Decode( + 'CgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdm' + 'Ffb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0' + 'aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZX' + 'JhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFz' + 'aBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZW' + 'NrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlv' + 'bnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCV' + 'IJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVy' + 'aWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2' + 'VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdl' + 'bmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocE' + 'dlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIu' + 'ChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2' + 'NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UY' + 'JSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZm' + 'l4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1l' + 'c3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgAS' + 'gJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNr' + 'YWdlEjcKCGZlYXR1cmVzGDIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXRSCGZlYX' + 'R1cmVzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5V' + 'bmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZR' + 'IJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJK' + 'BAgmECc='); + +@$core.Deprecated('Use messageOptionsDescriptor instead') +const MessageOptions$json = { + '1': 'MessageOptions', + '2': [ + {'1': 'message_set_wire_format', '3': 1, '4': 1, '5': 8, '7': 'false', '10': 'messageSetWireFormat'}, + {'1': 'no_standard_descriptor_accessor', '3': 2, '4': 1, '5': 8, '7': 'false', '10': 'noStandardDescriptorAccessor'}, + {'1': 'deprecated', '3': 3, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'map_entry', '3': 7, '4': 1, '5': 8, '10': 'mapEntry'}, + { + '1': 'deprecated_legacy_json_field_conflicts', + '3': 11, + '4': 1, + '5': 8, + '8': {'3': true}, + '10': 'deprecatedLegacyJsonFieldConflicts', + }, + {'1': 'features', '3': 12, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '5': [ + {'1': 1000, '2': 536870912}, + ], + '9': [ + {'1': 4, '2': 5}, + {'1': 5, '2': 6}, + {'1': 6, '2': 7}, + {'1': 8, '2': 9}, + {'1': 9, '2': 10}, + ], +}; + +/// Descriptor for `MessageOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List messageOptionsDescriptor = $convert.base64Decode( + 'Cg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2' + 'VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNz' + 'b3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2' + 'F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50' + 'cnkSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYCyABKAhCAhgBUi' + 'JkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzEjcKCGZlYXR1cmVzGAwgASgLMhsu' + 'Z29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXRSCGZlYXR1cmVzElgKFHVuaW50ZXJwcmV0ZWRfb3' + 'B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmlu' + 'dGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgEEAVKBAgFEAZKBAgGEAdKBAgIEAlKBAgJEA' + 'o='); + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions$json = { + '1': 'FieldOptions', + '2': [ + {'1': 'ctype', '3': 1, '4': 1, '5': 14, '6': '.google.protobuf.FieldOptions.CType', '7': 'STRING', '10': 'ctype'}, + {'1': 'packed', '3': 2, '4': 1, '5': 8, '10': 'packed'}, + {'1': 'jstype', '3': 6, '4': 1, '5': 14, '6': '.google.protobuf.FieldOptions.JSType', '7': 'JS_NORMAL', '10': 'jstype'}, + {'1': 'lazy', '3': 5, '4': 1, '5': 8, '7': 'false', '10': 'lazy'}, + {'1': 'unverified_lazy', '3': 15, '4': 1, '5': 8, '7': 'false', '10': 'unverifiedLazy'}, + {'1': 'deprecated', '3': 3, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'weak', '3': 10, '4': 1, '5': 8, '7': 'false', '10': 'weak'}, + {'1': 'debug_redact', '3': 16, '4': 1, '5': 8, '7': 'false', '10': 'debugRedact'}, + {'1': 'retention', '3': 17, '4': 1, '5': 14, '6': '.google.protobuf.FieldOptions.OptionRetention', '10': 'retention'}, + {'1': 'targets', '3': 19, '4': 3, '5': 14, '6': '.google.protobuf.FieldOptions.OptionTargetType', '10': 'targets'}, + {'1': 'edition_defaults', '3': 20, '4': 3, '5': 11, '6': '.google.protobuf.FieldOptions.EditionDefault', '10': 'editionDefaults'}, + {'1': 'features', '3': 21, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '3': [FieldOptions_EditionDefault$json], + '4': [FieldOptions_CType$json, FieldOptions_JSType$json, FieldOptions_OptionRetention$json, FieldOptions_OptionTargetType$json], + '5': [ + {'1': 1000, '2': 536870912}, + ], + '9': [ + {'1': 4, '2': 5}, + {'1': 18, '2': 19}, + ], +}; + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions_EditionDefault$json = { + '1': 'EditionDefault', + '2': [ + {'1': 'edition', '3': 3, '4': 1, '5': 14, '6': '.google.protobuf.Edition', '10': 'edition'}, + {'1': 'value', '3': 2, '4': 1, '5': 9, '10': 'value'}, + ], +}; + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions_CType$json = { + '1': 'CType', + '2': [ + {'1': 'STRING', '2': 0}, + {'1': 'CORD', '2': 1}, + {'1': 'STRING_PIECE', '2': 2}, + ], +}; + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions_JSType$json = { + '1': 'JSType', + '2': [ + {'1': 'JS_NORMAL', '2': 0}, + {'1': 'JS_STRING', '2': 1}, + {'1': 'JS_NUMBER', '2': 2}, + ], +}; + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions_OptionRetention$json = { + '1': 'OptionRetention', + '2': [ + {'1': 'RETENTION_UNKNOWN', '2': 0}, + {'1': 'RETENTION_RUNTIME', '2': 1}, + {'1': 'RETENTION_SOURCE', '2': 2}, + ], +}; + +@$core.Deprecated('Use fieldOptionsDescriptor instead') +const FieldOptions_OptionTargetType$json = { + '1': 'OptionTargetType', + '2': [ + {'1': 'TARGET_TYPE_UNKNOWN', '2': 0}, + {'1': 'TARGET_TYPE_FILE', '2': 1}, + {'1': 'TARGET_TYPE_EXTENSION_RANGE', '2': 2}, + {'1': 'TARGET_TYPE_MESSAGE', '2': 3}, + {'1': 'TARGET_TYPE_FIELD', '2': 4}, + {'1': 'TARGET_TYPE_ONEOF', '2': 5}, + {'1': 'TARGET_TYPE_ENUM', '2': 6}, + {'1': 'TARGET_TYPE_ENUM_ENTRY', '2': 7}, + {'1': 'TARGET_TYPE_SERVICE', '2': 8}, + {'1': 'TARGET_TYPE_METHOD', '2': 9}, + ], +}; + +/// Descriptor for `FieldOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fieldOptionsDescriptor = $convert.base64Decode( + 'CgxGaWVsZE9wdGlvbnMSQQoFY3R5cGUYASABKA4yIy5nb29nbGUucHJvdG9idWYuRmllbGRPcH' + 'Rpb25zLkNUeXBlOgZTVFJJTkdSBWN0eXBlEhYKBnBhY2tlZBgCIAEoCFIGcGFja2VkEkcKBmpz' + 'dHlwZRgGIAEoDjIkLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuSlNUeXBlOglKU19OT1' + 'JNQUxSBmpzdHlwZRIZCgRsYXp5GAUgASgIOgVmYWxzZVIEbGF6eRIuCg91bnZlcmlmaWVkX2xh' + 'enkYDyABKAg6BWZhbHNlUg51bnZlcmlmaWVkTGF6eRIlCgpkZXByZWNhdGVkGAMgASgIOgVmYW' + 'xzZVIKZGVwcmVjYXRlZBIZCgR3ZWFrGAogASgIOgVmYWxzZVIEd2VhaxIoCgxkZWJ1Z19yZWRh' + 'Y3QYECABKAg6BWZhbHNlUgtkZWJ1Z1JlZGFjdBJLCglyZXRlbnRpb24YESABKA4yLS5nb29nbG' + 'UucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblJldGVudGlvblIJcmV0ZW50aW9uEkgKB3Rh' + 'cmdldHMYEyADKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldF' + 'R5cGVSB3RhcmdldHMSVwoQZWRpdGlvbl9kZWZhdWx0cxgUIAMoCzIsLmdvb2dsZS5wcm90b2J1' + 'Zi5GaWVsZE9wdGlvbnMuRWRpdGlvbkRlZmF1bHRSD2VkaXRpb25EZWZhdWx0cxI3CghmZWF0dX' + 'JlcxgVIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0UghmZWF0dXJlcxJYChR1bmlu' + 'dGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE' + '9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbhpaCg5FZGl0aW9uRGVmYXVsdBIyCgdlZGl0aW9u' + 'GAMgASgOMhguZ29vZ2xlLnByb3RvYnVmLkVkaXRpb25SB2VkaXRpb24SFAoFdmFsdWUYAiABKA' + 'lSBXZhbHVlIi8KBUNUeXBlEgoKBlNUUklORxAAEggKBENPUkQQARIQCgxTVFJJTkdfUElFQ0UQ' + 'AiI1CgZKU1R5cGUSDQoJSlNfTk9STUFMEAASDQoJSlNfU1RSSU5HEAESDQoJSlNfTlVNQkVSEA' + 'IiVQoPT3B0aW9uUmV0ZW50aW9uEhUKEVJFVEVOVElPTl9VTktOT1dOEAASFQoRUkVURU5USU9O' + 'X1JVTlRJTUUQARIUChBSRVRFTlRJT05fU09VUkNFEAIijAIKEE9wdGlvblRhcmdldFR5cGUSFw' + 'oTVEFSR0VUX1RZUEVfVU5LTk9XThAAEhQKEFRBUkdFVF9UWVBFX0ZJTEUQARIfChtUQVJHRVRf' + 'VFlQRV9FWFRFTlNJT05fUkFOR0UQAhIXChNUQVJHRVRfVFlQRV9NRVNTQUdFEAMSFQoRVEFSR0' + 'VUX1RZUEVfRklFTEQQBBIVChFUQVJHRVRfVFlQRV9PTkVPRhAFEhQKEFRBUkdFVF9UWVBFX0VO' + 'VU0QBhIaChZUQVJHRVRfVFlQRV9FTlVNX0VOVFJZEAcSFwoTVEFSR0VUX1RZUEVfU0VSVklDRR' + 'AIEhYKElRBUkdFVF9UWVBFX01FVEhPRBAJKgkI6AcQgICAgAJKBAgEEAVKBAgSEBM='); + +@$core.Deprecated('Use oneofOptionsDescriptor instead') +const OneofOptions$json = { + '1': 'OneofOptions', + '2': [ + {'1': 'features', '3': 1, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '5': [ + {'1': 1000, '2': 536870912}, + ], +}; + +/// Descriptor for `OneofOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List oneofOptionsDescriptor = $convert.base64Decode( + 'CgxPbmVvZk9wdGlvbnMSNwoIZmVhdHVyZXMYASABKAsyGy5nb29nbGUucHJvdG9idWYuRmVhdH' + 'VyZVNldFIIZmVhdHVyZXMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xl' + 'LnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBx' + 'CAgICAAg=='); + +@$core.Deprecated('Use enumOptionsDescriptor instead') +const EnumOptions$json = { + '1': 'EnumOptions', + '2': [ + {'1': 'allow_alias', '3': 2, '4': 1, '5': 8, '10': 'allowAlias'}, + {'1': 'deprecated', '3': 3, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + { + '1': 'deprecated_legacy_json_field_conflicts', + '3': 6, + '4': 1, + '5': 8, + '8': {'3': true}, + '10': 'deprecatedLegacyJsonFieldConflicts', + }, + {'1': 'features', '3': 7, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '5': [ + {'1': 1000, '2': 536870912}, + ], + '9': [ + {'1': 5, '2': 6}, + ], +}; + +/// Descriptor for `EnumOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List enumOptionsDescriptor = $convert.base64Decode( + 'CgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZW' + 'NhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29u' + 'X2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb2' + '5mbGljdHMSNwoIZmVhdHVyZXMYByABKAsyGy5nb29nbGUucHJvdG9idWYuRmVhdHVyZVNldFII' + 'ZmVhdHVyZXMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYn' + 'VmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoE' + 'CAUQBg=='); + +@$core.Deprecated('Use enumValueOptionsDescriptor instead') +const EnumValueOptions$json = { + '1': 'EnumValueOptions', + '2': [ + {'1': 'deprecated', '3': 1, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'features', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'debug_redact', '3': 3, '4': 1, '5': 8, '7': 'false', '10': 'debugRedact'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '5': [ + {'1': 1000, '2': 536870912}, + ], +}; + +/// Descriptor for `EnumValueOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List enumValueOptionsDescriptor = $convert.base64Decode( + 'ChBFbnVtVmFsdWVPcHRpb25zEiUKCmRlcHJlY2F0ZWQYASABKAg6BWZhbHNlUgpkZXByZWNhdG' + 'VkEjcKCGZlYXR1cmVzGAIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXRSCGZlYXR1' + 'cmVzEigKDGRlYnVnX3JlZGFjdBgDIAEoCDoFZmFsc2VSC2RlYnVnUmVkYWN0ElgKFHVuaW50ZX' + 'JwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0' + 'aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAI='); + +@$core.Deprecated('Use serviceOptionsDescriptor instead') +const ServiceOptions$json = { + '1': 'ServiceOptions', + '2': [ + {'1': 'features', '3': 34, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'deprecated', '3': 33, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '5': [ + {'1': 1000, '2': 536870912}, + ], +}; + +/// Descriptor for `ServiceOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List serviceOptionsDescriptor = $convert.base64Decode( + 'Cg5TZXJ2aWNlT3B0aW9ucxI3CghmZWF0dXJlcxgiIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5GZW' + 'F0dXJlU2V0UghmZWF0dXJlcxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRl' + 'ZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbn' + 'RlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIAC'); + +@$core.Deprecated('Use methodOptionsDescriptor instead') +const MethodOptions$json = { + '1': 'MethodOptions', + '2': [ + {'1': 'deprecated', '3': 33, '4': 1, '5': 8, '7': 'false', '10': 'deprecated'}, + {'1': 'idempotency_level', '3': 34, '4': 1, '5': 14, '6': '.google.protobuf.MethodOptions.IdempotencyLevel', '7': 'IDEMPOTENCY_UNKNOWN', '10': 'idempotencyLevel'}, + {'1': 'features', '3': 35, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + {'1': 'uninterpreted_option', '3': 999, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption', '10': 'uninterpretedOption'}, + ], + '4': [MethodOptions_IdempotencyLevel$json], + '5': [ + {'1': 1000, '2': 536870912}, + ], +}; + +@$core.Deprecated('Use methodOptionsDescriptor instead') +const MethodOptions_IdempotencyLevel$json = { + '1': 'IdempotencyLevel', + '2': [ + {'1': 'IDEMPOTENCY_UNKNOWN', '2': 0}, + {'1': 'NO_SIDE_EFFECTS', '2': 1}, + {'1': 'IDEMPOTENT', '2': 2}, + ], +}; + +/// Descriptor for `MethodOptions`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List methodOptionsDescriptor = $convert.base64Decode( + 'Cg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEn' + 'EKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlv' + 'bnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZX' + 'ZlbBI3CghmZWF0dXJlcxgjIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0UghmZWF0' + 'dXJlcxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW' + '5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxl' + 'dmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJRE' + 'VNUE9URU5UEAIqCQjoBxCAgICAAg=='); + +@$core.Deprecated('Use uninterpretedOptionDescriptor instead') +const UninterpretedOption$json = { + '1': 'UninterpretedOption', + '2': [ + {'1': 'name', '3': 2, '4': 3, '5': 11, '6': '.google.protobuf.UninterpretedOption.NamePart', '10': 'name'}, + {'1': 'identifier_value', '3': 3, '4': 1, '5': 9, '10': 'identifierValue'}, + {'1': 'positive_int_value', '3': 4, '4': 1, '5': 4, '10': 'positiveIntValue'}, + {'1': 'negative_int_value', '3': 5, '4': 1, '5': 3, '10': 'negativeIntValue'}, + {'1': 'double_value', '3': 6, '4': 1, '5': 1, '10': 'doubleValue'}, + {'1': 'string_value', '3': 7, '4': 1, '5': 12, '10': 'stringValue'}, + {'1': 'aggregate_value', '3': 8, '4': 1, '5': 9, '10': 'aggregateValue'}, + ], + '3': [UninterpretedOption_NamePart$json], +}; + +@$core.Deprecated('Use uninterpretedOptionDescriptor instead') +const UninterpretedOption_NamePart$json = { + '1': 'NamePart', + '2': [ + {'1': 'name_part', '3': 1, '4': 2, '5': 9, '10': 'namePart'}, + {'1': 'is_extension', '3': 2, '4': 2, '5': 8, '10': 'isExtension'}, + ], +}; + +/// Descriptor for `UninterpretedOption`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List uninterpretedOptionDescriptor = $convert.base64Decode( + 'ChNVbmludGVycHJldGVkT3B0aW9uEkEKBG5hbWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW' + '5pbnRlcnByZXRlZE9wdGlvbi5OYW1lUGFydFIEbmFtZRIpChBpZGVudGlmaWVyX3ZhbHVlGAMg' + 'ASgJUg9pZGVudGlmaWVyVmFsdWUSLAoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEUhBwb3NpdG' + 'l2ZUludFZhbHVlEiwKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoA1IQbmVnYXRpdmVJbnRWYWx1' + 'ZRIhCgxkb3VibGVfdmFsdWUYBiABKAFSC2RvdWJsZVZhbHVlEiEKDHN0cmluZ192YWx1ZRgHIA' + 'EoDFILc3RyaW5nVmFsdWUSJwoPYWdncmVnYXRlX3ZhbHVlGAggASgJUg5hZ2dyZWdhdGVWYWx1' + 'ZRpKCghOYW1lUGFydBIbCgluYW1lX3BhcnQYASACKAlSCG5hbWVQYXJ0EiEKDGlzX2V4dGVuc2' + 'lvbhgCIAIoCFILaXNFeHRlbnNpb24='); + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet$json = { + '1': 'FeatureSet', + '2': [ + {'1': 'field_presence', '3': 1, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.FieldPresence', '8': {}, '10': 'fieldPresence'}, + {'1': 'enum_type', '3': 2, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.EnumType', '8': {}, '10': 'enumType'}, + {'1': 'repeated_field_encoding', '3': 3, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.RepeatedFieldEncoding', '8': {}, '10': 'repeatedFieldEncoding'}, + {'1': 'utf8_validation', '3': 4, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.Utf8Validation', '8': {}, '10': 'utf8Validation'}, + {'1': 'message_encoding', '3': 5, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.MessageEncoding', '8': {}, '10': 'messageEncoding'}, + {'1': 'json_format', '3': 6, '4': 1, '5': 14, '6': '.google.protobuf.FeatureSet.JsonFormat', '8': {}, '10': 'jsonFormat'}, + ], + '4': [FeatureSet_FieldPresence$json, FeatureSet_EnumType$json, FeatureSet_RepeatedFieldEncoding$json, FeatureSet_Utf8Validation$json, FeatureSet_MessageEncoding$json, FeatureSet_JsonFormat$json], + '5': [ + {'1': 1000, '2': 1001}, + {'1': 1001, '2': 1002}, + {'1': 9995, '2': 10000}, + ], + '9': [ + {'1': 999, '2': 1000}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_FieldPresence$json = { + '1': 'FieldPresence', + '2': [ + {'1': 'FIELD_PRESENCE_UNKNOWN', '2': 0}, + {'1': 'EXPLICIT', '2': 1}, + {'1': 'IMPLICIT', '2': 2}, + {'1': 'LEGACY_REQUIRED', '2': 3}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_EnumType$json = { + '1': 'EnumType', + '2': [ + {'1': 'ENUM_TYPE_UNKNOWN', '2': 0}, + {'1': 'OPEN', '2': 1}, + {'1': 'CLOSED', '2': 2}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_RepeatedFieldEncoding$json = { + '1': 'RepeatedFieldEncoding', + '2': [ + {'1': 'REPEATED_FIELD_ENCODING_UNKNOWN', '2': 0}, + {'1': 'PACKED', '2': 1}, + {'1': 'EXPANDED', '2': 2}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_Utf8Validation$json = { + '1': 'Utf8Validation', + '2': [ + {'1': 'UTF8_VALIDATION_UNKNOWN', '2': 0}, + {'1': 'NONE', '2': 1}, + {'1': 'VERIFY', '2': 2}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_MessageEncoding$json = { + '1': 'MessageEncoding', + '2': [ + {'1': 'MESSAGE_ENCODING_UNKNOWN', '2': 0}, + {'1': 'LENGTH_PREFIXED', '2': 1}, + {'1': 'DELIMITED', '2': 2}, + ], +}; + +@$core.Deprecated('Use featureSetDescriptor instead') +const FeatureSet_JsonFormat$json = { + '1': 'JsonFormat', + '2': [ + {'1': 'JSON_FORMAT_UNKNOWN', '2': 0}, + {'1': 'ALLOW', '2': 1}, + {'1': 'LEGACY_BEST_EFFORT', '2': 2}, + ], +}; + +/// Descriptor for `FeatureSet`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List featureSetDescriptor = $convert.base64Decode( + 'CgpGZWF0dXJlU2V0EosBCg5maWVsZF9wcmVzZW5jZRgBIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi' + '5GZWF0dXJlU2V0LkZpZWxkUHJlc2VuY2VCOYgBAZgBBJgBAaIBDRIIRVhQTElDSVQY5geiAQ0S' + 'CElNUExJQ0lUGOcHogENEghFWFBMSUNJVBjoB1INZmllbGRQcmVzZW5jZRJmCgllbnVtX3R5cG' + 'UYAiABKA4yJC5nb29nbGUucHJvdG9idWYuRmVhdHVyZVNldC5FbnVtVHlwZUIjiAEBmAEGmAEB' + 'ogELEgZDTE9TRUQY5geiAQkSBE9QRU4Y5wdSCGVudW1UeXBlEpIBChdyZXBlYXRlZF9maWVsZF' + '9lbmNvZGluZxgDIAEoDjIxLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0LlJlcGVhdGVkRmll' + 'bGRFbmNvZGluZ0IniAEBmAEEmAEBogENEghFWFBBTkRFRBjmB6IBCxIGUEFDS0VEGOcHUhVyZX' + 'BlYXRlZEZpZWxkRW5jb2RpbmcSeAoPdXRmOF92YWxpZGF0aW9uGAQgASgOMiouZ29vZ2xlLnBy' + 'b3RvYnVmLkZlYXR1cmVTZXQuVXRmOFZhbGlkYXRpb25CI4gBAZgBBJgBAaIBCRIETk9ORRjmB6' + 'IBCxIGVkVSSUZZGOcHUg51dGY4VmFsaWRhdGlvbhJ4ChBtZXNzYWdlX2VuY29kaW5nGAUgASgO' + 'MisuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQuTWVzc2FnZUVuY29kaW5nQiCIAQGYAQSYAQ' + 'GiARQSD0xFTkdUSF9QUkVGSVhFRBjmB1IPbWVzc2FnZUVuY29kaW5nEnwKC2pzb25fZm9ybWF0' + 'GAYgASgOMiYuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQuSnNvbkZvcm1hdEIziAEBmAEDmA' + 'EGmAEBogEXEhJMRUdBQ1lfQkVTVF9FRkZPUlQY5geiAQoSBUFMTE9XGOcHUgpqc29uRm9ybWF0' + 'IlwKDUZpZWxkUHJlc2VuY2USGgoWRklFTERfUFJFU0VOQ0VfVU5LTk9XThAAEgwKCEVYUExJQ0' + 'lUEAESDAoISU1QTElDSVQQAhITCg9MRUdBQ1lfUkVRVUlSRUQQAyI3CghFbnVtVHlwZRIVChFF' + 'TlVNX1RZUEVfVU5LTk9XThAAEggKBE9QRU4QARIKCgZDTE9TRUQQAiJWChVSZXBlYXRlZEZpZW' + 'xkRW5jb2RpbmcSIwofUkVQRUFURURfRklFTERfRU5DT0RJTkdfVU5LTk9XThAAEgoKBlBBQ0tF' + 'RBABEgwKCEVYUEFOREVEEAIiQwoOVXRmOFZhbGlkYXRpb24SGwoXVVRGOF9WQUxJREFUSU9OX1' + 'VOS05PV04QABIICgROT05FEAESCgoGVkVSSUZZEAIiUwoPTWVzc2FnZUVuY29kaW5nEhwKGE1F' + 'U1NBR0VfRU5DT0RJTkdfVU5LTk9XThAAEhMKD0xFTkdUSF9QUkVGSVhFRBABEg0KCURFTElNSV' + 'RFRBACIkgKCkpzb25Gb3JtYXQSFwoTSlNPTl9GT1JNQVRfVU5LTk9XThAAEgkKBUFMTE9XEAES' + 'FgoSTEVHQUNZX0JFU1RfRUZGT1JUEAIqBgjoBxDpByoGCOkHEOoHKgYIi04QkE5KBgjnBxDoBw' + '=='); + +@$core.Deprecated('Use featureSetDefaultsDescriptor instead') +const FeatureSetDefaults$json = { + '1': 'FeatureSetDefaults', + '2': [ + {'1': 'defaults', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault', '10': 'defaults'}, + {'1': 'minimum_edition', '3': 4, '4': 1, '5': 14, '6': '.google.protobuf.Edition', '10': 'minimumEdition'}, + {'1': 'maximum_edition', '3': 5, '4': 1, '5': 14, '6': '.google.protobuf.Edition', '10': 'maximumEdition'}, + ], + '3': [FeatureSetDefaults_FeatureSetEditionDefault$json], +}; + +@$core.Deprecated('Use featureSetDefaultsDescriptor instead') +const FeatureSetDefaults_FeatureSetEditionDefault$json = { + '1': 'FeatureSetEditionDefault', + '2': [ + {'1': 'edition', '3': 3, '4': 1, '5': 14, '6': '.google.protobuf.Edition', '10': 'edition'}, + {'1': 'features', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.FeatureSet', '10': 'features'}, + ], +}; + +/// Descriptor for `FeatureSetDefaults`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List featureSetDefaultsDescriptor = $convert.base64Decode( + 'ChJGZWF0dXJlU2V0RGVmYXVsdHMSWAoIZGVmYXVsdHMYASADKAsyPC5nb29nbGUucHJvdG9idW' + 'YuRmVhdHVyZVNldERlZmF1bHRzLkZlYXR1cmVTZXRFZGl0aW9uRGVmYXVsdFIIZGVmYXVsdHMS' + 'QQoPbWluaW11bV9lZGl0aW9uGAQgASgOMhguZ29vZ2xlLnByb3RvYnVmLkVkaXRpb25SDm1pbm' + 'ltdW1FZGl0aW9uEkEKD21heGltdW1fZWRpdGlvbhgFIAEoDjIYLmdvb2dsZS5wcm90b2J1Zi5F' + 'ZGl0aW9uUg5tYXhpbXVtRWRpdGlvbhqHAQoYRmVhdHVyZVNldEVkaXRpb25EZWZhdWx0EjIKB2' + 'VkaXRpb24YAyABKA4yGC5nb29nbGUucHJvdG9idWYuRWRpdGlvblIHZWRpdGlvbhI3CghmZWF0' + 'dXJlcxgCIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0UghmZWF0dXJlcw=='); + +@$core.Deprecated('Use sourceCodeInfoDescriptor instead') +const SourceCodeInfo$json = { + '1': 'SourceCodeInfo', + '2': [ + {'1': 'location', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.SourceCodeInfo.Location', '10': 'location'}, + ], + '3': [SourceCodeInfo_Location$json], +}; + +@$core.Deprecated('Use sourceCodeInfoDescriptor instead') +const SourceCodeInfo_Location$json = { + '1': 'Location', + '2': [ + { + '1': 'path', + '3': 1, + '4': 3, + '5': 5, + '8': {'2': true}, + '10': 'path', + }, + { + '1': 'span', + '3': 2, + '4': 3, + '5': 5, + '8': {'2': true}, + '10': 'span', + }, + {'1': 'leading_comments', '3': 3, '4': 1, '5': 9, '10': 'leadingComments'}, + {'1': 'trailing_comments', '3': 4, '4': 1, '5': 9, '10': 'trailingComments'}, + {'1': 'leading_detached_comments', '3': 6, '4': 3, '5': 9, '10': 'leadingDetachedComments'}, + ], +}; + +/// Descriptor for `SourceCodeInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List sourceCodeInfoDescriptor = $convert.base64Decode( + 'Cg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3' + 'VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASAD' + 'KAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudH' + 'MYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJh' + 'aWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW' + '5nRGV0YWNoZWRDb21tZW50cw=='); + +@$core.Deprecated('Use generatedCodeInfoDescriptor instead') +const GeneratedCodeInfo$json = { + '1': 'GeneratedCodeInfo', + '2': [ + {'1': 'annotation', '3': 1, '4': 3, '5': 11, '6': '.google.protobuf.GeneratedCodeInfo.Annotation', '10': 'annotation'}, + ], + '3': [GeneratedCodeInfo_Annotation$json], +}; + +@$core.Deprecated('Use generatedCodeInfoDescriptor instead') +const GeneratedCodeInfo_Annotation$json = { + '1': 'Annotation', + '2': [ + { + '1': 'path', + '3': 1, + '4': 3, + '5': 5, + '8': {'2': true}, + '10': 'path', + }, + {'1': 'source_file', '3': 2, '4': 1, '5': 9, '10': 'sourceFile'}, + {'1': 'begin', '3': 3, '4': 1, '5': 5, '10': 'begin'}, + {'1': 'end', '3': 4, '4': 1, '5': 5, '10': 'end'}, + {'1': 'semantic', '3': 5, '4': 1, '5': 14, '6': '.google.protobuf.GeneratedCodeInfo.Annotation.Semantic', '10': 'semantic'}, + ], + '4': [GeneratedCodeInfo_Annotation_Semantic$json], +}; + +@$core.Deprecated('Use generatedCodeInfoDescriptor instead') +const GeneratedCodeInfo_Annotation_Semantic$json = { + '1': 'Semantic', + '2': [ + {'1': 'NONE', '2': 0}, + {'1': 'SET', '2': 1}, + {'1': 'ALIAS', '2': 2}, + ], +}; + +/// Descriptor for `GeneratedCodeInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List generatedCodeInfoDescriptor = $convert.base64Decode( + 'ChFHZW5lcmF0ZWRDb2RlSW5mbxJNCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnByb3RvYn' + 'VmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb25SCmFubm90YXRpb24a6wEKCkFubm90YXRp' + 'b24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSHwoLc291cmNlX2ZpbGUYAiABKAlSCnNvdXJjZU' + 'ZpbGUSFAoFYmVnaW4YAyABKAVSBWJlZ2luEhAKA2VuZBgEIAEoBVIDZW5kElIKCHNlbWFudGlj' + 'GAUgASgOMjYuZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb24uU2' + 'VtYW50aWNSCHNlbWFudGljIigKCFNlbWFudGljEggKBE5PTkUQABIHCgNTRVQQARIJCgVBTElB' + 'UxAC'); + diff --git a/packages/corks/lib/src/proto/google/protobuf/descriptor.pbserver.dart b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbserver.dart new file mode 100644 index 00000000..f0d7f47e --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/descriptor.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/descriptor.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'descriptor.pb.dart'; + diff --git a/packages/corks/lib/src/proto/google/protobuf/duration.pb.dart b/packages/corks/lib/src/proto/google/protobuf/duration.pb.dart new file mode 100644 index 00000000..622c92d8 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/duration.pb.dart @@ -0,0 +1,151 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/duration.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; +import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin; + +/// A Duration represents a signed, fixed-length span of time represented +/// as a count of seconds and fractions of seconds at nanosecond +/// resolution. It is independent of any calendar and concepts like "day" +/// or "month". It is related to Timestamp in that the difference between +/// two Timestamp values is a Duration and it can be added or subtracted +/// from a Timestamp. Range is approximately +-10,000 years. +/// +/// # Examples +/// +/// Example 1: Compute Duration from two Timestamps in pseudo code. +/// +/// Timestamp start = ...; +/// Timestamp end = ...; +/// Duration duration = ...; +/// +/// duration.seconds = end.seconds - start.seconds; +/// duration.nanos = end.nanos - start.nanos; +/// +/// if (duration.seconds < 0 && duration.nanos > 0) { +/// duration.seconds += 1; +/// duration.nanos -= 1000000000; +/// } else if (duration.seconds > 0 && duration.nanos < 0) { +/// duration.seconds -= 1; +/// duration.nanos += 1000000000; +/// } +/// +/// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +/// +/// Timestamp start = ...; +/// Duration duration = ...; +/// Timestamp end = ...; +/// +/// end.seconds = start.seconds + duration.seconds; +/// end.nanos = start.nanos + duration.nanos; +/// +/// if (end.nanos < 0) { +/// end.seconds -= 1; +/// end.nanos += 1000000000; +/// } else if (end.nanos >= 1000000000) { +/// end.seconds += 1; +/// end.nanos -= 1000000000; +/// } +/// +/// Example 3: Compute Duration from datetime.timedelta in Python. +/// +/// td = datetime.timedelta(days=3, minutes=10) +/// duration = Duration() +/// duration.FromTimedelta(td) +/// +/// # JSON Mapping +/// +/// In JSON format, the Duration type is encoded as a string rather than an +/// object, where the string ends in the suffix "s" (indicating seconds) and +/// is preceded by the number of seconds, with nanoseconds expressed as +/// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +/// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +/// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +/// microsecond should be expressed in JSON format as "3.000001s". +class Duration extends $pb.GeneratedMessage with $mixin.DurationMixin { + factory Duration({ + $fixnum.Int64? seconds, + $core.int? nanos, + }) { + final $result = create(); + if (seconds != null) { + $result.seconds = seconds; + } + if (nanos != null) { + $result.nanos = nanos; + } + return $result; + } + Duration._() : super(); + factory Duration.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Duration.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Duration', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.DurationMixin.toProto3JsonHelper, fromProto3Json: $mixin.DurationMixin.fromProto3JsonHelper) + ..aInt64(1, _omitFieldNames ? '' : 'seconds') + ..a<$core.int>(2, _omitFieldNames ? '' : 'nanos', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Duration clone() => Duration()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Duration copyWith(void Function(Duration) updates) => super.copyWith((message) => updates(message as Duration)) as Duration; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Duration create() => Duration._(); + Duration createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Duration getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Duration? _defaultInstance; + + /// Signed seconds of the span of time. Must be from -315,576,000,000 + /// to +315,576,000,000 inclusive. Note: these bounds are computed from: + /// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + @$pb.TagNumber(1) + $fixnum.Int64 get seconds => $_getI64(0); + @$pb.TagNumber(1) + set seconds($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasSeconds() => $_has(0); + @$pb.TagNumber(1) + void clearSeconds() => clearField(1); + + /// Signed fractions of a second at nanosecond resolution of the span + /// of time. Durations less than one second are represented with a 0 + /// `seconds` field and a positive or negative `nanos` field. For durations + /// of one second or more, a non-zero value for the `nanos` field must be + /// of the same sign as the `seconds` field. Must be from -999,999,999 + /// to +999,999,999 inclusive. + @$pb.TagNumber(2) + $core.int get nanos => $_getIZ(1); + @$pb.TagNumber(2) + set nanos($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasNanos() => $_has(1); + @$pb.TagNumber(2) + void clearNanos() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/duration.pbenum.dart b/packages/corks/lib/src/proto/google/protobuf/duration.pbenum.dart new file mode 100644 index 00000000..403b0103 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/duration.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/duration.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/google/protobuf/duration.pbjson.dart b/packages/corks/lib/src/proto/google/protobuf/duration.pbjson.dart new file mode 100644 index 00000000..aacca438 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/duration.pbjson.dart @@ -0,0 +1,29 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/duration.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use durationDescriptor instead') +const Duration$json = { + '1': 'Duration', + '2': [ + {'1': 'seconds', '3': 1, '4': 1, '5': 3, '10': 'seconds'}, + {'1': 'nanos', '3': 2, '4': 1, '5': 5, '10': 'nanos'}, + ], +}; + +/// Descriptor for `Duration`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List durationDescriptor = $convert.base64Decode( + 'CghEdXJhdGlvbhIYCgdzZWNvbmRzGAEgASgDUgdzZWNvbmRzEhQKBW5hbm9zGAIgASgFUgVuYW' + '5vcw=='); + diff --git a/packages/corks/lib/src/proto/google/protobuf/duration.pbserver.dart b/packages/corks/lib/src/proto/google/protobuf/duration.pbserver.dart new file mode 100644 index 00000000..0a983497 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/duration.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/duration.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'duration.pb.dart'; + diff --git a/packages/corks/lib/src/proto/google/protobuf/plugin.pb.dart b/packages/corks/lib/src/proto/google/protobuf/plugin.pb.dart new file mode 100644 index 00000000..7734e747 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/plugin.pb.dart @@ -0,0 +1,449 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/plugin.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'descriptor.pb.dart' as $2; + +export 'plugin.pbenum.dart'; + +/// The version number of protocol compiler. +class Version extends $pb.GeneratedMessage { + factory Version({ + $core.int? major, + $core.int? minor, + $core.int? patch, + $core.String? suffix, + }) { + final $result = create(); + if (major != null) { + $result.major = major; + } + if (minor != null) { + $result.minor = minor; + } + if (patch != null) { + $result.patch = patch; + } + if (suffix != null) { + $result.suffix = suffix; + } + return $result; + } + Version._() : super(); + factory Version.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Version.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Version', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf.compiler'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'major', $pb.PbFieldType.O3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'minor', $pb.PbFieldType.O3) + ..a<$core.int>(3, _omitFieldNames ? '' : 'patch', $pb.PbFieldType.O3) + ..aOS(4, _omitFieldNames ? '' : 'suffix') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Version clone() => Version()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Version copyWith(void Function(Version) updates) => super.copyWith((message) => updates(message as Version)) as Version; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Version create() => Version._(); + Version createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Version getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Version? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get major => $_getIZ(0); + @$pb.TagNumber(1) + set major($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasMajor() => $_has(0); + @$pb.TagNumber(1) + void clearMajor() => clearField(1); + + @$pb.TagNumber(2) + $core.int get minor => $_getIZ(1); + @$pb.TagNumber(2) + set minor($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasMinor() => $_has(1); + @$pb.TagNumber(2) + void clearMinor() => clearField(2); + + @$pb.TagNumber(3) + $core.int get patch => $_getIZ(2); + @$pb.TagNumber(3) + set patch($core.int v) { $_setSignedInt32(2, v); } + @$pb.TagNumber(3) + $core.bool hasPatch() => $_has(2); + @$pb.TagNumber(3) + void clearPatch() => clearField(3); + + /// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + /// be empty for mainline stable releases. + @$pb.TagNumber(4) + $core.String get suffix => $_getSZ(3); + @$pb.TagNumber(4) + set suffix($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasSuffix() => $_has(3); + @$pb.TagNumber(4) + void clearSuffix() => clearField(4); +} + +/// An encoded CodeGeneratorRequest is written to the plugin's stdin. +class CodeGeneratorRequest extends $pb.GeneratedMessage { + factory CodeGeneratorRequest({ + $core.Iterable<$core.String>? fileToGenerate, + $core.String? parameter, + Version? compilerVersion, + $core.Iterable<$2.FileDescriptorProto>? protoFile, + }) { + final $result = create(); + if (fileToGenerate != null) { + $result.fileToGenerate.addAll(fileToGenerate); + } + if (parameter != null) { + $result.parameter = parameter; + } + if (compilerVersion != null) { + $result.compilerVersion = compilerVersion; + } + if (protoFile != null) { + $result.protoFile.addAll(protoFile); + } + return $result; + } + CodeGeneratorRequest._() : super(); + factory CodeGeneratorRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CodeGeneratorRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CodeGeneratorRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf.compiler'), createEmptyInstance: create) + ..pPS(1, _omitFieldNames ? '' : 'fileToGenerate') + ..aOS(2, _omitFieldNames ? '' : 'parameter') + ..aOM(3, _omitFieldNames ? '' : 'compilerVersion', subBuilder: Version.create) + ..pc<$2.FileDescriptorProto>(15, _omitFieldNames ? '' : 'protoFile', $pb.PbFieldType.PM, subBuilder: $2.FileDescriptorProto.create) + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CodeGeneratorRequest clone() => CodeGeneratorRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CodeGeneratorRequest copyWith(void Function(CodeGeneratorRequest) updates) => super.copyWith((message) => updates(message as CodeGeneratorRequest)) as CodeGeneratorRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CodeGeneratorRequest create() => CodeGeneratorRequest._(); + CodeGeneratorRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CodeGeneratorRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CodeGeneratorRequest? _defaultInstance; + + /// The .proto files that were explicitly listed on the command-line. The + /// code generator should generate code only for these files. Each file's + /// descriptor will be included in proto_file, below. + @$pb.TagNumber(1) + $core.List<$core.String> get fileToGenerate => $_getList(0); + + /// The generator parameter passed on the command-line. + @$pb.TagNumber(2) + $core.String get parameter => $_getSZ(1); + @$pb.TagNumber(2) + set parameter($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasParameter() => $_has(1); + @$pb.TagNumber(2) + void clearParameter() => clearField(2); + + /// The version number of protocol compiler. + @$pb.TagNumber(3) + Version get compilerVersion => $_getN(2); + @$pb.TagNumber(3) + set compilerVersion(Version v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasCompilerVersion() => $_has(2); + @$pb.TagNumber(3) + void clearCompilerVersion() => clearField(3); + @$pb.TagNumber(3) + Version ensureCompilerVersion() => $_ensure(2); + + /// FileDescriptorProtos for all files in files_to_generate and everything + /// they import. The files will appear in topological order, so each file + /// appears before any file that imports it. + /// + /// protoc guarantees that all proto_files will be written after + /// the fields above, even though this is not technically guaranteed by the + /// protobuf wire format. This theoretically could allow a plugin to stream + /// in the FileDescriptorProtos and handle them one by one rather than read + /// the entire set into memory at once. However, as of this writing, this + /// is not similarly optimized on protoc's end -- it will store all fields in + /// memory at once before sending them to the plugin. + /// + /// Type names of fields and extensions in the FileDescriptorProto are always + /// fully qualified. + @$pb.TagNumber(15) + $core.List<$2.FileDescriptorProto> get protoFile => $_getList(3); +} + +/// Represents a single generated file. +class CodeGeneratorResponse_File extends $pb.GeneratedMessage { + factory CodeGeneratorResponse_File({ + $core.String? name, + $core.String? insertionPoint, + $core.String? content, + $2.GeneratedCodeInfo? generatedCodeInfo, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (insertionPoint != null) { + $result.insertionPoint = insertionPoint; + } + if (content != null) { + $result.content = content; + } + if (generatedCodeInfo != null) { + $result.generatedCodeInfo = generatedCodeInfo; + } + return $result; + } + CodeGeneratorResponse_File._() : super(); + factory CodeGeneratorResponse_File.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CodeGeneratorResponse_File.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CodeGeneratorResponse.File', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf.compiler'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOS(2, _omitFieldNames ? '' : 'insertionPoint') + ..aOS(15, _omitFieldNames ? '' : 'content') + ..aOM<$2.GeneratedCodeInfo>(16, _omitFieldNames ? '' : 'generatedCodeInfo', subBuilder: $2.GeneratedCodeInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CodeGeneratorResponse_File clone() => CodeGeneratorResponse_File()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CodeGeneratorResponse_File copyWith(void Function(CodeGeneratorResponse_File) updates) => super.copyWith((message) => updates(message as CodeGeneratorResponse_File)) as CodeGeneratorResponse_File; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CodeGeneratorResponse_File create() => CodeGeneratorResponse_File._(); + CodeGeneratorResponse_File createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CodeGeneratorResponse_File getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CodeGeneratorResponse_File? _defaultInstance; + + /// The file name, relative to the output directory. The name must not + /// contain "." or ".." components and must be relative, not be absolute (so, + /// the file cannot lie outside the output directory). "/" must be used as + /// the path separator, not "\". + /// + /// If the name is omitted, the content will be appended to the previous + /// file. This allows the generator to break large files into small chunks, + /// and allows the generated text to be streamed back to protoc so that large + /// files need not reside completely in memory at one time. Note that as of + /// this writing protoc does not optimize for this -- it will read the entire + /// CodeGeneratorResponse before writing files to disk. + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + /// If non-empty, indicates that the named file should already exist, and the + /// content here is to be inserted into that file at a defined insertion + /// point. This feature allows a code generator to extend the output + /// produced by another code generator. The original generator may provide + /// insertion points by placing special annotations in the file that look + /// like: + /// @@protoc_insertion_point(NAME) + /// The annotation can have arbitrary text before and after it on the line, + /// which allows it to be placed in a comment. NAME should be replaced with + /// an identifier naming the point -- this is what other generators will use + /// as the insertion_point. Code inserted at this point will be placed + /// immediately above the line containing the insertion point (thus multiple + /// insertions to the same point will come out in the order they were added). + /// The double-@ is intended to make it unlikely that the generated code + /// could contain things that look like insertion points by accident. + /// + /// For example, the C++ code generator places the following line in the + /// .pb.h files that it generates: + /// // @@protoc_insertion_point(namespace_scope) + /// This line appears within the scope of the file's package namespace, but + /// outside of any particular class. Another plugin can then specify the + /// insertion_point "namespace_scope" to generate additional classes or + /// other declarations that should be placed in this scope. + /// + /// Note that if the line containing the insertion point begins with + /// whitespace, the same whitespace will be added to every line of the + /// inserted text. This is useful for languages like Python, where + /// indentation matters. In these languages, the insertion point comment + /// should be indented the same amount as any inserted code will need to be + /// in order to work correctly in that context. + /// + /// The code generator that generates the initial file and the one which + /// inserts into it must both run as part of a single invocation of protoc. + /// Code generators are executed in the order in which they appear on the + /// command line. + /// + /// If |insertion_point| is present, |name| must also be present. + @$pb.TagNumber(2) + $core.String get insertionPoint => $_getSZ(1); + @$pb.TagNumber(2) + set insertionPoint($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasInsertionPoint() => $_has(1); + @$pb.TagNumber(2) + void clearInsertionPoint() => clearField(2); + + /// The file contents. + @$pb.TagNumber(15) + $core.String get content => $_getSZ(2); + @$pb.TagNumber(15) + set content($core.String v) { $_setString(2, v); } + @$pb.TagNumber(15) + $core.bool hasContent() => $_has(2); + @$pb.TagNumber(15) + void clearContent() => clearField(15); + + /// Information describing the file content being inserted. If an insertion + /// point is used, this information will be appropriately offset and inserted + /// into the code generation metadata for the generated files. + @$pb.TagNumber(16) + $2.GeneratedCodeInfo get generatedCodeInfo => $_getN(3); + @$pb.TagNumber(16) + set generatedCodeInfo($2.GeneratedCodeInfo v) { setField(16, v); } + @$pb.TagNumber(16) + $core.bool hasGeneratedCodeInfo() => $_has(3); + @$pb.TagNumber(16) + void clearGeneratedCodeInfo() => clearField(16); + @$pb.TagNumber(16) + $2.GeneratedCodeInfo ensureGeneratedCodeInfo() => $_ensure(3); +} + +/// The plugin writes an encoded CodeGeneratorResponse to stdout. +class CodeGeneratorResponse extends $pb.GeneratedMessage { + factory CodeGeneratorResponse({ + $core.String? error, + $fixnum.Int64? supportedFeatures, + $core.Iterable? file, + }) { + final $result = create(); + if (error != null) { + $result.error = error; + } + if (supportedFeatures != null) { + $result.supportedFeatures = supportedFeatures; + } + if (file != null) { + $result.file.addAll(file); + } + return $result; + } + CodeGeneratorResponse._() : super(); + factory CodeGeneratorResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CodeGeneratorResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CodeGeneratorResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf.compiler'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'error') + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'supportedFeatures', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..pc(15, _omitFieldNames ? '' : 'file', $pb.PbFieldType.PM, subBuilder: CodeGeneratorResponse_File.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CodeGeneratorResponse clone() => CodeGeneratorResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CodeGeneratorResponse copyWith(void Function(CodeGeneratorResponse) updates) => super.copyWith((message) => updates(message as CodeGeneratorResponse)) as CodeGeneratorResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CodeGeneratorResponse create() => CodeGeneratorResponse._(); + CodeGeneratorResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CodeGeneratorResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CodeGeneratorResponse? _defaultInstance; + + /// Error message. If non-empty, code generation failed. The plugin process + /// should exit with status code zero even if it reports an error in this way. + /// + /// This should be used to indicate errors in .proto files which prevent the + /// code generator from generating correct code. Errors which indicate a + /// problem in protoc itself -- such as the input CodeGeneratorRequest being + /// unparseable -- should be reported by writing a message to stderr and + /// exiting with a non-zero status code. + @$pb.TagNumber(1) + $core.String get error => $_getSZ(0); + @$pb.TagNumber(1) + set error($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasError() => $_has(0); + @$pb.TagNumber(1) + void clearError() => clearField(1); + + /// A bitmask of supported features that the code generator supports. + /// This is a bitwise "or" of values from the Feature enum. + @$pb.TagNumber(2) + $fixnum.Int64 get supportedFeatures => $_getI64(1); + @$pb.TagNumber(2) + set supportedFeatures($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasSupportedFeatures() => $_has(1); + @$pb.TagNumber(2) + void clearSupportedFeatures() => clearField(2); + + @$pb.TagNumber(15) + $core.List get file => $_getList(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/plugin.pbenum.dart b/packages/corks/lib/src/proto/google/protobuf/plugin.pbenum.dart new file mode 100644 index 00000000..6e768bad --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/plugin.pbenum.dart @@ -0,0 +1,33 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/plugin.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// Sync with code_generator.h. +class CodeGeneratorResponse_Feature extends $pb.ProtobufEnum { + static const CodeGeneratorResponse_Feature FEATURE_NONE = CodeGeneratorResponse_Feature._(0, _omitEnumNames ? '' : 'FEATURE_NONE'); + static const CodeGeneratorResponse_Feature FEATURE_PROTO3_OPTIONAL = CodeGeneratorResponse_Feature._(1, _omitEnumNames ? '' : 'FEATURE_PROTO3_OPTIONAL'); + + static const $core.List values = [ + FEATURE_NONE, + FEATURE_PROTO3_OPTIONAL, + ]; + + static final $core.Map<$core.int, CodeGeneratorResponse_Feature> _byValue = $pb.ProtobufEnum.initByValue(values); + static CodeGeneratorResponse_Feature? valueOf($core.int value) => _byValue[value]; + + const CodeGeneratorResponse_Feature._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/plugin.pbjson.dart b/packages/corks/lib/src/proto/google/protobuf/plugin.pbjson.dart new file mode 100644 index 00000000..73ad3016 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/plugin.pbjson.dart @@ -0,0 +1,93 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/plugin.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use versionDescriptor instead') +const Version$json = { + '1': 'Version', + '2': [ + {'1': 'major', '3': 1, '4': 1, '5': 5, '10': 'major'}, + {'1': 'minor', '3': 2, '4': 1, '5': 5, '10': 'minor'}, + {'1': 'patch', '3': 3, '4': 1, '5': 5, '10': 'patch'}, + {'1': 'suffix', '3': 4, '4': 1, '5': 9, '10': 'suffix'}, + ], +}; + +/// Descriptor for `Version`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List versionDescriptor = $convert.base64Decode( + 'CgdWZXJzaW9uEhQKBW1ham9yGAEgASgFUgVtYWpvchIUCgVtaW5vchgCIAEoBVIFbWlub3ISFA' + 'oFcGF0Y2gYAyABKAVSBXBhdGNoEhYKBnN1ZmZpeBgEIAEoCVIGc3VmZml4'); + +@$core.Deprecated('Use codeGeneratorRequestDescriptor instead') +const CodeGeneratorRequest$json = { + '1': 'CodeGeneratorRequest', + '2': [ + {'1': 'file_to_generate', '3': 1, '4': 3, '5': 9, '10': 'fileToGenerate'}, + {'1': 'parameter', '3': 2, '4': 1, '5': 9, '10': 'parameter'}, + {'1': 'proto_file', '3': 15, '4': 3, '5': 11, '6': '.google.protobuf.FileDescriptorProto', '10': 'protoFile'}, + {'1': 'compiler_version', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.compiler.Version', '10': 'compilerVersion'}, + ], +}; + +/// Descriptor for `CodeGeneratorRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List codeGeneratorRequestDescriptor = $convert.base64Decode( + 'ChRDb2RlR2VuZXJhdG9yUmVxdWVzdBIoChBmaWxlX3RvX2dlbmVyYXRlGAEgAygJUg5maWxlVG' + '9HZW5lcmF0ZRIcCglwYXJhbWV0ZXIYAiABKAlSCXBhcmFtZXRlchJDCgpwcm90b19maWxlGA8g' + 'AygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9SCXByb3RvRmlsZRJMCh' + 'Bjb21waWxlcl92ZXJzaW9uGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyLlZlcnNp' + 'b25SD2NvbXBpbGVyVmVyc2lvbg=='); + +@$core.Deprecated('Use codeGeneratorResponseDescriptor instead') +const CodeGeneratorResponse$json = { + '1': 'CodeGeneratorResponse', + '2': [ + {'1': 'error', '3': 1, '4': 1, '5': 9, '10': 'error'}, + {'1': 'supported_features', '3': 2, '4': 1, '5': 4, '10': 'supportedFeatures'}, + {'1': 'file', '3': 15, '4': 3, '5': 11, '6': '.google.protobuf.compiler.CodeGeneratorResponse.File', '10': 'file'}, + ], + '3': [CodeGeneratorResponse_File$json], + '4': [CodeGeneratorResponse_Feature$json], +}; + +@$core.Deprecated('Use codeGeneratorResponseDescriptor instead') +const CodeGeneratorResponse_File$json = { + '1': 'File', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + {'1': 'insertion_point', '3': 2, '4': 1, '5': 9, '10': 'insertionPoint'}, + {'1': 'content', '3': 15, '4': 1, '5': 9, '10': 'content'}, + {'1': 'generated_code_info', '3': 16, '4': 1, '5': 11, '6': '.google.protobuf.GeneratedCodeInfo', '10': 'generatedCodeInfo'}, + ], +}; + +@$core.Deprecated('Use codeGeneratorResponseDescriptor instead') +const CodeGeneratorResponse_Feature$json = { + '1': 'Feature', + '2': [ + {'1': 'FEATURE_NONE', '2': 0}, + {'1': 'FEATURE_PROTO3_OPTIONAL', '2': 1}, + ], +}; + +/// Descriptor for `CodeGeneratorResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List codeGeneratorResponseDescriptor = $convert.base64Decode( + 'ChVDb2RlR2VuZXJhdG9yUmVzcG9uc2USFAoFZXJyb3IYASABKAlSBWVycm9yEi0KEnN1cHBvcn' + 'RlZF9mZWF0dXJlcxgCIAEoBFIRc3VwcG9ydGVkRmVhdHVyZXMSSAoEZmlsZRgPIAMoCzI0Lmdv' + 'b2dsZS5wcm90b2J1Zi5jb21waWxlci5Db2RlR2VuZXJhdG9yUmVzcG9uc2UuRmlsZVIEZmlsZR' + 'qxAQoERmlsZRISCgRuYW1lGAEgASgJUgRuYW1lEicKD2luc2VydGlvbl9wb2ludBgCIAEoCVIO' + 'aW5zZXJ0aW9uUG9pbnQSGAoHY29udGVudBgPIAEoCVIHY29udGVudBJSChNnZW5lcmF0ZWRfY2' + '9kZV9pbmZvGBAgASgLMiIuZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvUhFnZW5l' + 'cmF0ZWRDb2RlSW5mbyI4CgdGZWF0dXJlEhAKDEZFQVRVUkVfTk9ORRAAEhsKF0ZFQVRVUkVfUF' + 'JPVE8zX09QVElPTkFMEAE='); + diff --git a/packages/corks/lib/src/proto/google/protobuf/plugin.pbserver.dart b/packages/corks/lib/src/proto/google/protobuf/plugin.pbserver.dart new file mode 100644 index 00000000..5d816bac --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/plugin.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/plugin.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'plugin.pb.dart'; + diff --git a/packages/corks/lib/src/proto/google/protobuf/timestamp.pb.dart b/packages/corks/lib/src/proto/google/protobuf/timestamp.pb.dart new file mode 100644 index 00000000..ea44b44e --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/timestamp.pb.dart @@ -0,0 +1,188 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; +import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin; + +/// A Timestamp represents a point in time independent of any time zone or local +/// calendar, encoded as a count of seconds and fractions of seconds at +/// nanosecond resolution. The count is relative to an epoch at UTC midnight on +/// January 1, 1970, in the proleptic Gregorian calendar which extends the +/// Gregorian calendar backwards to year one. +/// +/// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +/// second table is needed for interpretation, using a [24-hour linear +/// smear](https://developers.google.com/time/smear). +/// +/// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +/// restricting to that range, we ensure that we can convert to and from [RFC +/// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +/// +/// # Examples +/// +/// Example 1: Compute Timestamp from POSIX `time()`. +/// +/// Timestamp timestamp; +/// timestamp.set_seconds(time(NULL)); +/// timestamp.set_nanos(0); +/// +/// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +/// +/// struct timeval tv; +/// gettimeofday(&tv, NULL); +/// +/// Timestamp timestamp; +/// timestamp.set_seconds(tv.tv_sec); +/// timestamp.set_nanos(tv.tv_usec * 1000); +/// +/// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +/// +/// FILETIME ft; +/// GetSystemTimeAsFileTime(&ft); +/// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +/// +/// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +/// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +/// Timestamp timestamp; +/// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +/// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +/// +/// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +/// +/// long millis = System.currentTimeMillis(); +/// +/// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +/// .setNanos((int) ((millis % 1000) * 1000000)).build(); +/// +/// Example 5: Compute Timestamp from Java `Instant.now()`. +/// +/// Instant now = Instant.now(); +/// +/// Timestamp timestamp = +/// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) +/// .setNanos(now.getNano()).build(); +/// +/// Example 6: Compute Timestamp from current time in Python. +/// +/// timestamp = Timestamp() +/// timestamp.GetCurrentTime() +/// +/// # JSON Mapping +/// +/// In JSON format, the Timestamp type is encoded as a string in the +/// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +/// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +/// where {year} is always expressed using four digits while {month}, {day}, +/// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +/// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +/// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +/// is required. A proto3 JSON serializer should always use UTC (as indicated by +/// "Z") when printing the Timestamp type and a proto3 JSON parser should be +/// able to accept both UTC and other timezones (as indicated by an offset). +/// +/// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +/// 01:30 UTC on January 15, 2017. +/// +/// In JavaScript, one can convert a Date object to this format using the +/// standard +/// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +/// method. In Python, a standard `datetime.datetime` object can be converted +/// to this format using +/// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +/// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +/// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +/// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() +/// ) to obtain a formatter capable of generating timestamps in this format. +class Timestamp extends $pb.GeneratedMessage with $mixin.TimestampMixin { + factory Timestamp({ + $fixnum.Int64? seconds, + $core.int? nanos, + }) { + final $result = create(); + if (seconds != null) { + $result.seconds = seconds; + } + if (nanos != null) { + $result.nanos = nanos; + } + return $result; + } + Timestamp._() : super(); + factory Timestamp.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Timestamp.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Timestamp', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.TimestampMixin.toProto3JsonHelper, fromProto3Json: $mixin.TimestampMixin.fromProto3JsonHelper) + ..aInt64(1, _omitFieldNames ? '' : 'seconds') + ..a<$core.int>(2, _omitFieldNames ? '' : 'nanos', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Timestamp clone() => Timestamp()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Timestamp copyWith(void Function(Timestamp) updates) => super.copyWith((message) => updates(message as Timestamp)) as Timestamp; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Timestamp create() => Timestamp._(); + Timestamp createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Timestamp getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Timestamp? _defaultInstance; + + /// Represents seconds of UTC time since Unix epoch + /// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + /// 9999-12-31T23:59:59Z inclusive. + @$pb.TagNumber(1) + $fixnum.Int64 get seconds => $_getI64(0); + @$pb.TagNumber(1) + set seconds($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasSeconds() => $_has(0); + @$pb.TagNumber(1) + void clearSeconds() => clearField(1); + + /// Non-negative fractions of a second at nanosecond resolution. Negative + /// second values with fractions must still have non-negative nanos values + /// that count forward in time. Must be from 0 to 999,999,999 + /// inclusive. + @$pb.TagNumber(2) + $core.int get nanos => $_getIZ(1); + @$pb.TagNumber(2) + set nanos($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasNanos() => $_has(1); + @$pb.TagNumber(2) + void clearNanos() => clearField(2); + /// Creates a new instance from [dateTime]. + /// + /// Time zone information will not be preserved. + static Timestamp fromDateTime($core.DateTime dateTime) { + final result = create(); + $mixin.TimestampMixin.setFromDateTime(result, dateTime); + return result; + } +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/corks/lib/src/proto/google/protobuf/timestamp.pbenum.dart b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbenum.dart new file mode 100644 index 00000000..30275f6a --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/packages/corks/lib/src/proto/google/protobuf/timestamp.pbjson.dart b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbjson.dart new file mode 100644 index 00000000..3dfd63b5 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbjson.dart @@ -0,0 +1,29 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use timestampDescriptor instead') +const Timestamp$json = { + '1': 'Timestamp', + '2': [ + {'1': 'seconds', '3': 1, '4': 1, '5': 3, '10': 'seconds'}, + {'1': 'nanos', '3': 2, '4': 1, '5': 5, '10': 'nanos'}, + ], +}; + +/// Descriptor for `Timestamp`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List timestampDescriptor = $convert.base64Decode( + 'CglUaW1lc3RhbXASGAoHc2Vjb25kcxgBIAEoA1IHc2Vjb25kcxIUCgVuYW5vcxgCIAEoBVIFbm' + 'Fub3M='); + diff --git a/packages/corks/lib/src/proto/google/protobuf/timestamp.pbserver.dart b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbserver.dart new file mode 100644 index 00000000..6580f167 --- /dev/null +++ b/packages/corks/lib/src/proto/google/protobuf/timestamp.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: google/protobuf/timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'timestamp.pb.dart'; + diff --git a/packages/corks/lib/src/signer.dart b/packages/corks/lib/src/signer.dart new file mode 100644 index 00000000..94d1c52b --- /dev/null +++ b/packages/corks/lib/src/signer.dart @@ -0,0 +1,93 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:corks/corks_proto.dart' as proto; +import 'package:corks/src/interop/to_proto.dart'; +import 'package:crypto/crypto.dart'; +import 'package:meta/meta.dart'; + +mixin Signable implements ToProto { + Future sign(Signer signer) async { + final proto = toProto(); + final typeUrl = 'dev.celest/${proto.info_.qualifiedMessageName}'; + await signer.sign(utf8.encode(typeUrl)); + final bytes = proto.writeToBuffer(); + final signature = await signer.sign(bytes); + return SignedBlock( + block: bytes, + typeUrl: typeUrl, + signature: signature, + ); + } +} + +@immutable +final class SignedBlock implements ToProto { + const SignedBlock({ + required this.block, + required this.typeUrl, + required this.signature, + }); + + factory SignedBlock.fromProto(proto.SignedBlock proto) => SignedBlock( + block: Uint8List.fromList(proto.block), + typeUrl: utf8.decode(proto.typeUrl), + signature: Uint8List.fromList(proto.signature), + ); + + Future verify(Signer signer) async { + await signer.sign(utf8.encode(typeUrl)); + final signature = await signer.sign(block); + return Digest(signature) == Digest(signature); + } + + final Uint8List block; + final String typeUrl; + final Uint8List signature; + + @override + proto.SignedBlock toProto() => proto.SignedBlock( + block: block, + typeUrl: utf8.encode(typeUrl), + signature: signature, + ); +} + +abstract interface class Signer { + factory Signer(Uint8List keyId, Uint8List key) = _Signer; + const Signer._(); + + Uint8List get keyId; + Future sign(Uint8List bytes); + Future close(); +} + +final class _Signer extends Signer { + _Signer(this.keyId, Uint8List key) + : hmac = Hmac(sha256, key), + super._(); + + @override + final Uint8List keyId; + + Hmac hmac; + late Uint8List signature; + var closed = false; + + @override + Future sign(Uint8List bytes) async { + if (closed) { + throw StateError('Signer is closed'); + } + signature = await Future(() => hmac.convert(bytes).bytes as Uint8List); + hmac = Hmac(sha256, signature); + return signature; + } + + @override + Future close() async { + closed = true; + return signature; + } +} diff --git a/packages/corks/proto/buf.gen.yaml b/packages/corks/proto/buf.gen.yaml new file mode 100644 index 00000000..7f249e1d --- /dev/null +++ b/packages/corks/proto/buf.gen.yaml @@ -0,0 +1,6 @@ +version: v1 +managed: + enabled: true +plugins: + - plugin: buf.build/protocolbuffers/dart:v21.1.2 + out: ../lib/src/proto diff --git a/packages/corks/proto/buf.yaml b/packages/corks/proto/buf.yaml new file mode 100644 index 00000000..1e8b5e09 --- /dev/null +++ b/packages/corks/proto/buf.yaml @@ -0,0 +1,10 @@ +version: v1 +breaking: + use: + - FILE +lint: + use: + - DEFAULT + ignore: + - dart + - google diff --git a/packages/corks/proto/cedar/v3/context.proto b/packages/corks/proto/cedar/v3/context.proto new file mode 100644 index 00000000..b217e0a9 --- /dev/null +++ b/packages/corks/proto/cedar/v3/context.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package cedar.v3; + +import "cedar/v3/value.proto"; + +message Context { + map values = 1; +} diff --git a/packages/corks/proto/cedar/v3/entity.proto b/packages/corks/proto/cedar/v3/entity.proto new file mode 100644 index 00000000..8e3c6146 --- /dev/null +++ b/packages/corks/proto/cedar/v3/entity.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package cedar.v3; + +import "cedar/v3/entity_id.proto"; +import "cedar/v3/value.proto"; + +message Entity { + EntityId uid = 1; + repeated EntityId parents = 2; + map attributes = 3; +} diff --git a/packages/corks/proto/cedar/v3/entity_id.proto b/packages/corks/proto/cedar/v3/entity_id.proto new file mode 100644 index 00000000..d807b16a --- /dev/null +++ b/packages/corks/proto/cedar/v3/entity_id.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +package cedar.v3; + +message EntityId { + string type = 1; + string id = 2; +} diff --git a/packages/corks/proto/cedar/v3/expr.proto b/packages/corks/proto/cedar/v3/expr.proto new file mode 100644 index 00000000..02a44f22 --- /dev/null +++ b/packages/corks/proto/cedar/v3/expr.proto @@ -0,0 +1,193 @@ +syntax = "proto3"; + +package cedar.v3; + +import "cedar/v3/value.proto"; +import "dart/dart_options.proto"; + +message Expr { + oneof expr { + ExprValue value = 1; + ExprVar var = 2 [(dart_options.dart_name) = "var_"]; + ExprSlot slot = 3; + ExprUnknown unknown = 4; + ExprNot not = 5; + ExprNeg neg = 6; + ExprEquals equals = 7; + ExprNotEquals not_equals = 8; + ExprIn in = 9 [(dart_options.dart_name) = "in_"]; + ExprLessThan less_than = 10; + ExprLessThanOrEquals less_than_or_equals = 11; + ExprGreaterThan greater_than = 12; + ExprGreaterThanOrEquals greater_than_or_equals = 13; + ExprAnd and = 14; + ExprOr or = 15; + ExprPlus plus = 16; + ExprMinus minus = 17; + ExprTimes times = 18; + ExprContains contains = 19; + ExprContainsAll contains_all = 20; + ExprContainsAny contains_any = 21; + ExprGetAttribute get_attribute = 22; + ExprHasAttribute has_attribute = 23; + ExprLike like = 24; + ExprIs is = 25 [(dart_options.dart_name) = "is_"]; + ExprIfThenElse if_then_else = 26; + ExprSet set = 27; + ExprRecord record = 28; + ExprFuncCall func_call = 29; + } +} + +message ExprValue { + Value value = 1; +} + +enum Variable { + VARIABLE_UNSPECIFIED = 0; + VARIABLE_PRINCIPAL = 1; + VARIABLE_ACTION = 2; + VARIABLE_RESOURCE = 3; + VARIABLE_CONTEXT = 4; +} + +message ExprVar { + Variable variable = 1; +} + +enum SlotId { + SLOT_ID_UNSPECIFIED = 0; + SLOT_ID_PRINCIPAL = 1; + SLOT_ID_RESOURCE = 2; +} + +message ExprSlot { + SlotId slot_id = 1; +} + +message ExprUnknown { + string name = 1; +} + +message ExprNot { + Expr expr = 1; +} + +message ExprNeg { + Expr expr = 1; +} + +message ExprEquals { + Expr left = 1; + Expr right = 2; +} + +message ExprNotEquals { + Expr left = 1; + Expr right = 2; +} + +message ExprIn { + Expr left = 1; + Expr right = 2; +} + +message ExprLessThan { + Expr left = 1; + Expr right = 2; +} + +message ExprLessThanOrEquals { + Expr left = 1; + Expr right = 2; +} + +message ExprGreaterThan { + Expr left = 1; + Expr right = 2; +} + +message ExprGreaterThanOrEquals { + Expr left = 1; + Expr right = 2; +} + +message ExprAnd { + Expr left = 1; + Expr right = 2; +} + +message ExprOr { + Expr left = 1; + Expr right = 2; +} + +message ExprPlus { + Expr left = 1; + Expr right = 2; +} + +message ExprMinus { + Expr left = 1; + Expr right = 2; +} + +message ExprTimes { + Expr left = 1; + Expr right = 2; +} + +message ExprContains { + Expr left = 1; + Expr right = 2; +} + +message ExprContainsAll { + Expr left = 1; + Expr right = 2; +} + +message ExprContainsAny { + Expr left = 1; + Expr right = 2; +} + +message ExprGetAttribute { + Expr left = 1; + string attr = 2; +} + +message ExprHasAttribute { + Expr left = 1; + string attr = 2; +} + +message ExprLike { + Expr left = 1; + string pattern = 2; +} + +message ExprIs { + Expr left = 1; + string entity_type = 2; + optional Expr in = 3 [(dart_options.dart_name) = "in_"]; +} + +message ExprIfThenElse { + Expr if = 1 [(dart_options.dart_name) = "if_"]; + Expr then = 2; + Expr else = 3 [(dart_options.dart_name) = "else_"]; +} + +message ExprSet { + repeated Expr expressions = 1; +} + +message ExprRecord { + map attributes = 1; +} + +message ExprFuncCall { + string fn = 1; + repeated Expr args = 2; +} diff --git a/packages/corks/proto/cedar/v3/policy.proto b/packages/corks/proto/cedar/v3/policy.proto new file mode 100644 index 00000000..a80b43a7 --- /dev/null +++ b/packages/corks/proto/cedar/v3/policy.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; + +package cedar.v3; + +import "cedar/v3/entity_id.proto"; +import "cedar/v3/expr.proto"; + +enum PolicyEffect { + POLICY_EFFECT_UNSPECIFIED = 0; + POLICY_EFFECT_PERMIT = 1; + POLICY_EFFECT_FORBID = 2; +} + +enum PolicyOp { + POLICY_OP_UNSPECIFIED = 0; + POLICY_OP_ALL = 1; + POLICY_OP_EQUALS = 2; + POLICY_OP_IN = 3; + POLICY_OP_IS = 4; +} + +enum PolicyConditionKind { + POLICY_CONDITION_KIND_UNSPECIFIED = 0; + POLICY_CONDITION_KIND_WHEN = 1; + POLICY_CONDITION_KIND_UNLESS = 2; +} + +message Policy { + optional string id = 1; + PolicyEffect effect = 2; + PolicyPrincipal principal = 3; + PolicyAction action = 4; + PolicyResource resource = 5; + repeated PolicyCondition conditions = 6; + map annotations = 7; +} + +message PolicyPrincipal { + PolicyOp op = 1; + optional EntityId entity = 2; + optional string entity_type = 3; +} + +message PolicyAction { + PolicyOp op = 1; + optional EntityId entity = 2; + repeated EntityId entities = 3; +} + +message PolicyResource { + PolicyOp op = 1; + optional EntityId entity = 2; + optional string entity_type = 3; +} + +message PolicyCondition { + PolicyConditionKind kind = 1; + Expr body = 2; +} diff --git a/packages/corks/proto/cedar/v3/value.proto b/packages/corks/proto/cedar/v3/value.proto new file mode 100644 index 00000000..aa6bcf30 --- /dev/null +++ b/packages/corks/proto/cedar/v3/value.proto @@ -0,0 +1,34 @@ +syntax = "proto3"; + +package cedar.v3; + +import "cedar/v3/entity_id.proto"; + +message Value { + oneof value { + string string = 1; + int64 long = 2; + bool bool = 3; + SetValue set = 4; + RecordValue record = 5; + ExtensionValue extension = 6; + EntityValue entity = 7; + } +} + +message SetValue { + repeated Value values = 1; +} + +message RecordValue { + map values = 1; +} + +message ExtensionValue { + string fn = 1; + Value arg = 2; +} + +message EntityValue { + EntityId uid = 1; +} diff --git a/packages/corks/proto/corks/v1/cork.proto b/packages/corks/proto/corks/v1/cork.proto new file mode 100644 index 00000000..8d8d1c48 --- /dev/null +++ b/packages/corks/proto/corks/v1/cork.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package corks.v1; + +message Cork { + bytes id = 1; + bytes key_id = 2; + optional SignedBlock bearer = 3; + repeated SignedBlock caveats = 4; + bytes signature = 5; +} + +message SignedBlock { + bytes block = 1; + bytes type_url = 2; + bytes signature = 3; +} diff --git a/packages/corks/proto/dart/dart_options.proto b/packages/corks/proto/dart/dart_options.proto new file mode 100644 index 00000000..fa7ace22 --- /dev/null +++ b/packages/corks/proto/dart/dart_options.proto @@ -0,0 +1,77 @@ +// Experimental options controlling Dart code generation. +syntax = "proto2"; + +package dart_options; + +// This file must be modified for Google internal use, +// because custom options only work when the package name +// agrees with the version of protoc we are using. +// (The import statement and "google.protobuf." prefix need to be changed.) + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/plugin.proto"; + +// A mixin that can be used in the 'with' clause of the generated Dart class +// for a proto message. +message DartMixin { + // The name of the mixin class. + optional string name = 1; + + // A URI pointing to the Dart library that defines the mixin. + // The generated Dart code will use this in an import statement. + optional string import_from = 2; + + // The name of another mixin to be applied ahead of this one. + // The generated class for the message will inherit from all mixins + // in the parent chain. + optional string parent = 3; +} + +// Defines additional Dart imports to be used with messages in this file. +message Imports { + // Mixins to be used on messages in this file. + // These mixins are in addition to internally defined mixins (e.g PbMapMixin) + // and may override them. + // + // Warning: mixins are experimental. The protoc Dart plugin doesn't check + // for name conflicts between mixin class members and generated class members, + // so the generated code may contain errors. Therefore, running dartanalyzer + // on the generated file is a good idea. + repeated DartMixin mixins = 1; +} + +extend google.protobuf.FileOptions { + optional Imports imports = 28125061; + + // Applies the named mixin to all messages in this file. + // (May be overridden by the "mixin" option on a message.) + // For now, "PbMapMixin" is the only available mixin. + optional string default_mixin = 96128839; +} + +extend google.protobuf.MessageOptions { + // Applies the named mixin. + // For now, "PbMapMixin" is the only available mixin. + // The empty string can be used to turn off mixins for this message. + optional string mixin = 96128839; +} + +extend google.protobuf.FieldOptions { + // Adds @override annotation to the field's getter (for use with mixins). + optional bool override_getter = 28205290; + + // Adds @override annotation to the field's setter (for use with mixins). + optional bool override_setter = 28937366; + + // Adds @override annotation to the field's hasX() method (for use with + // mixins). + optional bool override_has_method = 28937461; + + // Adds @override annotation to the field's clearX() method (for use with + // mixins). + optional bool override_clear_method = 28907907; + + // Uses the given name for getters, setters and as suffixes for has/clear + // methods in the generated Dart file. Should be lowerCamelCase. + optional string dart_name = 28700919; +} diff --git a/packages/corks/proto/google/protobuf/README.md b/packages/corks/proto/google/protobuf/README.md new file mode 100644 index 00000000..5a22e7c8 --- /dev/null +++ b/packages/corks/proto/google/protobuf/README.md @@ -0,0 +1,3 @@ +# Protobufs + +Google protobuf standard library: https://github.com/protocolbuffers/protobuf diff --git a/packages/corks/proto/google/protobuf/any.proto b/packages/corks/proto/google/protobuf/any.proto new file mode 100644 index 00000000..7bebd915 --- /dev/null +++ b/packages/corks/proto/google/protobuf/any.proto @@ -0,0 +1,162 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "google.golang.org/protobuf/types/known/anypb"; +option java_multiple_files = true; +option java_outer_classname = "AnyProto"; +option java_package = "com.google.protobuf"; +option objc_class_prefix = "GPB"; + +// `Any` contains an arbitrary serialized protocol buffer message along with a +// URL that describes the type of the serialized message. +// +// Protobuf library provides support to pack/unpack Any values in the form +// of utility functions or additional generated methods of the Any type. +// +// Example 1: Pack and unpack a message in C++. +// +// Foo foo = ...; +// Any any; +// any.PackFrom(foo); +// ... +// if (any.UnpackTo(&foo)) { +// ... +// } +// +// Example 2: Pack and unpack a message in Java. +// +// Foo foo = ...; +// Any any = Any.pack(foo); +// ... +// if (any.is(Foo.class)) { +// foo = any.unpack(Foo.class); +// } +// // or ... +// if (any.isSameTypeAs(Foo.getDefaultInstance())) { +// foo = any.unpack(Foo.getDefaultInstance()); +// } +// +// Example 3: Pack and unpack a message in Python. +// +// foo = Foo(...) +// any = Any() +// any.Pack(foo) +// ... +// if any.Is(Foo.DESCRIPTOR): +// any.Unpack(foo) +// ... +// +// Example 4: Pack and unpack a message in Go +// +// foo := &pb.Foo{...} +// any, err := anypb.New(foo) +// if err != nil { +// ... +// } +// ... +// foo := &pb.Foo{} +// if err := any.UnmarshalTo(foo); err != nil { +// ... +// } +// +// The pack methods provided by protobuf library will by default use +// 'type.googleapis.com/full.type.name' as the type URL and the unpack +// methods only use the fully qualified type name after the last '/' +// in the type URL, for example "foo.bar.com/x/y.z" will yield type +// name "y.z". +// +// JSON +// ==== +// The JSON representation of an `Any` value uses the regular +// representation of the deserialized, embedded message, with an +// additional field `@type` which contains the type URL. Example: +// +// package google.profile; +// message Person { +// string first_name = 1; +// string last_name = 2; +// } +// +// { +// "@type": "type.googleapis.com/google.profile.Person", +// "firstName": , +// "lastName": +// } +// +// If the embedded message type is well-known and has a custom JSON +// representation, that representation will be embedded adding a field +// `value` which holds the custom JSON in addition to the `@type` +// field. Example (for message [google.protobuf.Duration][]): +// +// { +// "@type": "type.googleapis.com/google.protobuf.Duration", +// "value": "1.212s" +// } +// +message Any { + // A URL/resource name that uniquely identifies the type of the serialized + // protocol buffer message. This string must contain at least + // one "/" character. The last segment of the URL's path must represent + // the fully qualified name of the type (as in + // `path/google.protobuf.Duration`). The name should be in a canonical form + // (e.g., leading "." is not accepted). + // + // In practice, teams usually precompile into the binary all types that they + // expect it to use in the context of Any. However, for URLs which use the + // scheme `http`, `https`, or no scheme, one can optionally set up a type + // server that maps type URLs to message definitions as follows: + // + // * If no scheme is provided, `https` is assumed. + // * An HTTP GET on the URL must yield a [google.protobuf.Type][] + // value in binary format, or produce an error. + // * Applications are allowed to cache lookup results based on the + // URL, or have them precompiled into a binary to avoid any + // lookup. Therefore, binary compatibility needs to be preserved + // on changes to types. (Use versioned type names to manage + // breaking changes.) + // + // Note: this functionality is not currently available in the official + // protobuf release, and it is not used for type URLs beginning with + // type.googleapis.com. As of May 2023, there are no widely used type server + // implementations and no plans to implement one. + // + // Schemes other than `http`, `https` (or the empty scheme) might be + // used with implementation specific semantics. + // + string type_url = 1; + + // Must be a valid serialized protocol buffer of the above specified type. + bytes value = 2; +} diff --git a/packages/corks/proto/google/protobuf/descriptor.proto b/packages/corks/proto/google/protobuf/descriptor.proto new file mode 100644 index 00000000..a8fb4b24 --- /dev/null +++ b/packages/corks/proto/google/protobuf/descriptor.proto @@ -0,0 +1,1248 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + +syntax = "proto2"; + +package google.protobuf; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Protobuf.Reflection"; +option go_package = "google.golang.org/protobuf/types/descriptorpb"; +option java_outer_classname = "DescriptorProtos"; +option java_package = "com.google.protobuf"; +option objc_class_prefix = "GPB"; +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// The full set of known editions. +enum Edition { + // A placeholder for an unknown edition value. + EDITION_UNKNOWN = 0; + + // Legacy syntax "editions". These pre-date editions, but behave much like + // distinct editions. These can't be used to specify the edition of proto + // files, but feature definitions must supply proto2/proto3 defaults for + // backwards compatibility. + EDITION_PROTO2 = 998; + EDITION_PROTO3 = 999; + + // Editions that have been released. The specific values are arbitrary and + // should not be depended on, but they will always be time-ordered for easy + // comparison. + EDITION_2023 = 1000; + + // Placeholder editions for testing feature resolution. These should not be + // used or relyed on outside of tests. + EDITION_1_TEST_ONLY = 1; + EDITION_2_TEST_ONLY = 2; + EDITION_99997_TEST_ONLY = 99997; + EDITION_99998_TEST_ONLY = 99998; + EDITION_99999_TEST_ONLY = 99999; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2", "proto3", and "editions". + // + // If `edition` is present, this value must be "editions". + optional string syntax = 12; + + // The edition of the proto file. + optional Edition edition = 14; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + + optional ExtensionRangeOptions options = 3; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +message ExtensionRangeOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + message Declaration { + // The extension number declared within the extension range. + optional int32 number = 1; + + // The fully-qualified name of the extension field. There must be a leading + // dot in front of the full name. + optional string full_name = 2; + + // The fully-qualified type name of the extension field. Unlike + // Metadata.type, Declaration.type must have a leading dot for messages + // and enums. + optional string type = 3; + + // If true, indicates that the number is reserved in the extension range, + // and any extension field with the number will fail to compile. Set this + // when a declared extension field is deleted. + optional bool reserved = 5; + + // If true, indicates that the extension must be defined as repeated. + // Otherwise the extension must be defined as optional. + optional bool repeated = 6; + + reserved 4; // removed is_repeated + } + + // For external users: DO NOT USE. We are in the process of open sourcing + // extension declaration and executing internal cleanups before it can be + // used externally. + repeated Declaration declaration = 2 [retention = RETENTION_SOURCE]; + + // Any features defined in the specific edition. + optional FeatureSet features = 50; + + // The verification state of the extension range. + enum VerificationState { + // All the extensions of the range must be declared. + DECLARATION = 0; + UNVERIFIED = 1; + } + + // The verification state of the range. + // TODO: flip the default to DECLARATION once all empty ranges + // are marked as UNVERIFIED. + optional VerificationState verification = 3 [default = UNVERIFIED]; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported after google.protobuf. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. In Editions, the group wire format + // can be enabled via the `message_encoding` feature. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + } + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REPEATED = 3; + // The required label is only allowed in google.protobuf. In proto3 and Editions + // it's explicitly prohibited. In Editions, the `field_presence` feature + // can be used to get this behavior. + LABEL_REQUIRED = 2; + } + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; + + // If true, this is a proto3 "optional". When a proto3 field is optional, it + // tracks presence regardless of field type. + // + // When proto3_optional is true, this field must be belong to a oneof to + // signal to old proto3 clients that presence is tracked for this field. This + // oneof is known as a "synthetic" oneof, and this field must be its sole + // member (each proto3 optional field gets its own synthetic oneof). Synthetic + // oneofs exist in the descriptor only, and do not generate any API. Synthetic + // oneofs must be ordered after all "real" oneofs. + // + // For message fields, proto3_optional doesn't create any semantic change, + // since non-repeated message fields always track presence. However it still + // indicates the semantic detail of whether the user wrote "optional" or not. + // This can be useful for round-tripping the .proto file. For consistency we + // give message fields a synthetic oneof also, even though it is not required + // to track presence. This is especially important because the parser can't + // tell if a field is a message or an enum, so it must always create a + // synthetic oneof. + // + // Proto2 optional fields do not set this flag, because they already indicate + // optional with `LABEL_OPTIONAL`. + optional bool proto3_optional = 17; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; + + // Range of reserved numeric values. Reserved values may not be used by + // entries in the same enum. Reserved ranges may not overlap. + // + // Note that this is distinct from DescriptorProto.ReservedRange in that it + // is inclusive such that it can appropriately represent the entire int32 + // domain. + message EnumReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Inclusive. + } + + // Range of reserved numeric values. Reserved numeric values may not be used + // by enum values in the same enum declaration. Reserved ranges may not + // overlap. + repeated EnumReservedRange reserved_range = 4; + + // Reserved enum value names, which may not be reused. A given name may only + // be reserved once. + repeated string reserved_name = 5; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default = false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default = false]; +} + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + +message FileOptions { + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + // Controls the name of the wrapper Java class generated for the .proto file. + // That class will always contain the .proto file's getDescriptor() method as + // well as any top-level extensions defined in the .proto file. + // If java_multiple_files is disabled, then all the other classes from the + // .proto file will be nested inside the single wrapper outer class. + optional string java_outer_classname = 8; + + // If enabled, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the wrapper class + // named by java_outer_classname. However, the wrapper class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default = false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated = true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default = false]; + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default = SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default = false]; + optional bool java_generic_services = 17 [default = false]; + optional bool py_generic_services = 18 [default = false]; + optional bool php_generic_services = 42 [default = false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default = false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default = true]; + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // Use this option to change the namespace of php generated classes. Default + // is empty. When this option is empty, the package name will be used for + // determining the namespace. + optional string php_namespace = 41; + + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be + // used for determining the namespace. + optional string php_metadata_namespace = 44; + + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + optional string ruby_package = 45; + + // Any features defined in the specific edition. + optional FeatureSet features = 50; + + // The parser stores options it doesn't recognize here. + // See the documentation for the "Options" section above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. + // See the documentation for the "Options" section above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default = false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default = false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default = false]; + + reserved 4, 5, 6; + + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + // + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementations still need to work as + // if the field is a repeated message field. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + // Enable the legacy handling of JSON field name conflicts. This lowercases + // and strips underscored from the fields before comparison in proto3 only. + // The new behavior takes `json_name` into account and applies to proto2 as + // well. + // + // This should only be used as a temporary measure against broken builds due + // to the change in behavior for JSON field name conflicts. + // + // TODO This is legacy behavior we plan to remove once downstream + // teams have had time to migrate. + optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; + + // Any features defined in the specific edition. + optional FeatureSet features = 12; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is only implemented to support use of + // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of + // type "bytes" in the open source release -- sorry, we'll try to include + // other types in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + // The option [ctype=CORD] may be applied to a non-repeated field of type + // "bytes". It indicates that in C++, the data should be stored in a Cord + // instead of a string. For very large strings, this may reduce memory + // fragmentation. It may also allow better performance when parsing from a + // Cord, or when parsing with aliasing enabled, as the parsed Cord may then + // alias the original buffer. + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. This option is prohibited in + // Editions, but the `repeated_field_encoding` feature can be used to control + // the behavior. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + // is represented as JavaScript string, which avoids loss of precision that + // can happen when a large value is converted to a floating point JavaScript. + // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + // use the JavaScript "number" type. The behavior of the default option + // JS_NORMAL is implementation dependent. + // + // This option is an enum to permit additional types to be added, e.g. + // goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + // + // As of May 2022, lazy verifies the contents of the byte stream during + // parsing. An invalid byte stream will cause the overall parsing to fail. + optional bool lazy = 5 [default = false]; + + // unverified_lazy does no correctness checks on the byte stream. This should + // only be used where lazy with verification is prohibitive for performance + // reasons. + optional bool unverified_lazy = 15 [default = false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default = false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default = false]; + + // Indicate that the field value should not be printed out when using debug + // formats, e.g. when the field contains sensitive credentials. + optional bool debug_redact = 16 [default = false]; + + // If set to RETENTION_SOURCE, the option will be omitted from the binary. + // Note: as of January 2023, support for this is in progress and does not yet + // have an effect (b/264593489). + enum OptionRetention { + RETENTION_UNKNOWN = 0; + RETENTION_RUNTIME = 1; + RETENTION_SOURCE = 2; + } + + optional OptionRetention retention = 17; + + // This indicates the types of entities that the field may apply to when used + // as an option. If it is unset, then the field may be freely used as an + // option on any kind of entity. Note: as of January 2023, support for this is + // in progress and does not yet have an effect (b/264593489). + enum OptionTargetType { + TARGET_TYPE_UNKNOWN = 0; + TARGET_TYPE_FILE = 1; + TARGET_TYPE_EXTENSION_RANGE = 2; + TARGET_TYPE_MESSAGE = 3; + TARGET_TYPE_FIELD = 4; + TARGET_TYPE_ONEOF = 5; + TARGET_TYPE_ENUM = 6; + TARGET_TYPE_ENUM_ENTRY = 7; + TARGET_TYPE_SERVICE = 8; + TARGET_TYPE_METHOD = 9; + } + + repeated OptionTargetType targets = 19; + + message EditionDefault { + optional Edition edition = 3; + optional string value = 2; // Textproto value. + } + repeated EditionDefault edition_defaults = 20; + + // Any features defined in the specific edition. + optional FeatureSet features = 21; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype + reserved 18; // reserve target, target_obsolete_do_not_use +} + +message OneofOptions { + // Any features defined in the specific edition. + optional FeatureSet features = 1; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default = false]; + + reserved 5; // javanano_as_lite + + // Enable the legacy handling of JSON field name conflicts. This lowercases + // and strips underscored from the fields before comparison in proto3 only. + // The new behavior takes `json_name` into account and applies to proto2 as + // well. + // TODO Remove this legacy behavior once downstream teams have + // had time to migrate. + optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; + + // Any features defined in the specific edition. + optional FeatureSet features = 7; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default = false]; + + // Any features defined in the specific edition. + optional FeatureSet features = 2; + + // Indicate that fields annotated with this enum value should not be printed + // out when using debug formats, e.g. when the field contains sensitive + // credentials. + optional bool debug_redact = 3 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + // Any features defined in the specific edition. + optional FeatureSet features = 34; + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default = false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN]; + + // Any features defined in the specific edition. + optional FeatureSet features = 35; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents + // "foo.(bar.baz).moo". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Features + +// TODO Enums in C++ gencode (and potentially other languages) are +// not well scoped. This means that each of the feature enums below can clash +// with each other. The short names we've chosen maximize call-site +// readability, but leave us very open to this scenario. A future feature will +// be designed and implemented to handle this, hopefully before we ever hit a +// conflict here. +message FeatureSet { + enum FieldPresence { + FIELD_PRESENCE_UNKNOWN = 0; + EXPLICIT = 1; + IMPLICIT = 2; + LEGACY_REQUIRED = 3; + } + optional FieldPresence field_presence = 1 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_FIELD, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "EXPLICIT" + }, + edition_defaults = { + edition: EDITION_PROTO3, + value: "IMPLICIT" + }, + edition_defaults = { + edition: EDITION_2023, + value: "EXPLICIT" + } + ]; + + enum EnumType { + ENUM_TYPE_UNKNOWN = 0; + OPEN = 1; + CLOSED = 2; + } + optional EnumType enum_type = 2 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_ENUM, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "CLOSED" + }, + edition_defaults = { + edition: EDITION_PROTO3, + value: "OPEN" + } + ]; + + enum RepeatedFieldEncoding { + REPEATED_FIELD_ENCODING_UNKNOWN = 0; + PACKED = 1; + EXPANDED = 2; + } + optional RepeatedFieldEncoding repeated_field_encoding = 3 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_FIELD, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "EXPANDED" + }, + edition_defaults = { + edition: EDITION_PROTO3, + value: "PACKED" + } + ]; + + enum Utf8Validation { + UTF8_VALIDATION_UNKNOWN = 0; + NONE = 1; + VERIFY = 2; + } + optional Utf8Validation utf8_validation = 4 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_FIELD, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "NONE" + }, + edition_defaults = { + edition: EDITION_PROTO3, + value: "VERIFY" + } + ]; + + enum MessageEncoding { + MESSAGE_ENCODING_UNKNOWN = 0; + LENGTH_PREFIXED = 1; + DELIMITED = 2; + } + optional MessageEncoding message_encoding = 5 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_FIELD, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "LENGTH_PREFIXED" + } + ]; + + enum JsonFormat { + JSON_FORMAT_UNKNOWN = 0; + ALLOW = 1; + LEGACY_BEST_EFFORT = 2; + } + optional JsonFormat json_format = 6 [ + retention = RETENTION_RUNTIME, + targets = TARGET_TYPE_MESSAGE, + targets = TARGET_TYPE_ENUM, + targets = TARGET_TYPE_FILE, + edition_defaults = { + edition: EDITION_PROTO2, + value: "LEGACY_BEST_EFFORT" + }, + edition_defaults = { + edition: EDITION_PROTO3, + value: "ALLOW" + } + ]; + + reserved 999; + + extensions 1000; // for Protobuf C++ + extensions 1001; // for Protobuf Java + + extensions 9995 to 9999; // For internal testing +} + +// A compiled specification for the defaults of a set of features. These +// messages are generated from FeatureSet extensions and can be used to seed +// feature resolution. The resolution with this object becomes a simple search +// for the closest matching edition, followed by proto merges. +message FeatureSetDefaults { + // A map from every known edition with a unique set of defaults to its + // defaults. Not all editions may be contained here. For a given edition, + // the defaults at the closest matching edition ordered at or before it should + // be used. This field must be in strict ascending order by edition. + message FeatureSetEditionDefault { + optional Edition edition = 3; + optional FeatureSet features = 2; + } + repeated FeatureSetEditionDefault defaults = 1; + + // The minimum supported edition (inclusive) when this was constructed. + // Editions before this will not have defaults. + optional Edition minimum_edition = 4; + + // The maximum known edition (inclusive) when this was constructed. Editions + // after this will not have reliable defaults. + optional Edition maximum_edition = 5; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendant. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition occurs. + // For example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed = true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed = true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to moo. + // // + // // Another line attached to moo. + // optional double moo = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to moo or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed = true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified object. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + + // Represents the identified object's effect on the element in the original + // .proto file. + enum Semantic { + // There is no effect or the effect is indescribable. + NONE = 0; + // The element is set or otherwise mutated. + SET = 1; + // An alias to the element is returned. + ALIAS = 2; + } + optional Semantic semantic = 5; + } +} diff --git a/packages/corks/proto/google/protobuf/duration.proto b/packages/corks/proto/google/protobuf/duration.proto new file mode 100644 index 00000000..a4f3a1cd --- /dev/null +++ b/packages/corks/proto/google/protobuf/duration.proto @@ -0,0 +1,115 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "google.golang.org/protobuf/types/known/durationpb"; +option java_multiple_files = true; +option java_outer_classname = "DurationProto"; +option java_package = "com.google.protobuf"; +option objc_class_prefix = "GPB"; + +// A Duration represents a signed, fixed-length span of time represented +// as a count of seconds and fractions of seconds at nanosecond +// resolution. It is independent of any calendar and concepts like "day" +// or "month". It is related to Timestamp in that the difference between +// two Timestamp values is a Duration and it can be added or subtracted +// from a Timestamp. Range is approximately +-10,000 years. +// +// # Examples +// +// Example 1: Compute Duration from two Timestamps in pseudo code. +// +// Timestamp start = ...; +// Timestamp end = ...; +// Duration duration = ...; +// +// duration.seconds = end.seconds - start.seconds; +// duration.nanos = end.nanos - start.nanos; +// +// if (duration.seconds < 0 && duration.nanos > 0) { +// duration.seconds += 1; +// duration.nanos -= 1000000000; +// } else if (duration.seconds > 0 && duration.nanos < 0) { +// duration.seconds -= 1; +// duration.nanos += 1000000000; +// } +// +// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +// +// Timestamp start = ...; +// Duration duration = ...; +// Timestamp end = ...; +// +// end.seconds = start.seconds + duration.seconds; +// end.nanos = start.nanos + duration.nanos; +// +// if (end.nanos < 0) { +// end.seconds -= 1; +// end.nanos += 1000000000; +// } else if (end.nanos >= 1000000000) { +// end.seconds += 1; +// end.nanos -= 1000000000; +// } +// +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// +// # JSON Mapping +// +// In JSON format, the Duration type is encoded as a string rather than an +// object, where the string ends in the suffix "s" (indicating seconds) and +// is preceded by the number of seconds, with nanoseconds expressed as +// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +// microsecond should be expressed in JSON format as "3.000001s". +// +message Duration { + // Signed seconds of the span of time. Must be from -315,576,000,000 + // to +315,576,000,000 inclusive. Note: these bounds are computed from: + // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + int64 seconds = 1; + + // Signed fractions of a second at nanosecond resolution of the span + // of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For durations + // of one second or more, a non-zero value for the `nanos` field must be + // of the same sign as the `seconds` field. Must be from -999,999,999 + // to +999,999,999 inclusive. + int32 nanos = 2; +} diff --git a/packages/corks/proto/google/protobuf/plugin.proto b/packages/corks/proto/google/protobuf/plugin.proto new file mode 100644 index 00000000..735e4bfa --- /dev/null +++ b/packages/corks/proto/google/protobuf/plugin.proto @@ -0,0 +1,182 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to +// change. +// +// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is +// just a program that reads a CodeGeneratorRequest from stdin and writes a +// CodeGeneratorResponse to stdout. +// +// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead +// of dealing with the raw protocol defined here. +// +// A plugin executable needs only to be placed somewhere in the path. The +// plugin should be named "protoc-gen-$NAME", and will then be used when the +// flag "--${NAME}_out" is passed to protoc. + +syntax = "proto2"; + +package google.protobuf.compiler; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/protobuf/types/pluginpb"; +option java_outer_classname = "PluginProtos"; +option java_package = "com.google.protobuf.compiler"; + +// The version number of protocol compiler. +message Version { + optional int32 major = 1; + optional int32 minor = 2; + optional int32 patch = 3; + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + optional string suffix = 4; +} + +// An encoded CodeGeneratorRequest is written to the plugin's stdin. +message CodeGeneratorRequest { + // The .proto files that were explicitly listed on the command-line. The + // code generator should generate code only for these files. Each file's + // descriptor will be included in proto_file, below. + repeated string file_to_generate = 1; + + // The generator parameter passed on the command-line. + optional string parameter = 2; + + // FileDescriptorProtos for all files in files_to_generate and everything + // they import. The files will appear in topological order, so each file + // appears before any file that imports it. + // + // protoc guarantees that all proto_files will be written after + // the fields above, even though this is not technically guaranteed by the + // protobuf wire format. This theoretically could allow a plugin to stream + // in the FileDescriptorProtos and handle them one by one rather than read + // the entire set into memory at once. However, as of this writing, this + // is not similarly optimized on protoc's end -- it will store all fields in + // memory at once before sending them to the plugin. + // + // Type names of fields and extensions in the FileDescriptorProto are always + // fully qualified. + repeated FileDescriptorProto proto_file = 15; + + // The version number of protocol compiler. + optional Version compiler_version = 3; +} + +// The plugin writes an encoded CodeGeneratorResponse to stdout. +message CodeGeneratorResponse { + // Error message. If non-empty, code generation failed. The plugin process + // should exit with status code zero even if it reports an error in this way. + // + // This should be used to indicate errors in .proto files which prevent the + // code generator from generating correct code. Errors which indicate a + // problem in protoc itself -- such as the input CodeGeneratorRequest being + // unparseable -- should be reported by writing a message to stderr and + // exiting with a non-zero status code. + optional string error = 1; + + // A bitmask of supported features that the code generator supports. + // This is a bitwise "or" of values from the Feature enum. + optional uint64 supported_features = 2; + + // Sync with code_generator.h. + enum Feature { + FEATURE_NONE = 0; + FEATURE_PROTO3_OPTIONAL = 1; + } + + // Represents a single generated file. + message File { + // The file name, relative to the output directory. The name must not + // contain "." or ".." components and must be relative, not be absolute (so, + // the file cannot lie outside the output directory). "/" must be used as + // the path separator, not "\". + // + // If the name is omitted, the content will be appended to the previous + // file. This allows the generator to break large files into small chunks, + // and allows the generated text to be streamed back to protoc so that large + // files need not reside completely in memory at one time. Note that as of + // this writing protoc does not optimize for this -- it will read the entire + // CodeGeneratorResponse before writing files to disk. + optional string name = 1; + + // If non-empty, indicates that the named file should already exist, and the + // content here is to be inserted into that file at a defined insertion + // point. This feature allows a code generator to extend the output + // produced by another code generator. The original generator may provide + // insertion points by placing special annotations in the file that look + // like: + // @@protoc_insertion_point(NAME) + // The annotation can have arbitrary text before and after it on the line, + // which allows it to be placed in a comment. NAME should be replaced with + // an identifier naming the point -- this is what other generators will use + // as the insertion_point. Code inserted at this point will be placed + // immediately above the line containing the insertion point (thus multiple + // insertions to the same point will come out in the order they were added). + // The double-@ is intended to make it unlikely that the generated code + // could contain things that look like insertion points by accident. + // + // For example, the C++ code generator places the following line in the + // .pb.h files that it generates: + // // @@protoc_insertion_point(namespace_scope) + // This line appears within the scope of the file's package namespace, but + // outside of any particular class. Another plugin can then specify the + // insertion_point "namespace_scope" to generate additional classes or + // other declarations that should be placed in this scope. + // + // Note that if the line containing the insertion point begins with + // whitespace, the same whitespace will be added to every line of the + // inserted text. This is useful for languages like Python, where + // indentation matters. In these languages, the insertion point comment + // should be indented the same amount as any inserted code will need to be + // in order to work correctly in that context. + // + // The code generator that generates the initial file and the one which + // inserts into it must both run as part of a single invocation of protoc. + // Code generators are executed in the order in which they appear on the + // command line. + // + // If |insertion_point| is present, |name| must also be present. + optional string insertion_point = 2; + + // The file contents. + optional string content = 15; + + // Information describing the file content being inserted. If an insertion + // point is used, this information will be appropriately offset and inserted + // into the code generation metadata for the generated files. + optional GeneratedCodeInfo generated_code_info = 16; + } + repeated File file = 15; +} diff --git a/packages/corks/proto/google/protobuf/timestamp.proto b/packages/corks/proto/google/protobuf/timestamp.proto new file mode 100644 index 00000000..354c5be3 --- /dev/null +++ b/packages/corks/proto/google/protobuf/timestamp.proto @@ -0,0 +1,144 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "google.golang.org/protobuf/types/known/timestamppb"; +option java_multiple_files = true; +option java_outer_classname = "TimestampProto"; +option java_package = "com.google.protobuf"; +option objc_class_prefix = "GPB"; + +// A Timestamp represents a point in time independent of any time zone or local +// calendar, encoded as a count of seconds and fractions of seconds at +// nanosecond resolution. The count is relative to an epoch at UTC midnight on +// January 1, 1970, in the proleptic Gregorian calendar which extends the +// Gregorian calendar backwards to year one. +// +// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +// second table is needed for interpretation, using a [24-hour linear +// smear](https://developers.google.com/time/smear). +// +// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +// restricting to that range, we ensure that we can convert to and from [RFC +// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// Example 5: Compute Timestamp from Java `Instant.now()`. +// +// Instant now = Instant.now(); +// +// Timestamp timestamp = +// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) +// .setNanos(now.getNano()).build(); +// +// Example 6: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard +// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using +// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() +// ) to obtain a formatter capable of generating timestamps in this format. +// +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} diff --git a/packages/corks/pubspec.yaml b/packages/corks/pubspec.yaml new file mode 100644 index 00000000..2d9d5162 --- /dev/null +++ b/packages/corks/pubspec.yaml @@ -0,0 +1,19 @@ +name: corks +description: A starting point for Dart libraries or applications. +version: 0.1.0 +publish_to: none + +environment: + sdk: ^3.3.0 + +dependencies: + cedar: + path: ../cedar + crypto: ^3.0.3 + fixnum: ^1.1.0 + meta: ^1.10.0 + protobuf: ^3.1.0 + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/packages/corks/test/cedar_test_todo.dart b/packages/corks/test/cedar_test_todo.dart new file mode 100644 index 00000000..73720212 --- /dev/null +++ b/packages/corks/test/cedar_test_todo.dart @@ -0,0 +1,34 @@ +// TODO(dnys1): Get this working with a dependency on cedar. + +// import 'package:cedar/cedar.dart' as cedar; +// import 'package:cedar/testing/cedar_test_corpus.dart'; +// import 'package:corks/src/interop/proto_interop.dart'; +// import 'package:test/test.dart'; + +// void main() { +// group('Corpus', () { +// for (final CedarTest( +// :name, +// :policiesCedar, +// ) in cedarCorpusTests.values) { +// group(name, () { +// test('can interop policies', () async { +// final policies = cedar.CedarPolicySet.parse(policiesCedar); +// for (final policy in policies.policies.values.cast()) { +// final protoJson = policy.toProtoJson(); +// expect( +// CedarPolicy.fromProtoJson(protoJson).toJson(), +// equals(policy.toJson()), +// ); + +// final protoBuffer = policy.toProtoBuffer(); +// expect( +// CedarPolicy.fromProtoBuffer(protoBuffer).toJson(), +// equals(policy.toJson()), +// ); +// } +// }); +// }); +// } +// }); +// } diff --git a/packages/corks/test/cork_test.dart b/packages/corks/test/cork_test.dart new file mode 100644 index 00000000..0d289274 --- /dev/null +++ b/packages/corks/test/cork_test.dart @@ -0,0 +1,67 @@ +import 'dart:convert'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:cedar/cedar.dart'; +import 'package:corks/corks.dart'; +import 'package:test/test.dart'; + +final random = Random.secure(); +Uint8List get secretKey { + const size = 32; + final key = Uint8List(size); + for (var i = 0; i < size; i++) { + key[i] = random.nextInt(256); + } + return key; +} + +extension on String { + Uint8List get bytes => Uint8List.fromList(codeUnits); +} + +void main() { + group('Cork', () { + group('build and verify', () { + final aId = 'a'.bytes; + final aKey = secretKey; + final bId = 'b'.bytes; + final bKey = secretKey; + + test('no bearer/id', () async { + final cork = await Cork.builder().build(Signer(aId, aKey)); + expect(await cork.verify(Signer(aId, aKey)), isTrue); + expect(await cork.verify(Signer(bId, bKey)), isFalse); + }); + + test('with id', () async { + final cork = await Cork.builder( + id: utf8.encode(jsonEncode(CedarEntityId('User', 'alice'))), + ).build(Signer(aId, aKey)); + expect(await cork.verify(Signer(aId, aKey)), isTrue); + expect(await cork.verify(Signer(bId, bKey)), isFalse); + }); + + test('with bearer', () async { + final cork = await Cork.builder( + bearer: Bearer.entityId( + entityId: CedarEntityId('User', 'alice'), + ), + ).build(Signer(aId, aKey)); + expect(await cork.verify(Signer(aId, aKey)), isTrue); + expect(await cork.verify(Signer(bId, bKey)), isFalse); + }); + + test('with id and bearer', () async { + final cork = await Cork.builder( + id: utf8.encode(jsonEncode(CedarEntityId('User', 'alice'))), + bearer: Bearer.entityId( + entityId: CedarEntityId('User', 'alice'), + ), + ).build(Signer(aId, aKey)); + expect(await cork.verify(Signer(aId, aKey)), isTrue); + expect(await cork.verify(Signer(bId, bKey)), isFalse); + }); + }); + }); +}