Files
sxchnge/frontend/packages/sxchnge_kyc/lib/src/transport/contracts.dart
T

69 lines
1.6 KiB
Dart

import '../models/identity.dart';
import '../models/limits.dart';
// Transport fixtures for simulated services. Production owns its backend DTOs.
class IdentityDTO {
const IdentityDTO(this.status, {this.reason, this.id, this.simulated = true});
final String status;
final String? reason;
final String? id;
final bool simulated;
}
class IdentityMapper {
static Identity fromDTO(IdentityDTO dto) => Identity(
status: IdentityStatus.values.byName(dto.status),
reason: dto.reason == null ? null : ReviewReason.values.byName(dto.reason!),
submissionId: dto.id,
simulated: dto.simulated,
);
}
class LimitsDTO {
const LimitsDTO({
required this.tier,
required this.rows,
required this.simulated,
});
final String tier;
final List<LimitDTO> rows;
final bool simulated;
}
class LimitDTO {
const LimitDTO(
this.period,
this.currency,
this.basic,
this.verified,
this.current,
this.remaining,
this.used,
this.reserved,
);
final String period;
final String currency;
final int basic, verified, current, remaining, used, reserved;
}
class LimitsMapper {
static Limits fromDTO(LimitsDTO dto) => Limits(
tier: AccountTier.values.byName(dto.tier),
simulated: dto.simulated,
rows: dto.rows
.map(
(r) => VisibleLimit(
period: LimitPeriod.values.byName(r.period),
currency: r.currency,
basicMinor: r.basic,
verifiedMinor: r.verified,
currentMinor: r.current,
remainingMinor: r.remaining,
usedMinor: r.used,
reservedMinor: r.reserved,
),
)
.toList(),
);
}