// Autogenerated from Pigeon (v26.1.7), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, omit_obvious_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers import 'dart:async'; import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; PlatformException _createConnectionError(String channelName) { return PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel: "$channelName".', ); } List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } if (error == null) { return [result]; } return [error.code, error.message, error.details]; } bool _deepEquals(Object? a, Object? b) { if (a is List && b is List) { return a.length == b.length && a.indexed .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { return a.length == b.length && a.entries.every((MapEntry entry) => (b as Map).containsKey(entry.key) && _deepEquals(entry.value, b[entry.key])); } return a == b; } /// Transport types for Tor connections enum TransportType { /// Direct Tor connection (no bridges) none, /// obfs4 pluggable transport obfs4, /// Snowflake pluggable transport (default broker) snowflake, /// Snowflake via AMP cache snowflakeAmp, /// Meek pluggable transport meek, /// Meek via Azure CDN meekAzure, /// WebTunnel pluggable transport webtunnel, /// Custom bridge lines (passthrough) custom, } /// Configuration for starting Tor class TorConfiguration { TorConfiguration({ required this.transport, required this.bridgeLines, this.entryNodeCountries, this.exitNodeCountries, this.strictNodes, }); /// Transport type to use TransportType transport; /// Bridge lines for the transport (empty for direct connection) List bridgeLines; /// Entry node countries (ISO 3166-1 alpha-2, comma-separated, e.g., "de,fr,nl") String? entryNodeCountries; /// Exit node countries (ISO 3166-1 alpha-2, comma-separated, e.g., "ch,is,se") String? exitNodeCountries; /// If true, never use nodes outside specified countries bool? strictNodes; List _toList() { return [ transport, bridgeLines, entryNodeCountries, exitNodeCountries, strictNodes, ]; } Object encode() { return _toList(); } static TorConfiguration decode(Object result) { result as List; return TorConfiguration( transport: result[0]! as TransportType, bridgeLines: (result[1] as List?)!.cast(), entryNodeCountries: result[2] as String?, exitNodeCountries: result[3] as String?, strictNodes: result[4] as bool?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! TorConfiguration || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(encode(), other.encode()); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => Object.hashAll(_toList()) ; } /// Current Tor status class TorStatus { TorStatus({ required this.isRunning, this.socksPort, required this.bootstrapProgress, this.currentCircuit, this.exitNodeCountry, }); /// Whether Tor is running bool isRunning; /// SOCKS proxy port (if running) int? socksPort; /// Bootstrap progress (0-100) int bootstrapProgress; /// Current circuit ID String? currentCircuit; /// Exit node country code String? exitNodeCountry; List _toList() { return [ isRunning, socksPort, bootstrapProgress, currentCircuit, exitNodeCountry, ]; } Object encode() { return _toList(); } static TorStatus decode(Object result) { result as List; return TorStatus( isRunning: result[0]! as bool, socksPort: result[1] as int?, bootstrapProgress: result[2]! as int, currentCircuit: result[3] as String?, exitNodeCountry: result[4] as String?, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! TorStatus || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(encode(), other.encode()); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => Object.hashAll(_toList()) ; } /// Log message from Tor class TorLogMessage { TorLogMessage({ required this.severity, required this.message, required this.timestamp, }); /// Log severity (NOTICE, WARN, ERR, DEBUG) String severity; /// Log message String message; /// Timestamp (milliseconds since epoch) int timestamp; List _toList() { return [ severity, message, timestamp, ]; } Object encode() { return _toList(); } static TorLogMessage decode(Object result) { result as List; return TorLogMessage( severity: result[0]! as String, message: result[1]! as String, timestamp: result[2]! as int, ); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { if (other is! TorLogMessage || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { return true; } return _deepEquals(encode(), other.encode()); } @override // ignore: avoid_equals_and_hash_code_on_mutable_classes int get hashCode => Object.hashAll(_toList()) ; } class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); } else if (value is TransportType) { buffer.putUint8(129); writeValue(buffer, value.index); } else if (value is TorConfiguration) { buffer.putUint8(130); writeValue(buffer, value.encode()); } else if (value is TorStatus) { buffer.putUint8(131); writeValue(buffer, value.encode()); } else if (value is TorLogMessage) { buffer.putUint8(132); writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } } @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 129: final value = readValue(buffer) as int?; return value == null ? null : TransportType.values[value]; case 130: return TorConfiguration.decode(readValue(buffer)!); case 131: return TorStatus.decode(readValue(buffer)!); case 132: return TorLogMessage.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); } } } /// Host API (Flutter -> Native) class TorApi { /// Constructor for [TorApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. TorApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; /// Start Tor with the given configuration /// Returns a Future to avoid blocking the main thread Future startTor(TorConfiguration config) async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.TorApi.startTor$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([config]); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else if (pigeonVar_replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { return (pigeonVar_replyList[0] as int?)!; } } /// Stop Tor Future stopTor() async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.TorApi.stopTor$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else { return; } } /// Get current status Future getStatus() async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.TorApi.getStatus$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else if (pigeonVar_replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { return (pigeonVar_replyList[0] as TorStatus?)!; } } /// Request a new Tor identity (new circuit) Future requestNewIdentity() async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.TorApi.requestNewIdentity$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else { return; } } } /// Flutter API (Native -> Flutter) abstract class TorLogApi { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); /// Called when a log message is received void onLogMessage(TorLogMessage log); /// Called when status changes void onStatusChanged(TorStatus status); static void setUp(TorLogApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.flutter_tor.TorLogApi.onLogMessage$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.flutter_tor.TorLogApi.onLogMessage was null.'); final List args = (message as List?)!; final TorLogMessage? arg_log = (args[0] as TorLogMessage?); assert(arg_log != null, 'Argument for dev.flutter.pigeon.flutter_tor.TorLogApi.onLogMessage was null, expected non-null TorLogMessage.'); try { api.onLogMessage(arg_log!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { final pigeonVar_channel = BasicMessageChannel( 'dev.flutter.pigeon.flutter_tor.TorLogApi.onStatusChanged$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.flutter_tor.TorLogApi.onStatusChanged was null.'); final List args = (message as List?)!; final TorStatus? arg_status = (args[0] as TorStatus?); assert(arg_status != null, 'Argument for dev.flutter.pigeon.flutter_tor.TorLogApi.onStatusChanged was null, expected non-null TorStatus.'); try { api.onStatusChanged(arg_status!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); } catch (e) { return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } } } class IPtProxyController { /// Constructor for [IPtProxyController]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. IPtProxyController({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; Future start(TransportType proxyType, String proxy) async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.IPtProxyController.start$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([proxyType, proxy]); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else if (pigeonVar_replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { return (pigeonVar_replyList[0] as int?)!; } } Future stop(TransportType proxyType) async { final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_tor.IPtProxyController.stop$pigeonVar_messageChannelSuffix'; final pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send([proxyType]); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { throw PlatformException( code: pigeonVar_replyList[0]! as String, message: pigeonVar_replyList[1] as String?, details: pigeonVar_replyList[2], ); } else { return; } } }