syntax = "proto3"; import "google/api/annotations.proto"; package looprpc; service SwapServer { rpc LoopOutTerms (ServerLoopOutTermsRequest) returns (ServerLoopOutTerms); rpc NewLoopOutSwap (ServerLoopOutRequest) returns (ServerLoopOutResponse); rpc LoopOutQuote (ServerLoopOutQuoteRequest) returns (ServerLoopOutQuote); rpc LoopInTerms (ServerLoopInTermsRequest) returns (ServerLoopInTerms); rpc NewLoopInSwap (ServerLoopInRequest) returns (ServerLoopInResponse); rpc LoopInQuote (ServerLoopInQuoteRequest) returns (ServerLoopInQuoteResponse); } /** This enum defines the protocol versions that clients may adhere to. Note that this is not a flagged enum. If a particular protocol version adds a feature, then in general all the preceding features are also supported. Exception to this is when features get deprecated. */ enum ProtocolVersion { /// No protocol version reported at all. LEGACY = 0; /// Client may attempt to send the loop out payment in multiple parts. MULTI_LOOP_OUT = 1; /** Loop will use native segwit (P2WSH) htlcs by default, while externally published htlcs may use native (P2WSH) or nested (NP2WSH) segwit as well. */ NATIVE_SEGWIT_LOOP_IN = 2; } message ServerLoopOutRequest { bytes receiver_key = 1; bytes swap_hash = 2; uint64 amt = 3; /// The unix time in seconds we want the on-chain swap to be published by. int64 swap_publication_deadline = 4; /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 5; } message ServerLoopOutResponse { string swap_invoice = 1; string prepay_invoice = 2; bytes sender_key = 3; int32 expiry = 4; } message ServerLoopOutQuoteRequest { /// The swap amount. If zero, a quote for a maximum amt swap will be given. uint64 amt = 1; /// The unix time in seconds we want the on-chain swap to be published by. int64 swap_publication_deadline = 2; /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 3; } message ServerLoopOutQuote { string swap_payment_dest = 1; /// The total estimated swap fee given the quote amt. int64 swap_fee = 2; /// Deprecated, total swap fee given quote amt is calculated in swap_fee. int64 swap_fee_rate = 3 [deprecated = true]; uint64 prepay_amt = 4; uint64 min_swap_amount = 5 [deprecated = true]; uint64 max_swap_amount = 6 [deprecated = true]; int32 cltv_delta = 7; } message ServerLoopOutTermsRequest { /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 1; } message ServerLoopOutTerms { uint64 min_swap_amount = 1; uint64 max_swap_amount = 2; } message ServerLoopInRequest { bytes sender_key = 1; bytes swap_hash = 2; uint64 amt = 3; string swap_invoice = 4; bytes last_hop = 5; /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 6; } message ServerLoopInResponse { bytes receiver_key = 1; int32 expiry = 2; } message ServerLoopInQuoteRequest { /// The swap amount. If zero, a quote for a maximum amt swap will be given. uint64 amt = 1; /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 2; } message ServerLoopInQuoteResponse { int64 swap_fee = 1; int64 swap_fee_rate = 2 [deprecated = true]; uint64 min_swap_amount = 4 [deprecated = true]; uint64 max_swap_amount = 5 [deprecated = true]; int32 cltv_delta = 6; } message ServerLoopInTermsRequest { /// The protocol version that the client adheres to. ProtocolVersion protocol_version = 1; } message ServerLoopInTerms { uint64 min_swap_amount = 1; uint64 max_swap_amount = 2; }