diff --git a/cmd/loop/testdata/sessions/loopin/01_loop-in-invalid-amount.json b/cmd/loop/testdata/sessions/loopin/01_loop-in-invalid-amount.json new file mode 100644 index 00000000..439732f6 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/01_loop-in-invalid-amount.json @@ -0,0 +1,36 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--network", + "regtest", + "notanumber" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "invalid amt value \"notanumber\"", + "duration": 3964079, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 3, + "kind": "stderr", + "data": { + "lines": [ + "[loop] invalid amt value \"notanumber\"\n" + ] + } + }, + { + "time_ms": 3, + "kind": "exit", + "data": { + "run_error": "invalid amt value \"notanumber\"" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopin/02_loop-in-external-conf-target.json b/cmd/loop/testdata/sessions/loopin/02_loop-in-external-conf-target.json new file mode 100644 index 00000000..67a20d25 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/02_loop-in-external-conf-target.json @@ -0,0 +1,39 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--external", + "--conf_target", + "6", + "--network", + "regtest", + "10000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "external and conf_target both set", + "duration": 13741983, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 13, + "kind": "stderr", + "data": { + "lines": [ + "[loop] external and conf_target both set\n" + ] + } + }, + { + "time_ms": 13, + "kind": "exit", + "data": { + "run_error": "external and conf_target both set" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopin/03_loop-in-route-hints-private.json b/cmd/loop/testdata/sessions/loopin/03_loop-in-route-hints-private.json new file mode 100644 index 00000000..e0aba7e0 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/03_loop-in-route-hints-private.json @@ -0,0 +1,39 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--route_hints", + "{}", + "--private", + "--network", + "regtest", + "10000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "private and route_hints both set", + "duration": 2834558, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 2, + "kind": "stderr", + "data": { + "lines": [ + "[loop] private and route_hints both set\n" + ] + } + }, + { + "time_ms": 2, + "kind": "exit", + "data": { + "run_error": "private and route_hints both set" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopin/04_loop-in-external-cancel.json b/cmd/loop/testdata/sessions/loopin/04_loop-in-external-cancel.json new file mode 100644 index 00000000..33bfdaf8 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/04_loop-in-external-cancel.json @@ -0,0 +1,101 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--network", + "regtest", + "--external", + "--amt", + "50000", + "--last_hop", + "0271d6e29301159d9e1cc5d3983479a51f3b3c0c682eda7f16aa1f47dfe09b22f7" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "swap canceled", + "duration": 539895736, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stdin", + "data": { + "text": "n\n" + } + }, + { + "time_ms": 3, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "50000", + "conf_target": 0, + "external_htlc": true, + "swap_publication_deadline": "0", + "loop_in_last_hop": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 539, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1801", + "htlc_publish_fee_sat": "0", + "cltv_delta": 0, + "conf_target": 0, + "quoted_amt": "50000" + } + } + }, + { + "time_ms": 539, + "kind": "stderr", + "data": { + "lines": [ + "[loop] swap canceled\n" + ] + } + }, + { + "time_ms": 539, + "kind": "stdout", + "data": { + "lines": [ + "On-chain fee for external loop in is not included.\n", + "Sufficient fees will need to be paid when constructing the transaction in the external wallet.\n", + "\n", + "Send on-chain: 50000 sat\n", + "Receive off-chain: 48199 sat\n", + "Loop service fee: 1801 sat\n", + "\n", + "CONTINUE SWAP? (y/n): " + ] + } + }, + { + "time_ms": 539, + "kind": "exit", + "data": { + "run_error": "swap canceled" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopin/05_loop-in-external-verbose-cancel.json b/cmd/loop/testdata/sessions/loopin/05_loop-in-external-verbose-cancel.json new file mode 100644 index 00000000..e387b1bb --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/05_loop-in-external-verbose-cancel.json @@ -0,0 +1,104 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--network", + "regtest", + "--external", + "--verbose", + "--amt", + "50000", + "--last_hop", + "0271d6e29301159d9e1cc5d3983479a51f3b3c0c682eda7f16aa1f47dfe09b22f7" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "swap canceled", + "duration": 164102130, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 0, + "kind": "stdin", + "data": { + "text": "n\n" + } + }, + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "50000", + "conf_target": 0, + "external_htlc": true, + "swap_publication_deadline": "0", + "loop_in_last_hop": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 163, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1801", + "htlc_publish_fee_sat": "0", + "cltv_delta": 0, + "conf_target": 0, + "quoted_amt": "50000" + } + } + }, + { + "time_ms": 163, + "kind": "stdout", + "data": { + "lines": [ + "On-chain fee for external loop in is not included.\n", + "Sufficient fees will need to be paid when constructing the transaction in the external wallet.\n", + "\n", + "Send on-chain: 50000 sat\n", + "Receive off-chain: 48199 sat\n", + "Loop service fee: 1801 sat\n", + "\n", + "CLTV expiry delta: 0 block\n", + "\n", + "CONTINUE SWAP? (y/n): " + ] + } + }, + { + "time_ms": 164, + "kind": "stderr", + "data": { + "lines": [ + "[loop] swap canceled\n" + ] + } + }, + { + "time_ms": 164, + "kind": "exit", + "data": { + "run_error": "swap canceled" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopin/06_loop-in-external-force.json b/cmd/loop/testdata/sessions/loopin/06_loop-in-external-force.json new file mode 100644 index 00000000..ce757782 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopin/06_loop-in-external-force.json @@ -0,0 +1,116 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "in", + "--network", + "regtest", + "--external", + "--amt", + "500000", + "--force" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 1067066878, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 0, + "external_htlc": true, + "swap_publication_deadline": "0", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 561, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1824", + "htlc_publish_fee_sat": "0", + "cltv_delta": 0, + "conf_target": 0, + "quoted_amt": "500000" + } + } + }, + { + "time_ms": 561, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopIn", + "event": "request", + "message_type": "looprpc.LoopInRequest", + "payload": { + "amt": "500000", + "max_swap_fee": "1824", + "max_miner_fee": "0", + "last_hop": "", + "external_htlc": true, + "htlc_conf_target": 0, + "label": "", + "initiator": "loop-cli", + "route_hints": [], + "private": false + } + } + }, + { + "time_ms": 1065, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopIn", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "2f46a232e0f584fadf2abc7e7aaeefab0176f21e0fba5344a10e21838ec390fe", + "id_bytes": "L0aiMuD1hPrfKrx+eq7vqwF28h4PulNEoQ4hg47DkP4=", + "htlc_address": "bcrt1pcred99xc9l2cxphneej4ph6d6mczc0442d6ulyh3a9ad389z2aaq4n775y", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1pcred99xc9l2cxphneej4ph6d6mczc0442d6ulyh3a9ad389z2aaq4n775y", + "server_message": "" + } + } + }, + { + "time_ms": 1066, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: 2f46a232e0f584fadf2abc7e7aaeefab0176f21e0fba5344a10e21838ec390fe\n", + "HTLC address (P2TR): bcrt1pcred99xc9l2cxphneej4ph6d6mczc0442d6ulyh3a9ad389z2aaq4n775y\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 1067, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/01_loop-out.json b/cmd/loop/testdata/sessions/loopout/01_loop-out.json new file mode 100644 index 00000000..93ccddc0 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/01_loop-out.json @@ -0,0 +1,127 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "--force", + "--fast", + "500000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 228730686, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 2, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769407086", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 139, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3875", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3793", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 139, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "request", + "message_type": "looprpc.LoopOutRequest", + "payload": { + "amt": "500000", + "dest": "", + "max_swap_routing_fee": "10010", + "max_prepay_routing_fee": "36", + "max_swap_fee": "3875", + "max_prepay_amt": "1337", + "max_miner_fee": "948250", + "loop_out_channel": "0", + "outgoing_chan_set": [], + "sweep_conf_target": 9, + "htlc_confirmations": 1, + "swap_publication_deadline": "1769407086", + "label": "", + "initiator": "loop-cli", + "account": "", + "account_addr_type": "ADDRESS_TYPE_UNKNOWN", + "is_external_addr": false, + "reservation_ids": [], + "payment_timeout": 0, + "asset_info": null, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 228, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "46b8db64110a6008bd36b423439cbba1e8e76c0264e8a68f442fc22a3c2b4f6b", + "id_bytes": "RrjbZBEKYAi9NrQjQ5y7oejnbAJk6KaPRC/CKjwrT2s=", + "htlc_address": "bcrt1pj90ffd4j9hc2a58xpl3q77c6pf8ckhqhv9w9m2529kqsk77f6lksrca9pv", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1pj90ffd4j9hc2a58xpl3q77c6pf8ckhqhv9w9m2529kqsk77f6lksrca9pv", + "server_message": "" + } + } + }, + { + "time_ms": 228, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: 46b8db64110a6008bd36b423439cbba1e8e76c0264e8a68f442fc22a3c2b4f6b\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 228, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/02_loop-out-invalid-amount.json b/cmd/loop/testdata/sessions/loopout/02_loop-out-invalid-amount.json new file mode 100644 index 00000000..2a66ec43 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/02_loop-out-invalid-amount.json @@ -0,0 +1,36 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "notanumber" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "invalid amt value \"notanumber\"", + "duration": 1215843, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stderr", + "data": { + "lines": [ + "[loop] invalid amt value \"notanumber\"\n" + ] + } + }, + { + "time_ms": 1, + "kind": "exit", + "data": { + "run_error": "invalid amt value \"notanumber\"" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/03_loop-out-addr-account.json b/cmd/loop/testdata/sessions/loopout/03_loop-out-addr-account.json new file mode 100644 index 00000000..645dae2a --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/03_loop-out-addr-account.json @@ -0,0 +1,40 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--addr", + "bcrt1qtest", + "--account", + "testacct", + "--network", + "regtest", + "50000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "cannot set --addr and --account at the same time. Please specify only one source for a new address to sweep the loop amount to", + "duration": 1276860, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stderr", + "data": { + "lines": [ + "[loop] cannot set --addr and --account at the same time. Please specify only one source for a new address to sweep the loop amount to\n" + ] + } + }, + { + "time_ms": 1, + "kind": "exit", + "data": { + "run_error": "cannot set --addr and --account at the same time. Please specify only one source for a new address to sweep the loop amount to" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/04_loop-out-invalid-account-addr-type.json b/cmd/loop/testdata/sessions/loopout/04_loop-out-invalid-account-addr-type.json new file mode 100644 index 00000000..fcf5551b --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/04_loop-out-invalid-account-addr-type.json @@ -0,0 +1,40 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--account", + "testacct", + "--account_addr_type", + "foo", + "--network", + "regtest", + "50000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "run_error": "unknown account address type", + "duration": 1107998, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stderr", + "data": { + "lines": [ + "[loop] unknown account address type\n" + ] + } + }, + { + "time_ms": 1, + "kind": "exit", + "data": { + "run_error": "unknown account address type" + } + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/05_loop-out-amt-channel-maxfee-timeout.json b/cmd/loop/testdata/sessions/loopout/05_loop-out-amt-channel-maxfee-timeout.json new file mode 100644 index 00000000..fa252f68 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/05_loop-out-amt-channel-maxfee-timeout.json @@ -0,0 +1,135 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "--amt", + "500000", + "--channel", + "125344325763072", + "--max_swap_routing_fee", + "1000", + "--payment_timeout", + "30s", + "--force" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 288562226, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 161, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3873", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3791", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 161, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "request", + "message_type": "looprpc.LoopOutRequest", + "payload": { + "amt": "500000", + "dest": "", + "max_swap_routing_fee": "1000", + "max_prepay_routing_fee": "36", + "max_swap_fee": "3873", + "max_prepay_amt": "1337", + "max_miner_fee": "947750", + "loop_out_channel": "0", + "outgoing_chan_set": [ + "125344325763072" + ], + "sweep_conf_target": 9, + "htlc_confirmations": 1, + "swap_publication_deadline": "1769408886", + "label": "", + "initiator": "loop-cli", + "account": "", + "account_addr_type": "ADDRESS_TYPE_UNKNOWN", + "is_external_addr": false, + "reservation_ids": [], + "payment_timeout": 30, + "asset_info": null, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 288, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "a564cdea5bac2fa1e350da6e7096ddd3bc0256c157f9f4b9b71a1262742f4f0d", + "id_bytes": "pWTN6lusL6HjUNpucJbd07wCVsFX+fS5txoSYnQvTw0=", + "htlc_address": "bcrt1pg84j6m04s6ecvlgput74dh4kfppn0lxn7f9h5cyl7vylyu3l55ss2f9xyh", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1pg84j6m04s6ecvlgput74dh4kfppn0lxn7f9h5cyl7vylyu3l55ss2f9xyh", + "server_message": "" + } + } + }, + { + "time_ms": 288, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: a564cdea5bac2fa1e350da6e7096ddd3bc0256c157f9f4b9b71a1262742f4f0d\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 288, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/06_loop-out-addr-flag.json b/cmd/loop/testdata/sessions/loopout/06_loop-out-addr-flag.json new file mode 100644 index 00000000..3228c5a0 --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/06_loop-out-addr-flag.json @@ -0,0 +1,129 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "--amt", + "500000", + "--addr", + "bcrt1pfu9g59aqtxd39653f76y4c8z7r3t9tmcvrvhl57a3dgj3epdwxdqcd9fpw", + "--force" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 299201197, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 230, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3873", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3791", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 230, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "request", + "message_type": "looprpc.LoopOutRequest", + "payload": { + "amt": "500000", + "dest": "bcrt1pfu9g59aqtxd39653f76y4c8z7r3t9tmcvrvhl57a3dgj3epdwxdqcd9fpw", + "max_swap_routing_fee": "10010", + "max_prepay_routing_fee": "36", + "max_swap_fee": "3873", + "max_prepay_amt": "1337", + "max_miner_fee": "947750", + "loop_out_channel": "0", + "outgoing_chan_set": [], + "sweep_conf_target": 9, + "htlc_confirmations": 1, + "swap_publication_deadline": "1769408886", + "label": "", + "initiator": "loop-cli", + "account": "", + "account_addr_type": "ADDRESS_TYPE_UNKNOWN", + "is_external_addr": true, + "reservation_ids": [], + "payment_timeout": 0, + "asset_info": null, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 298, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "67712e10d785636ec4b19c0c3d0f7b7612c1de5ccb2cb81df94e32ff13914fab", + "id_bytes": "Z3EuENeFY27EsZwMPQ97dhLB3lzLLLgd+U4y/xORT6s=", + "htlc_address": "bcrt1p0fn96tdw5ngu9cpww0w8q96tcps6w7jezaf0xnw0wa7e5d5gxv3st47amw", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1p0fn96tdw5ngu9cpww0w8q96tcps6w7jezaf0xnw0wa7e5d5gxv3st47amw", + "server_message": "" + } + } + }, + { + "time_ms": 298, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: 67712e10d785636ec4b19c0c3d0f7b7612c1de5ccb2cb81df94e32ff13914fab\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 299, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/07_loop-out-addr-positional.json b/cmd/loop/testdata/sessions/loopout/07_loop-out-addr-positional.json new file mode 100644 index 00000000..468b650c --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/07_loop-out-addr-positional.json @@ -0,0 +1,128 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "--amt", + "500000", + "--force", + "bcrt1pfu9g59aqtxd39653f76y4c8z7r3t9tmcvrvhl57a3dgj3epdwxdqcd9fpw" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 290631176, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 2, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 205, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3873", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3791", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 205, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "request", + "message_type": "looprpc.LoopOutRequest", + "payload": { + "amt": "500000", + "dest": "", + "max_swap_routing_fee": "10010", + "max_prepay_routing_fee": "36", + "max_swap_fee": "3873", + "max_prepay_amt": "1337", + "max_miner_fee": "947750", + "loop_out_channel": "0", + "outgoing_chan_set": [], + "sweep_conf_target": 9, + "htlc_confirmations": 1, + "swap_publication_deadline": "1769408886", + "label": "", + "initiator": "loop-cli", + "account": "", + "account_addr_type": "ADDRESS_TYPE_UNKNOWN", + "is_external_addr": false, + "reservation_ids": [], + "payment_timeout": 0, + "asset_info": null, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 290, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "aa7d0c558627aaa8af70503cd81d4679400cc9771063cb474c32c625d5f2a8f3", + "id_bytes": "qn0MVYYnqqivcFA82B1GeUAMyXcQY8tHTDLGJdXyqPM=", + "htlc_address": "bcrt1p9jhv4amddjazuyzs8xr2u2fzzqdt2s5tx95ffhd43avxvq7d0xxsykf5r5", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1p9jhv4amddjazuyzs8xr2u2fzzqdt2s5tx95ffhd43avxvq7d0xxsykf5r5", + "server_message": "" + } + } + }, + { + "time_ms": 290, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: aa7d0c558627aaa8af70503cd81d4679400cc9771063cb474c32c625d5f2a8f3\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 290, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/loopout/08_loop-out-account.json b/cmd/loop/testdata/sessions/loopout/08_loop-out-account.json new file mode 100644 index 00000000..36f65cef --- /dev/null +++ b/cmd/loop/testdata/sessions/loopout/08_loop-out-account.json @@ -0,0 +1,131 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "out", + "--network", + "regtest", + "--amt", + "500000", + "--account", + "default", + "--account_addr_type", + "p2tr", + "--force" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 466934696, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 3, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 360, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3873", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3791", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 360, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "request", + "message_type": "looprpc.LoopOutRequest", + "payload": { + "amt": "500000", + "dest": "", + "max_swap_routing_fee": "10010", + "max_prepay_routing_fee": "36", + "max_swap_fee": "3873", + "max_prepay_amt": "1337", + "max_miner_fee": "947750", + "loop_out_channel": "0", + "outgoing_chan_set": [], + "sweep_conf_target": 9, + "htlc_confirmations": 1, + "swap_publication_deadline": "1769408886", + "label": "", + "initiator": "loop-cli", + "account": "default", + "account_addr_type": "TAPROOT_PUBKEY", + "is_external_addr": false, + "reservation_ids": [], + "payment_timeout": 0, + "asset_info": null, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 462, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOut", + "event": "response", + "message_type": "looprpc.SwapResponse", + "payload": { + "id": "04c1ef677f170f50ad3f221f49a779b99a464907bde2e0003a7b1dd6402d1419", + "id_bytes": "BMHvZ38XD1CtPyIfSad5uZpGSQe94uAAOnsd1kAtFBk=", + "htlc_address": "bcrt1p8lvg7l4zkdu0l4pe74h96240ndmp3demreml3zeqy28dvgq7j95q23zqcy", + "htlc_address_p2wsh": "", + "htlc_address_p2tr": "bcrt1p8lvg7l4zkdu0l4pe74h96240ndmp3demreml3zeqy28dvgq7j95q23zqcy", + "server_message": "" + } + } + }, + { + "time_ms": 462, + "kind": "stdout", + "data": { + "lines": [ + "Swap initiated\n", + "ID: 04c1ef677f170f50ad3f221f49a779b99a464907bde2e0003a7b1dd6402d1419\n", + "\n", + "Run `loop monitor` to monitor progress.\n" + ] + } + }, + { + "time_ms": 466, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/01_loop-quote-out.json b/cmd/loop/testdata/sessions/quote/01_loop-quote-out.json new file mode 100644 index 00000000..73d63e47 --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/01_loop-quote-out.json @@ -0,0 +1,76 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "out", + "--network", + "regtest", + "500000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 159166421, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "500000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 158, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3875", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3793", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 158, + "kind": "stdout", + "data": { + "lines": [ + "Send off-chain: 500000 sat\n", + "Receive on-chain: 492332 sat\n", + "Estimated total fee: 7668 sat\n" + ] + } + }, + { + "time_ms": 159, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/02_loop-quote-in-help.json b/cmd/loop/testdata/sessions/quote/02_loop-quote-in-help.json new file mode 100644 index 00000000..b7aa504d --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/02_loop-quote-in-help.json @@ -0,0 +1,92 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "in", + "--network", + "regtest" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 1248128, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + "NAME:\n", + " loop quote in - get a quote for the cost of a loop in swap\n", + "\n", + "USAGE:\n", + " loop quote in amt\n", + "\n", + "DESCRIPTION:\n", + " Allows to determine the cost of a swap up front.Either specify an amount or deposit outpoints.\n", + "\n", + "OPTIONS:\n" + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + " --last_hop string the pubkey of the last hop to use for the quote\n", + " --conf_target uint the target number of blocks the on-chain htlc broadcast by the swap client should confirm within (default: 0)\n", + " --verbose, -v show expanded details (default: false)\n", + " --private generates and passes routehints. Should be used if the connected node is only reachable via private channels (default: false)\n", + " --route_hints string [ --route_hints string ] " + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + " route hints that can each be individually used to assist in reaching the invoice's destination\n", + " --deposit_outpoint string [ --deposit_outpoint string ] one or more static address deposit outpoints to quote for. Deposit outpoints are not to be used in combination with an amount. Eachadditional outpoint can be added by specifying --deposit_outpoint tx_id:idx\n" + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + " --help, -h " + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + " " + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + "show help\n" + ] + } + }, + { + "time_ms": 1, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/03_loop-quote-out-help.json b/cmd/loop/testdata/sessions/quote/03_loop-quote-out-help.json new file mode 100644 index 00000000..ea579620 --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/03_loop-quote-out-help.json @@ -0,0 +1,55 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "out", + "--network", + "regtest" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 1687027, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + "NAME:" + ] + } + }, + { + "time_ms": 1, + "kind": "stdout", + "data": { + "lines": [ + "\n", + " loop quote out - get a quote for the cost of a loop out swap\n", + "\n", + "USAGE:\n", + " loop quote out amt\n", + "\n", + "DESCRIPTION:\n", + " Allows to determine the cost of a swap up front\n", + "\n", + "OPTIONS:\n", + " --conf_target uint the number of blocks from the swap initiation height that the on-chain HTLC should be swept within in a Loop Out (default: 9)\n", + " --fast Indicate you want to swap immediately, paying potentially a higher fee. If not set the swap server might choose to wait up to 30 minutes before publishing the swap HTLC on-chain, to save on chain fees. Not setting this flag might result in a lower swap fee. (default: false)\n", + " --verbose, -v show expanded details (default: false)\n", + " --help, -h show help\n" + ] + } + }, + { + "time_ms": 1, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/04_loop-quote-in.json b/cmd/loop/testdata/sessions/quote/04_loop-quote-in.json new file mode 100644 index 00000000..59c05adb --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/04_loop-quote-in.json @@ -0,0 +1,114 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "in", + "--network", + "regtest", + "--deposit_outpoint", + "edcdab8f0b1138d853a453b8b7a5ac3c694bd53ad38b7ccf062e45f99440e6e6:0" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 622954327, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 3, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/ListStaticAddressDeposits", + "event": "request", + "message_type": "looprpc.ListStaticAddressDepositsRequest", + "payload": { + "state_filter": "UNKNOWN_STATE", + "outpoints": [ + "edcdab8f0b1138d853a453b8b7a5ac3c694bd53ad38b7ccf062e45f99440e6e6:0" + ] + } + } + }, + { + "time_ms": 165, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/ListStaticAddressDeposits", + "event": "response", + "message_type": "looprpc.ListStaticAddressDepositsResponse", + "payload": { + "filtered_deposits": [ + { + "id": "aCYqEEyewyXea+w3uOMb2HW70vXwuc4togzwvWNvxEg=", + "state": "DEPOSITED", + "outpoint": "edcdab8f0b1138d853a453b8b7a5ac3c694bd53ad38b7ccf062e45f99440e6e6:0", + "value": "500000", + "confirmation_height": "125", + "blocks_until_expiry": "14394", + "swap_hash": "" + } + ] + } + } + }, + { + "time_ms": 165, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "0", + "conf_target": 0, + "external_htlc": false, + "swap_publication_deadline": "0", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [ + "edcdab8f0b1138d853a453b8b7a5ac3c694bd53ad38b7ccf062e45f99440e6e6:0" + ], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 622, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1825", + "htlc_publish_fee_sat": "0", + "cltv_delta": 0, + "conf_target": 0, + "quoted_amt": "500000" + } + } + }, + { + "time_ms": 622, + "kind": "stdout", + "data": { + "lines": [ + "Previously deposited on-chain: 500000 sat\n", + "Receive off-chain: 498175 sat\n", + "Estimated total fee: 1825 sat\n" + ] + } + }, + { + "time_ms": 622, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/05_loop-quote-in-last-hop.json b/cmd/loop/testdata/sessions/quote/05_loop-quote-in-last-hop.json new file mode 100644 index 00000000..331b319d --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/05_loop-quote-in-last-hop.json @@ -0,0 +1,76 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "in", + "--network", + "regtest", + "--last_hop", + "0271d6e29301159d9e1cc5d3983479a51f3b3c0c682eda7f16aa1f47dfe09b22f7", + "50000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 226964878, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "50000", + "conf_target": 0, + "external_htlc": false, + "swap_publication_deadline": "0", + "loop_in_last_hop": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 226, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1801", + "htlc_publish_fee_sat": "3873", + "cltv_delta": 0, + "conf_target": 6, + "quoted_amt": "50000" + } + } + }, + { + "time_ms": 226, + "kind": "stdout", + "data": { + "lines": [ + "Send on-chain: 50000 sat\n", + "Receive off-chain: 44326 sat\n", + "Estimated total fee: 5674 sat\n" + ] + } + }, + { + "time_ms": 226, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/06_loop-quote-out-verbose.json b/cmd/loop/testdata/sessions/quote/06_loop-quote-out-verbose.json new file mode 100644 index 00000000..3a16805a --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/06_loop-quote-out-verbose.json @@ -0,0 +1,93 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "out", + "--network", + "regtest", + "--verbose", + "50000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 273326957, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 2, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "50000", + "conf_target": 9, + "external_htlc": false, + "swap_publication_deadline": "1769408886", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 272, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/LoopOutQuote", + "event": "response", + "message_type": "looprpc.OutQuoteResponse", + "payload": { + "swap_fee_sat": "3828", + "prepay_amt_sat": "1337", + "htlc_sweep_fee_sat": "3791", + "swap_payment_dest": "AnHW4pMBFZ2eHMXTmDR5pR87PAxoLtp/FqofR9/gmyL3", + "cltv_delta": 0, + "conf_target": 9, + "asset_rfq_info": null + } + } + }, + { + "time_ms": 273, + "kind": "stdout", + "data": { + "lines": [ + "Send off-chain: 50000 sat\n", + "Receive on-chain: 42381 sat\n", + "\n", + "Estimated on-chain fee: 3791 sat\n", + "Loop service fee: 3828 sat\n", + "Estimated total fee: 7619 sat\n", + "\n" + ] + } + }, + { + "time_ms": 273, + "kind": "stdout", + "data": { + "lines": [ + "No show penalty (prepay): 1337 sat\n", + "Conf target: 9 block\n", + "CLTV expiry delta: 0 block\n", + "Publication deadline: 2026-01-26 01:28:06 -0500 EST\n" + ] + } + }, + { + "time_ms": 273, + "kind": "exit", + "data": {} + } + ] +} diff --git a/cmd/loop/testdata/sessions/quote/07_loop-quote-in-verbose.json b/cmd/loop/testdata/sessions/quote/07_loop-quote-in-verbose.json new file mode 100644 index 00000000..7972e274 --- /dev/null +++ b/cmd/loop/testdata/sessions/quote/07_loop-quote-in-verbose.json @@ -0,0 +1,81 @@ +{ + "metadata": { + "args": [ + "/home/user/bin/loop", + "quote", + "in", + "--network", + "regtest", + "--verbose", + "50000" + ], + "env": { + "HOME": "/home/user" + }, + "version": "0.31.7-beta commit=v0.31.7-beta-28-g6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845 commit_hash=6d8ddfc59ddc2dcfd1a9b4e4b3c53a9cf15dd845", + "duration": 380680881, + "clock_start_unix": 1769407086 + }, + "events": [ + { + "time_ms": 1, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "request", + "message_type": "looprpc.QuoteRequest", + "payload": { + "amt": "50000", + "conf_target": 0, + "external_htlc": false, + "swap_publication_deadline": "0", + "loop_in_last_hop": "", + "loop_in_route_hints": [], + "private": false, + "deposit_outpoints": [], + "asset_info": null, + "auto_select_deposits": false, + "fast": false + } + } + }, + { + "time_ms": 379, + "kind": "grpc", + "data": { + "method": "/looprpc.SwapClient/GetLoopInQuote", + "event": "response", + "message_type": "looprpc.InQuoteResponse", + "payload": { + "swap_fee_sat": "1800", + "htlc_publish_fee_sat": "3871", + "cltv_delta": 0, + "conf_target": 6, + "quoted_amt": "50000" + } + } + }, + { + "time_ms": 380, + "kind": "stdout", + "data": { + "lines": [ + "Send on-chain: 50000 sat\n", + "Receive off-chain: 44329 sat\n", + "\n", + "Estimated on-chain fee: 3871 sat\n", + "Loop service fee: 1800 sat\n", + "Estimated total fee: 5671 sat\n", + "\n", + "Conf target: 6 block\n", + "CLTV expiry delta: 0 block\n" + ] + } + }, + { + "time_ms": 380, + "kind": "exit", + "data": {} + } + ] +}