# inverse-mtb/inverse-contracts architecture

> Architecture diagram of the GitHub repository inverse-mtb/inverse-contracts, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/inverse-mtb/inverse-contracts
- Repository: https://github.com/inverse-mtb/inverse-contracts

## Overview

inverse-contracts is a Java contract library: it defines DTOs and enums for an inverse-investment product’s bonds, client activity and documents, purchases, payments, refunds, news, and file data. The available evidence shows data shapes and a few local mappings, not service endpoints or an executable user-to-result workflow, so the graph represents contract domains rather than runtime orchestration. Enum dependency edges are included only where the SOURCE INDEX or excerpts show them; other connections and behavior are not inferred.

Main entry points: [`src/main/java/ua/mtb/inverse/contracts/enums`](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/enums) (Domain enums), [`src/main/java/ua/mtb/inverse/contracts/client`](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/client) (Client DTOs), [`src/main/java/ua/mtb/inverse/contracts/bonds`](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/bonds) (Bond DTOs), [`src/main/java/ua/mtb/inverse/contracts/purchase`](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/purchase) (Purchase DTOs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bond["Bond contracts"]
  node_bond_dtos["Bond DTOs"]
end

subgraph group_client["Client contracts"]
  node_client_dtos["Client DTOs"]
end

subgraph group_purchase["Purchase contracts"]
  node_purchase_dtos["Purchase DTOs"]
end

subgraph group_operations["Operations contracts"]
  node_payment_dtos["Payment DTOs"]
  node_refund_dtos["Refund DTOs"]
end

subgraph group_shared["Shared contracts"]
  node_news_dto["News feed DTO<br/>[NewsFeedDto.java]"]
  node_file_dtos["File data DTOs"]
  node_enums["Domain enums"]
end

node_bond_dtos -->|"uses currency and yield"| node_enums
node_bond_dtos -->|"uses audit and transaction types"| node_enums
node_client_dtos -->|"uses client and audit types"| node_enums
node_client_dtos -->|"uses document category"| node_enums
node_client_dtos -->|"uses session and operation types"| node_enums
node_purchase_dtos -->|"uses status and document types"| node_enums
node_purchase_dtos -->|"uses export and operation types"| node_enums
node_payment_dtos -->|"uses operation and session types"| node_enums
node_refund_dtos -->|"uses refund status"| node_enums
node_news_dto -->|"uses action and news types"| node_enums
node_file_dtos -->|"uses document category"| node_enums

click node_bond_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/bonds"
click node_client_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/client"
click node_purchase_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/purchase"
click node_payment_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/payment"
click node_refund_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/refund"
click node_news_dto "https://github.com/inverse-mtb/inverse-contracts/blob/main/src/main/java/ua/mtb/inverse/contracts/news/NewsFeedDto.java"
click node_file_dtos "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/filedata"
click node_enums "https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/enums"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bond_dtos toneBlue
class node_client_dtos toneAmber
class node_purchase_dtos toneMint
class node_payment_dtos,node_refund_dtos toneRose
class node_news_dto,node_file_dtos,node_enums toneIndigo
```

## Components

### Bond contracts

- [Bond DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/bonds): `src/main/java/ua/mtb/inverse/contracts/bonds`

### Client contracts

- [Client DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/client): `src/main/java/ua/mtb/inverse/contracts/client`

### Purchase contracts

- [Purchase DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/purchase): `src/main/java/ua/mtb/inverse/contracts/purchase`

### Operations contracts

- [Payment DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/payment): `src/main/java/ua/mtb/inverse/contracts/payment`
- [Refund DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/refund): `src/main/java/ua/mtb/inverse/contracts/refund`

### Shared contracts

- [News feed DTO](https://github.com/inverse-mtb/inverse-contracts/blob/main/src/main/java/ua/mtb/inverse/contracts/news/NewsFeedDto.java): `src/main/java/ua/mtb/inverse/contracts/news/NewsFeedDto.java`
- [File data DTOs](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/filedata): `src/main/java/ua/mtb/inverse/contracts/filedata`
- [Domain enums](https://github.com/inverse-mtb/inverse-contracts/tree/main/src/main/java/ua/mtb/inverse/contracts/enums): `src/main/java/ua/mtb/inverse/contracts/enums`

## Connections

- Bond DTOs → Domain enums: uses currency and yield (evidence: `src/main/java/ua/mtb/inverse/contracts/bonds/BondDto.java`)
- Bond DTOs → Domain enums: uses audit and transaction types (evidence: `src/main/java/ua/mtb/inverse/contracts/bonds/BondLimitAuditDto.java`)
- Client DTOs → Domain enums: uses client and audit types (evidence: `src/main/java/ua/mtb/inverse/contracts/client/UserActivityDto.java`)
- Client DTOs → Domain enums: uses document category (evidence: `src/main/java/ua/mtb/inverse/contracts/client/ClientDocumentDto.java`)
- Client DTOs → Domain enums: uses session and operation types (evidence: `src/main/java/ua/mtb/inverse/contracts/client/TradingSessionDto.java`)
- Purchase DTOs → Domain enums: uses status and document types (evidence: `src/main/java/ua/mtb/inverse/contracts/purchase/PurchaseHistoryDto.java`)
- Purchase DTOs → Domain enums: uses export and operation types (evidence: `src/main/java/ua/mtb/inverse/contracts/purchase/SummaryReportPurchaseFilterDto.java`)
- Payment DTOs → Domain enums: uses operation and session types (evidence: `src/main/java/ua/mtb/inverse/contracts/payment/OrderFilterDto.java`)
- Refund DTOs → Domain enums: uses refund status (evidence: `src/main/java/ua/mtb/inverse/contracts/refund/RefundDto.java`)
- News feed DTO → Domain enums: uses action and news types (evidence: `src/main/java/ua/mtb/inverse/contracts/news/NewsFeedDto.java`)
- File data DTOs → Domain enums: uses document category (evidence: `src/main/java/ua/mtb/inverse/contracts/filedata/TemporaryFileDataDto.java`)
