refactored notificatoin / tgsettle responsibility boundaries

This commit is contained in:
Stephan D
2026-02-19 18:56:59 +01:00
parent 47f0a3d890
commit 2fd8a6ebb7
73 changed files with 3705 additions and 681 deletions

View File

@@ -9,7 +9,7 @@ import "api/proto/common/money/v1/money.proto";
import "api/proto/common/fx/v1/fx.proto";
import "api/proto/common/trace/v1/trace.proto";
// RateSnapshot holds a point-in-time rate observation from a provider.
message RateSnapshot {
common.fx.v1.CurrencyPair pair = 1;
common.money.v1.Decimal mid = 2;
@@ -21,6 +21,7 @@ message RateSnapshot {
common.money.v1.Decimal spread_bps = 8;
}
// RequestMeta carries caller identity and tracing context for oracle requests.
message RequestMeta {
reserved 1, 4, 5;
reserved "request_ref", "idempotency_key", "trace_ref";
@@ -30,6 +31,7 @@ message RequestMeta {
common.trace.v1.TraceContext trace = 6;
}
// ResponseMeta carries tracing context for oracle responses.
message ResponseMeta {
reserved 1, 2;
reserved "request_ref", "trace_ref";
@@ -37,6 +39,7 @@ message ResponseMeta {
common.trace.v1.TraceContext trace = 3;
}
// Quote represents a priced FX quote with an expiry window.
message Quote {
string quote_ref = 1;
common.fx.v1.CurrencyPair pair = 2;
@@ -51,6 +54,7 @@ message Quote {
google.protobuf.Timestamp priced_at = 11;
}
// GetQuoteRequest is the request to obtain an FX quote.
message GetQuoteRequest {
RequestMeta meta = 1;
common.fx.v1.CurrencyPair pair = 2;
@@ -65,16 +69,19 @@ message GetQuoteRequest {
int32 max_age_ms = 9;
}
// GetQuoteResponse is the response for GetQuote.
message GetQuoteResponse {
ResponseMeta meta = 1;
Quote quote = 2;
}
// ValidateQuoteRequest is the request to check whether a quote is still valid.
message ValidateQuoteRequest {
RequestMeta meta = 1;
string quote_ref = 2;
}
// ValidateQuoteResponse is the response for ValidateQuote.
message ValidateQuoteResponse {
ResponseMeta meta = 1;
Quote quote = 2;
@@ -82,48 +89,61 @@ message ValidateQuoteResponse {
string reason = 4;
}
// ConsumeQuoteRequest marks a quote as used, linking it to a ledger transaction.
message ConsumeQuoteRequest {
RequestMeta meta = 1;
string quote_ref = 2;
string ledger_txn_ref = 3;
}
// ConsumeQuoteResponse is the response for ConsumeQuote.
message ConsumeQuoteResponse {
ResponseMeta meta = 1;
bool consumed = 2;
string reason = 3;
}
// LatestRateRequest is the request to fetch the most recent rate for a pair.
message LatestRateRequest {
RequestMeta meta = 1;
common.fx.v1.CurrencyPair pair = 2;
string provider = 3;
}
// LatestRateResponse is the response for LatestRate.
message LatestRateResponse {
ResponseMeta meta = 1;
RateSnapshot rate = 2;
}
// ListPairsRequest is the request to list all supported currency pairs.
message ListPairsRequest {
RequestMeta meta = 1;
}
// PairMeta holds metadata for a supported currency pair.
message PairMeta {
common.fx.v1.CurrencyPair pair = 1;
common.money.v1.CurrencyMeta base_meta = 2;
common.money.v1.CurrencyMeta quote_meta = 3;
}
// ListPairsResponse is the response for ListPairs.
message ListPairsResponse {
ResponseMeta meta = 1;
repeated PairMeta pairs = 2;
}
// Oracle provides FX rate quoting, validation, and consumption.
service Oracle {
// GetQuote returns a priced FX quote for a currency pair.
rpc GetQuote(GetQuoteRequest) returns (GetQuoteResponse);
// ValidateQuote checks whether an existing quote is still valid.
rpc ValidateQuote(ValidateQuoteRequest) returns (ValidateQuoteResponse);
// ConsumeQuote marks a quote as consumed and links it to a ledger transaction.
rpc ConsumeQuote(ConsumeQuoteRequest) returns (ConsumeQuoteResponse);
// LatestRate returns the most recent rate snapshot for a currency pair.
rpc LatestRate(LatestRateRequest) returns (LatestRateResponse);
// ListPairs returns all supported currency pairs.
rpc ListPairs(ListPairsRequest) returns (ListPairsResponse);
}