# Shared

## Domain Types

### Transaction

- `class Transaction:`

  - `String id`

  - `String accountId`

  - `String amount`

  - `String balanceAfter`

  - `LocalDateTime createdAt`

  - `String currency`

  - `Status status`

    - `PENDING("pending")`

    - `COMPLETED("completed")`

    - `FAILED("failed")`

    - `CANCELLED("cancelled")`

  - `TransactionType transactionType`

    - `DEPOSIT("deposit")`

    - `WITHDRAWAL("withdrawal")`

    - `TRANSFER("transfer")`

    - `RECURRING_PAYMENT("recurring_payment")`

    - `SAVINGS_WITHDRAW("savings_withdraw")`

  - `LocalDateTime updatedAt`

  - `Optional<String> description`

  - `Optional<String> externalRecipientId`

  - `Optional<String> recipientAccountId`

  - `Optional<String> referenceId`
