import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/hive_type_ids.dart'; import 'package:hive/hive.dart'; part 'erc20_token.g.dart'; @HiveType(typeId: Erc20Token.typeId) class Erc20Token extends CryptoCurrency with HiveObjectMixin { @HiveField(0) final String name; @HiveField(1) final String symbol; @HiveField(2) final String contractAddress; @HiveField(3) final int decimal; @HiveField(4, defaultValue: true) bool _enabled; @HiveField(5) final String? iconPath; @HiveField(6) final String? tag; bool get enabled => _enabled; set enabled(bool value) => _enabled = value; Erc20Token({ required this.name, required this.symbol, required this.contractAddress, required this.decimal, bool enabled = true, this.iconPath, this.tag, }) : _enabled = enabled, super( name: symbol.toLowerCase(), title: symbol.toUpperCase(), fullName: name, tag: tag, iconPath: iconPath, decimals: decimal); Erc20Token.copyWith(Erc20Token other, String? icon, String? tag) : this.name = other.name, this.symbol = other.symbol, this.contractAddress = other.contractAddress, this.decimal = other.decimal, this._enabled = other.enabled, this.tag = tag, this.iconPath = icon, super( name: other.name, title: other.symbol.toUpperCase(), fullName: other.name, tag: tag, iconPath: icon, decimals: other.decimal, ); static const typeId = ERC20_TOKEN_TYPE_ID; static const boxName = 'Erc20Tokens'; static const ethereumBoxName = 'EthereumErc20Tokens'; static const polygonBoxName = 'PolygonErc20Tokens'; @override bool operator ==(other) => (other is Erc20Token && other.contractAddress == contractAddress) || (other is CryptoCurrency && other.title == title); @override int get hashCode => contractAddress.hashCode; }