diff --git a/README.md b/README.md index 32e73e439..757794a34 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ versioning](#daemon-versions-packaged-with-lit). | LiT | LND | |-------------------|--------------| +| **v0.12.2-alpha** | v0.16.0-beta | | **v0.12.1-alpha** | v0.16.0-beta | | **v0.12.0-alpha** | v0.16.0-beta | | **v0.11.0-alpha** | v0.16.0-beta | @@ -149,6 +150,7 @@ The following table shows the supported combinations: | LiT | LND | Loop | Faraday | Pool | Taproot Assets | |-------------------|--------------|--------------|---------------|--------------|----------------| +| **v0.12.2-alpha** | v0.17.3-beta | v0.26.6-beta | v0.2.11-alpha | v0.6.4-beta | v0.3.2-alpha | | **v0.12.1-alpha** | v0.17.1-beta | v0.26.5-beta | v0.2.11-alpha | v0.6.4-beta | v0.3.1-alpha | | **v0.12.0-alpha** | v0.17.0-beta | v0.26.4-beta | v0.2.11-alpha | v0.6.4-beta | v0.3.0-alpha | | **v0.11.0-alpha** | v0.17.0-beta | v0.26.3-beta | v0.2.11-alpha | v0.6.4-beta | v0.2.3-alpha | diff --git a/app/src/types/generated/loop_pb.d.ts b/app/src/types/generated/loop_pb.d.ts index b8e009795..313b7c64d 100644 --- a/app/src/types/generated/loop_pb.d.ts +++ b/app/src/types/generated/loop_pb.d.ts @@ -1086,6 +1086,48 @@ export namespace SuggestSwapsResponse { } } +export class AbandonSwapRequest extends jspb.Message { + getId(): Uint8Array | string; + getId_asU8(): Uint8Array; + getId_asB64(): string; + setId(value: Uint8Array | string): void; + + getIKnowWhatIAmDoing(): boolean; + setIKnowWhatIAmDoing(value: boolean): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): AbandonSwapRequest.AsObject; + static toObject(includeInstance: boolean, msg: AbandonSwapRequest): AbandonSwapRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: AbandonSwapRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): AbandonSwapRequest; + static deserializeBinaryFromReader(message: AbandonSwapRequest, reader: jspb.BinaryReader): AbandonSwapRequest; +} + +export namespace AbandonSwapRequest { + export type AsObject = { + id: Uint8Array | string, + iKnowWhatIAmDoing: boolean, + } +} + +export class AbandonSwapResponse extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): AbandonSwapResponse.AsObject; + static toObject(includeInstance: boolean, msg: AbandonSwapResponse): AbandonSwapResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: AbandonSwapResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): AbandonSwapResponse; + static deserializeBinaryFromReader(message: AbandonSwapResponse, reader: jspb.BinaryReader): AbandonSwapResponse; +} + +export namespace AbandonSwapResponse { + export type AsObject = { + } +} + export interface AddressTypeMap { ADDRESS_TYPE_UNKNOWN: 0; TAPROOT_PUBKEY: 1; @@ -1119,6 +1161,8 @@ export interface FailureReasonMap { FAILURE_REASON_INSUFFICIENT_VALUE: 4; FAILURE_REASON_TEMPORARY: 5; FAILURE_REASON_INCORRECT_AMOUNT: 6; + FAILURE_REASON_ABANDONED: 7; + FAILURE_REASON_INSUFFICIENT_CONFIRMED_BALANCE: 8; } export const FailureReason: FailureReasonMap; diff --git a/app/src/types/generated/loop_pb.js b/app/src/types/generated/loop_pb.js index efc0c7dfd..cfaf01a7d 100644 --- a/app/src/types/generated/loop_pb.js +++ b/app/src/types/generated/loop_pb.js @@ -15,6 +15,8 @@ var goog = jspb; var global = Function('return this')(); var swapserverrpc_common_pb = require('./swapserverrpc/common_pb.js'); +goog.exportSymbol('proto.looprpc.AbandonSwapRequest', null, global); +goog.exportSymbol('proto.looprpc.AbandonSwapResponse', null, global); goog.exportSymbol('proto.looprpc.AddressType', null, global); goog.exportSymbol('proto.looprpc.AutoReason', null, global); goog.exportSymbol('proto.looprpc.Disqualified', null, global); @@ -7848,6 +7850,317 @@ proto.looprpc.SuggestSwapsResponse.prototype.clearDisqualifiedList = function() }; + +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.looprpc.AbandonSwapRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.looprpc.AbandonSwapRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + proto.looprpc.AbandonSwapRequest.displayName = 'proto.looprpc.AbandonSwapRequest'; +} + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.looprpc.AbandonSwapRequest.prototype.toObject = function(opt_includeInstance) { + return proto.looprpc.AbandonSwapRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.looprpc.AbandonSwapRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.looprpc.AbandonSwapRequest.toObject = function(includeInstance, msg) { + var f, obj = { + id: msg.getId_asB64(), + iKnowWhatIAmDoing: jspb.Message.getFieldWithDefault(msg, 2, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.looprpc.AbandonSwapRequest} + */ +proto.looprpc.AbandonSwapRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.looprpc.AbandonSwapRequest; + return proto.looprpc.AbandonSwapRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.looprpc.AbandonSwapRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.looprpc.AbandonSwapRequest} + */ +proto.looprpc.AbandonSwapRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setId(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setIKnowWhatIAmDoing(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.looprpc.AbandonSwapRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.looprpc.AbandonSwapRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.looprpc.AbandonSwapRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.looprpc.AbandonSwapRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId_asU8(); + if (f.length > 0) { + writer.writeBytes( + 1, + f + ); + } + f = message.getIKnowWhatIAmDoing(); + if (f) { + writer.writeBool( + 2, + f + ); + } +}; + + +/** + * optional bytes id = 1; + * @return {!(string|Uint8Array)} + */ +proto.looprpc.AbandonSwapRequest.prototype.getId = function() { + return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * optional bytes id = 1; + * This is a type-conversion wrapper around `getId()` + * @return {string} + */ +proto.looprpc.AbandonSwapRequest.prototype.getId_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getId())); +}; + + +/** + * optional bytes id = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getId()` + * @return {!Uint8Array} + */ +proto.looprpc.AbandonSwapRequest.prototype.getId_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getId())); +}; + + +/** @param {!(string|Uint8Array)} value */ +proto.looprpc.AbandonSwapRequest.prototype.setId = function(value) { + jspb.Message.setProto3BytesField(this, 1, value); +}; + + +/** + * optional bool i_know_what_i_am_doing = 2; + * Note that Boolean fields may be set to 0/1 when serialized from a Java server. + * You should avoid comparisons like {@code val === true/false} in those cases. + * @return {boolean} + */ +proto.looprpc.AbandonSwapRequest.prototype.getIKnowWhatIAmDoing = function() { + return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 2, false)); +}; + + +/** @param {boolean} value */ +proto.looprpc.AbandonSwapRequest.prototype.setIKnowWhatIAmDoing = function(value) { + jspb.Message.setProto3BooleanField(this, 2, value); +}; + + + +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.looprpc.AbandonSwapResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.looprpc.AbandonSwapResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + proto.looprpc.AbandonSwapResponse.displayName = 'proto.looprpc.AbandonSwapResponse'; +} + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.looprpc.AbandonSwapResponse.prototype.toObject = function(opt_includeInstance) { + return proto.looprpc.AbandonSwapResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.looprpc.AbandonSwapResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.looprpc.AbandonSwapResponse.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.looprpc.AbandonSwapResponse} + */ +proto.looprpc.AbandonSwapResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.looprpc.AbandonSwapResponse; + return proto.looprpc.AbandonSwapResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.looprpc.AbandonSwapResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.looprpc.AbandonSwapResponse} + */ +proto.looprpc.AbandonSwapResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.looprpc.AbandonSwapResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.looprpc.AbandonSwapResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.looprpc.AbandonSwapResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.looprpc.AbandonSwapResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + /** * @enum {number} */ @@ -7886,7 +8199,9 @@ proto.looprpc.FailureReason = { FAILURE_REASON_SWEEP_TIMEOUT: 3, FAILURE_REASON_INSUFFICIENT_VALUE: 4, FAILURE_REASON_TEMPORARY: 5, - FAILURE_REASON_INCORRECT_AMOUNT: 6 + FAILURE_REASON_INCORRECT_AMOUNT: 6, + FAILURE_REASON_ABANDONED: 7, + FAILURE_REASON_INSUFFICIENT_CONFIRMED_BALANCE: 8 }; /** diff --git a/app/src/types/generated/loop_pb_service.d.ts b/app/src/types/generated/loop_pb_service.d.ts index 65a21f784..0668e1b92 100644 --- a/app/src/types/generated/loop_pb_service.d.ts +++ b/app/src/types/generated/loop_pb_service.d.ts @@ -49,6 +49,15 @@ type SwapClientSwapInfo = { readonly responseType: typeof loop_pb.SwapStatus; }; +type SwapClientAbandonSwap = { + readonly methodName: string; + readonly service: typeof SwapClient; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof loop_pb.AbandonSwapRequest; + readonly responseType: typeof loop_pb.AbandonSwapResponse; +}; + type SwapClientLoopOutTerms = { readonly methodName: string; readonly service: typeof SwapClient; @@ -146,6 +155,7 @@ export class SwapClient { static readonly Monitor: SwapClientMonitor; static readonly ListSwaps: SwapClientListSwaps; static readonly SwapInfo: SwapClientSwapInfo; + static readonly AbandonSwap: SwapClientAbandonSwap; static readonly LoopOutTerms: SwapClientLoopOutTerms; static readonly LoopOutQuote: SwapClientLoopOutQuote; static readonly GetLoopInTerms: SwapClientGetLoopInTerms; @@ -227,6 +237,15 @@ export class SwapClientClient { requestMessage: loop_pb.SwapInfoRequest, callback: (error: ServiceError|null, responseMessage: loop_pb.SwapStatus|null) => void ): UnaryResponse; + abandonSwap( + requestMessage: loop_pb.AbandonSwapRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: loop_pb.AbandonSwapResponse|null) => void + ): UnaryResponse; + abandonSwap( + requestMessage: loop_pb.AbandonSwapRequest, + callback: (error: ServiceError|null, responseMessage: loop_pb.AbandonSwapResponse|null) => void + ): UnaryResponse; loopOutTerms( requestMessage: loop_pb.TermsRequest, metadata: grpc.Metadata, diff --git a/app/src/types/generated/loop_pb_service.js b/app/src/types/generated/loop_pb_service.js index 6e72b8b61..af20a7786 100644 --- a/app/src/types/generated/loop_pb_service.js +++ b/app/src/types/generated/loop_pb_service.js @@ -55,6 +55,15 @@ SwapClient.SwapInfo = { responseType: loop_pb.SwapStatus }; +SwapClient.AbandonSwap = { + methodName: "AbandonSwap", + service: SwapClient, + requestStream: false, + responseStream: false, + requestType: loop_pb.AbandonSwapRequest, + responseType: loop_pb.AbandonSwapResponse +}; + SwapClient.LoopOutTerms = { methodName: "LoopOutTerms", service: SwapClient, @@ -315,6 +324,37 @@ SwapClientClient.prototype.swapInfo = function swapInfo(requestMessage, metadata }; }; +SwapClientClient.prototype.abandonSwap = function abandonSwap(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(SwapClient.AbandonSwap, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + SwapClientClient.prototype.loopOutTerms = function loopOutTerms(requestMessage, metadata, callback) { if (arguments.length === 2) { callback = arguments[1]; diff --git a/go.mod b/go.mod index 9ba88286d..d395e412b 100644 --- a/go.mod +++ b/go.mod @@ -14,13 +14,13 @@ require ( github.com/lightninglabs/faraday v0.2.11-alpha.0.20231003174141-945b7188032f github.com/lightninglabs/lightning-node-connect v0.2.7-alpha github.com/lightninglabs/lightning-terminal/autopilotserverrpc v0.0.1 - github.com/lightninglabs/lndclient v0.17.0-1 - github.com/lightninglabs/loop v0.26.5-beta + github.com/lightninglabs/lndclient v0.17.0-4 + github.com/lightninglabs/loop v0.26.6-beta github.com/lightninglabs/loop/swapserverrpc v1.0.5 github.com/lightninglabs/pool v0.6.4-beta.0.20231003174306-80d8854a0c4b github.com/lightninglabs/pool/auctioneerrpc v1.1.1 - github.com/lightninglabs/taproot-assets v0.3.1 - github.com/lightningnetwork/lnd v0.17.1-beta + github.com/lightninglabs/taproot-assets v0.3.2 + github.com/lightningnetwork/lnd v0.17.3-beta github.com/lightningnetwork/lnd/cert v1.2.2 github.com/lightningnetwork/lnd/kvdb v1.4.4 github.com/lightningnetwork/lnd/tlv v1.1.1 @@ -51,7 +51,7 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd/btcutil/psbt v1.1.8 // indirect - github.com/btcsuite/btcwallet v0.16.10-0.20231017144732-e3ff37491e9c // indirect + github.com/btcsuite/btcwallet v0.16.10-0.20231129183218-5df09dd43358 // indirect github.com/btcsuite/btcwallet/wallet/txauthor v1.3.2 // indirect github.com/btcsuite/btcwallet/wallet/txrules v1.2.0 // indirect github.com/btcsuite/btcwallet/wallet/txsizes v1.2.3 // indirect diff --git a/go.sum b/go.sum index 80f099a9b..4262927d6 100644 --- a/go.sum +++ b/go.sum @@ -453,8 +453,8 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtyd github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcwallet v0.16.10-0.20231017144732-e3ff37491e9c h1:+7tbYEUj0TYYIvuvE9YP+x5dU3FT/8J6Qh8d5YvQwrE= -github.com/btcsuite/btcwallet v0.16.10-0.20231017144732-e3ff37491e9c/go.mod h1:WSKhOJWUmUOHKCKEzdt+jWAHFAE/t4RqVbCwL2pEdiU= +github.com/btcsuite/btcwallet v0.16.10-0.20231129183218-5df09dd43358 h1:lZUSo6TISHUJQxpn/AniW5gqaN1iRNS87SDWvV3AHfg= +github.com/btcsuite/btcwallet v0.16.10-0.20231129183218-5df09dd43358/go.mod h1:WSKhOJWUmUOHKCKEzdt+jWAHFAE/t4RqVbCwL2pEdiU= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.2 h1:etuLgGEojecsDOYTII8rYiGHjGyV5xTqsXi+ZQ715UU= github.com/btcsuite/btcwallet/wallet/txauthor v1.3.2/go.mod h1:Zpk/LOb2sKqwP2lmHjaZT9AdaKsHPSbNLm2Uql5IQ/0= github.com/btcsuite/btcwallet/wallet/txrules v1.2.0 h1:BtEN5Empw62/RVnZ0VcJaVtVlBijnLlJY+dwjAye2Bg= @@ -937,10 +937,10 @@ github.com/lightninglabs/lightning-node-connect v0.2.7-alpha h1:FmoeF7S5A6qcntQI github.com/lightninglabs/lightning-node-connect v0.2.7-alpha/go.mod h1:A9Pof9fETkH+F67BnOmrBDThPKstqp73wlImWOZvTXQ= github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2 h1:Er1miPZD2XZwcfE4xoS5AILqP1mj7kqnhbBSxW9BDxY= github.com/lightninglabs/lightning-node-connect/hashmailrpc v1.0.2/go.mod h1:antQGRDRJiuyQF6l+k6NECCSImgCpwaZapATth2Chv4= -github.com/lightninglabs/lndclient v0.17.0-1 h1:r/25L1P86Wjdj0UmqfMNF3Ph+SJOTeGKlOIjkX3iWiw= -github.com/lightninglabs/lndclient v0.17.0-1/go.mod h1:J2RD7ZcIVreQKy6NTOGJMM7AeGvsMLHO+Aoegkzpijs= -github.com/lightninglabs/loop v0.26.5-beta h1:8Czh5wR875m7/Nw4b0e77bEHxHw7Swx2wT83RojZkgM= -github.com/lightninglabs/loop v0.26.5-beta/go.mod h1:KF1w8ym8iMjGHjaI2880+nraj0b02JDpm50E7IJBchg= +github.com/lightninglabs/lndclient v0.17.0-4 h1:2nU7kMYctGmx6NCpbWAwRt3mmlsSzb6HI41WODReYzA= +github.com/lightninglabs/lndclient v0.17.0-4/go.mod h1:oVQUAYEeuYUaoxCWjUBaa/uF0kiqEJJjEaiMhEXHH7Y= +github.com/lightninglabs/loop v0.26.6-beta h1:WQ/l1PdDMogBTxwxhqRrf2FJH4BRT2/GJYeZGq8j2AM= +github.com/lightninglabs/loop v0.26.6-beta/go.mod h1:Ro1ieyTu9lgaRkh7mgLuE8WIXNj+Sh3HprJsbNjFRSg= github.com/lightninglabs/loop/swapserverrpc v1.0.5 h1:wxgAnxO8d20+t8AppNfdoZZY69++9dvx9mkuWST4nxE= github.com/lightninglabs/loop/swapserverrpc v1.0.5/go.mod h1:vrUYQjRLzV7fZZkM8I1AlmwTdPjCtKPCzeBeKemMGa4= github.com/lightninglabs/neutrino v0.16.0 h1:YNTQG32fPR/Zg0vvJVI65OBH8l3U18LSXXtX91hx0q0= @@ -953,12 +953,12 @@ github.com/lightninglabs/pool/auctioneerrpc v1.1.1 h1:A0ekNG8TjqtGdTOlJXN8xMUmbr github.com/lightninglabs/pool/auctioneerrpc v1.1.1/go.mod h1:vRry7V7zF2QmaJ1J3jn3U9aOIf8SPJwa1TQfT/jLSAU= github.com/lightninglabs/protobuf-go-hex-display v1.30.0-hex-display h1:pRdza2wleRN1L2fJXd6ZoQ9ZegVFTAb2bOQfruJPKcY= github.com/lightninglabs/protobuf-go-hex-display v1.30.0-hex-display/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -github.com/lightninglabs/taproot-assets v0.3.1 h1:0NMF2Kz7Hp8J5yUBKH91x9/2IyV6S5gL/Zwni0kyALE= -github.com/lightninglabs/taproot-assets v0.3.1/go.mod h1:0GZf890SnS61RyLNkmAnnDfVTq/5ASW3QgexFIXrjfc= +github.com/lightninglabs/taproot-assets v0.3.2 h1:98edA51OCqjSN+t59nMA77YtgD8rfBejJUh1hlDTXXU= +github.com/lightninglabs/taproot-assets v0.3.2/go.mod h1:obkMZ4yBOZ1WzlQIa7yqDpcQ58BJhjul7e54po3sloQ= github.com/lightningnetwork/lightning-onion v1.2.1-0.20230823005744-06182b1d7d2f h1:Pua7+5TcFEJXIIZ1I2YAUapmbcttmLj4TTi786bIi3s= github.com/lightningnetwork/lightning-onion v1.2.1-0.20230823005744-06182b1d7d2f/go.mod h1:c0kvRShutpj3l6B9WtTsNTBUtjSmjZXbJd9ZBRQOSKI= -github.com/lightningnetwork/lnd v0.17.1-beta h1:ya5pXahwrEJ9Sj9TQu0rIsOr1dMK8myuFMslZlmVmhA= -github.com/lightningnetwork/lnd v0.17.1-beta/go.mod h1:wgnCM0tlwxUDZ9y7CeBkXtBJkaY45+R8A3XAgsFS0MA= +github.com/lightningnetwork/lnd v0.17.3-beta h1:RB0bHq55SV1K5/tQxVCvkR+cwfIt38va5922qXTZ8KA= +github.com/lightningnetwork/lnd v0.17.3-beta/go.mod h1:zKLs8Rb+jhXML7R9juPPNm6rjnINJ7Ry3haoM6jQeWo= github.com/lightningnetwork/lnd/cert v1.2.2 h1:71YK6hogeJtxSxw2teq3eGeuy4rHGKcFf0d0Uy4qBjI= github.com/lightningnetwork/lnd/cert v1.2.2/go.mod h1:jQmFn/Ez4zhDgq2hnYSw8r35bqGVxViXhX6Cd7HXM6U= github.com/lightningnetwork/lnd/clock v1.0.1/go.mod h1:KnQudQ6w0IAMZi1SgvecLZQZ43ra2vpDNj7H/aasemg= diff --git a/proto/loop.proto b/proto/loop.proto index 49be6c087..164ee8561 100644 --- a/proto/loop.proto +++ b/proto/loop.proto @@ -43,6 +43,11 @@ service SwapClient { */ rpc SwapInfo (SwapInfoRequest) returns (SwapStatus); + /* loop: `abandonswap` + AbandonSwap allows the client to abandon a swap. + */ + rpc AbandonSwap (AbandonSwapRequest) returns (AbandonSwapResponse); + /* loop: `terms` LoopOutTerms returns the terms that the server enforces for a loop out swap. */ @@ -524,6 +529,18 @@ enum FailureReason { because the amount extended by an external loop in htlc is insufficient. */ FAILURE_REASON_INCORRECT_AMOUNT = 6; + + /* + FAILURE_REASON_ABANDONED indicates that a swap permanently failed because + the client manually abandoned the swap. + */ + FAILURE_REASON_ABANDONED = 7; + + /* + FAILURE_REASON_INSUFFICIENT_CONFIRMED_BALANCE indicates that a swap + wasn't published due to insufficient confirmed balance. + */ + FAILURE_REASON_INSUFFICIENT_CONFIRMED_BALANCE = 8; } message ListSwapsRequest { @@ -1180,3 +1197,21 @@ message SuggestSwapsResponse { */ repeated Disqualified disqualified = 2; } + +message AbandonSwapRequest { + /* + The swap identifier which currently is the hash that locks the HTLCs. When + using REST, this field must be encoded as URL safe base64. + */ + bytes id = 1; + + /* + A flag that tries to ensure that the client understands that they are + risking loss of funds by abandoning a swap. This could happen if an + abandoned swap would wait on a timeout sweep by the client. + */ + bool i_know_what_i_am_doing = 2; +} + +message AbandonSwapResponse { +} \ No newline at end of file diff --git a/version.go b/version.go index c79179371..f95cf3513 100644 --- a/version.go +++ b/version.go @@ -23,7 +23,7 @@ const semanticAlphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr const ( appMajor uint = 0 appMinor uint = 12 - appPatch uint = 1 + appPatch uint = 2 // appPreRelease MUST only contain characters from semanticAlphabet per // the semantic versioning spec.