diff options
Diffstat (limited to 'packages/aml-backoffice-ui/src/utils/types.ts')
-rw-r--r-- | packages/aml-backoffice-ui/src/utils/types.ts | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/packages/aml-backoffice-ui/src/utils/types.ts b/packages/aml-backoffice-ui/src/utils/types.ts new file mode 100644 index 000000000..fd70d4e4d --- /dev/null +++ b/packages/aml-backoffice-ui/src/utils/types.ts @@ -0,0 +1,124 @@ +export namespace AmlExchangeBackend { + // FIXME: placeholder + export interface AmlError { + code: number; + hint: string; + } + export interface AmlDecisionDetails { + // Array of AML decisions made for this account. Possibly + // contains only the most recent decision if "history" was + // not set to 'true'. + aml_history: AmlDecisionDetail[]; + + // Array of KYC attributes obtained for this account. + kyc_attributes: KycDetail[]; + } + + type AmlOfficerPublicKeyP = string; + + export interface AmlDecisionDetail { + // What was the justification given? + justification: string; + + // What is the new AML state. + new_state: Integer; + + // When was this decision made? + decision_time: Timestamp; + + // What is the new AML decision threshold (in monthly transaction volume)? + new_threshold: Amount; + + // Who made the decision? + decider_pub: AmlOfficerPublicKeyP; + } + export interface KycDetail { + // Name of the configuration section that specifies the provider + // which was used to collect the KYC details + provider_section: string; + + // The collected KYC data. NULL if the attribute data could not + // be decrypted (internal error of the exchange, likely the + // attribute key was changed). + attributes?: Object; + + // Time when the KYC data was collected + collection_time: Timestamp; + + // Time when the validity of the KYC data will expire + expiration_time: Timestamp; + } + + interface Timestamp { + // Seconds since epoch, or the special + // value "never" to represent an event that will + // never happen. + t_s: number | "never"; + } + + type PaytoHash = string; + type Integer = number; + type Amount = string; + // EdDSA signatures are transmitted as 64-bytes base32 + // binary-encoded objects with just the R and S values (base32_ binary-only). + type EddsaSignature = string; + + export interface AmlRecords { + // Array of AML records matching the query. + records: AmlRecord[]; + } + + interface AmlRecord { + // Which payto-address is this record about. + // Identifies a GNU Taler wallet or an affected bank account. + h_payto: PaytoHash; + + // What is the current AML state. + current_state: AmlState; + + // Monthly transaction threshold before a review will be triggered + threshold: Amount; + + // RowID of the record. + rowid: Integer; + } + + export enum AmlState { + normal = 0, + pending = 1, + frozen = 2, + } + + + export interface AmlDecision { + + // Human-readable justification for the decision. + justification: string; + + // At what monthly transaction volume should the + // decision be automatically reviewed? + new_threshold: Amount; + + // Which payto-address is the decision about? + // Identifies a GNU Taler wallet or an affected bank account. + h_payto: PaytoHash; + + // What is the new AML state (e.g. frozen, unfrozen, etc.) + // Numerical values are defined in AmlDecisionState. + new_state: Integer; + + // Signature by the AML officer over a + // TALER_MasterAmlOfficerStatusPS. + // Must have purpose TALER_SIGNATURE_MASTER_AML_KEY. + officer_sig: EddsaSignature; + + // When was the decision made? + decision_time: Timestamp; + + // Optional argument to impose new KYC requirements + // that the customer has to satisfy to unblock transactions. + kyc_requirements?: string[]; + } + + +} |