syntax = "proto3";

package aml.v1;

service AmlService {
  rpc ScreenDeposit(ScreenDepositRequest) returns (ScreenResponse);
  rpc ScreenWithdrawal(ScreenWithdrawalRequest) returns (ScreenResponse);
  rpc Health(HealthRequest) returns (HealthResponse);
}

enum AmlDecision {
  ALLOW = 0;
  REVIEW = 1;
  BLOCK = 2;
}

message ScreenDepositRequest {
  string network = 1;
  string asset = 2;
  string tx_hash = 3;
  string from_address = 4;
  string to_address = 5;
  string amount = 6;
  int64 confirmed_at_unix = 7;
  string idempotency_key = 8;
}

message ScreenWithdrawalRequest {
  string network = 1;
  string asset = 2;
  string to_address = 3;
  string amount = 4;
  string idempotency_key = 5;
}

message ScreenResponse {
  AmlDecision decision = 1;
  int32 score = 2;
  string reason = 3;
  string provider = 4;
  string provider_ref = 5;
  string raw_status = 6;
  bool is_final = 7;
}

message HealthRequest {}

message HealthResponse {
  bool ok = 1;
  string version = 2;
}
