import 'package:pshared/models/payment/methods/data.dart'; import 'package:pshared/models/payment/type.dart'; import 'package:pshared/models/permissions/bound.dart'; import 'package:pshared/models/storable.dart'; class PaymentMethodModel implements PermissionBound, Storable { final Storable storable; final PermissionBound permissionBound; final String recipientRef; final PaymentMethodData data; final bool isArchived; const PaymentMethodModel({ required this.storable, required this.permissionBound, required this.recipientRef, required this.data, this.isArchived = false, }); PaymentType get type => data.type; @override String get id => storable.id; @override DateTime get createdAt => storable.createdAt; @override DateTime get updatedAt => storable.updatedAt; @override String get organizationRef => permissionBound.organizationRef; @override String get permissionRef => permissionBound.permissionRef; PaymentMethodModel copyWith({ PaymentMethodData? data, bool? isArchived, }) => PaymentMethodModel( storable: storable, permissionBound: permissionBound, recipientRef: recipientRef, data: data ?? this.data, isArchived: isArchived ?? this.isArchived, ); }