package model import ( "encoding/json" "time" ) // GetQuoteResponse contains the schema for a GET /quote response. type GetQuoteResponse struct { // OriginChainID is the chain which the relayer is willing to relay from OriginChainID int `json:"origin_chain_id"` // OriginTokenAddr is the token address for which the relayer willing to relay from OriginTokenAddr string `json:"origin_token_addr"` // DestChainID is the chain which the relayer is willing to relay to DestChainID int `json:"dest_chain_id"` // DestToken is the token address for which the relayer willing to relay to DestTokenAddr string `json:"dest_token_addr"` // DestAmount is the max amount of liquidity which exists for a given destination token, provided in the destination token decimals DestAmount string `json:"dest_amount"` // MaxOriginAmount is the maximum amount of origin tokens bridgeable MaxOriginAmount string `json:"max_origin_amount"` // FixedFee is the fixed fee for the quote, provided in the destination token terms FixedFee string `json:"fixed_fee"` // Address of the relayer providing the quote RelayerAddr string `json:"relayer_addr"` // OriginFastBridgeAddress is the address of the fast bridge contract on the origin chain OriginFastBridgeAddress string `json:"origin_fast_bridge_address"` // DestFastBridgeAddress is the address of the fast bridge contract on the destination chain DestFastBridgeAddress string `json:"dest_fast_bridge_address"` // UpdatedAt is the time that the quote was last upserted UpdatedAt string `json:"updated_at"` } // PutRelayAckResponse contains the schema for a PUT /relay/ack response. type PutRelayAckResponse struct { // TxID is the transaction ID TransactionID string `json:"tx_id"` // ShouldRelay is a boolean indicating whether the transaction should be relayed ShouldRelay bool `json:"should_relay"` // RelayerAddress is the address of the relayer that is currently acked RelayerAddress string `json:"relayer_address"` } // GetContractsResponse contains the schema for a GET /contract response. type GetContractsResponse struct { // Contracts is a map of chain id to contract address Contracts map[uint32]string `json:"contracts"` } // ActiveRFQMessage represents the general structure of WebSocket messages for Active RFQ. type ActiveRFQMessage struct { Op string `json:"op"` Content json.RawMessage `json:"content,omitempty"` Success bool `json:"success,omitempty"` } // PutRFQResponse represents a response to a user quote request. type PutRFQResponse struct { Success bool `json:"success"` Reason string `json:"reason,omitempty"` QuoteType string `json:"quote_type,omitempty"` QuoteID *string `json:"quote_id,omitempty"` DestAmount string `json:"dest_amount,omitempty"` RelayerAddress string `json:"relayer_address,omitempty"` } // WsRFQResponse represents a response to a quote request. type WsRFQResponse struct { RequestID string `json:"request_id"` QuoteID string `json:"quote_id,omitempty"` DestAmount string `json:"dest_amount"` UpdatedAt time.Time `json:"updated_at"` } // SubscriptionParams are the parameters for a subscription. type SubscriptionParams struct { Chains []int `json:"chains"` } // GetOpenQuoteRequestsResponse represents a response to a GET /open_quote_requests request. type GetOpenQuoteRequestsResponse struct { UserAddress string `json:"user_address"` OriginChainID uint64 `json:"origin_chain_id"` OriginTokenAddr string `json:"origin_token"` DestChainID uint64 `json:"dest_chain_id"` DestTokenAddr string `json:"dest_token"` OriginAmountExact string `json:"origin_amount_exact"` ExpirationWindow int `json:"expiration_window"` CreatedAt time.Time `json:"created_at"` }