From c7303ca5ddcdac3a04e81bdb2867b25d7b40eef0 Mon Sep 17 00:00:00 2001 From: boufni95 Date: Fri, 27 Oct 2023 20:05:25 +0200 Subject: [PATCH] always use the new id --- proto/autogenerated/client.md | 254 +-- proto/autogenerated/debug.txt | 2224 ++++++++++++------------ proto/autogenerated/ts/nostr_client.ts | 2 +- proto/autogenerated/ts/types.ts | 1700 +++++++++--------- proto/protoc-gen-pub | Bin 9056054 -> 9056054 bytes src/services/main/index.ts | 10 +- 6 files changed, 2094 insertions(+), 2096 deletions(-) diff --git a/proto/autogenerated/client.md b/proto/autogenerated/client.md index 160d62d2..b381b8be 100644 --- a/proto/autogenerated/client.md +++ b/proto/autogenerated/client.md @@ -95,9 +95,9 @@ The nostr server will send back a message response, and inside the body there wi - __User__: - expected context content - - __user_id__: _string_ - __app_id__: _string_ - __app_user_id__: _string_ + - __user_id__: _string_ - __Admin__: - expected context content @@ -372,62 +372,22 @@ The nostr server will send back a message response, and inside the body there wi ## Messages ### The content of requests and response from the methods -### AddAppRequest - - __name__: _string_ - - __allow_user_creation__: _boolean_ - -### GetAppUserLNURLInfoRequest - - __user_identifier__: _string_ - - __base_url_override__: _string_ - -### DecodeInvoiceRequest - - __invoice__: _string_ - -### DecodeInvoiceResponse - - __amount__: _number_ - -### LnurlPayInfoResponse - - __tag__: _string_ - - __callback__: _string_ - - __maxSendable__: _number_ - - __minSendable__: _number_ - - __metadata__: _string_ - -### AddProductRequest - - __name__: _string_ - - __price_sats__: _number_ - -### EncryptionExchangeRequest - - __publicKey__: _string_ - - __deviceId__: _string_ - -### LndGetInfoRequest - - __nodeId__: _number_ - -### OpenChannelResponse - - __channelId__: _string_ - -### GetUserOperationsResponse - - __latestOutgoingInvoiceOperations__: _[UserOperations](#UserOperations)_ - - __latestIncomingInvoiceOperations__: _[UserOperations](#UserOperations)_ - - __latestOutgoingTxOperations__: _[UserOperations](#UserOperations)_ - - __latestIncomingTxOperations__: _[UserOperations](#UserOperations)_ - - __latestOutgoingUserToUserPayemnts__: _[UserOperations](#UserOperations)_ - - __latestIncomingUserToUserPayemnts__: _[UserOperations](#UserOperations)_ - ### Application - __name__: _string_ - __id__: _string_ - __balance__: _number_ - __npub__: _string_ +### GetAppUserRequest + - __user_identifier__: _string_ + ### PayAppUserInvoiceRequest - __user_identifier__: _string_ - __invoice__: _string_ - __amount__: _number_ -### NewInvoiceResponse - - __invoice__: _string_ +### OpenChannelResponse + - __channelId__: _string_ ### LnurlLinkResponse - __lnurl__: _string_ @@ -438,40 +398,28 @@ The nostr server will send back a message response, and inside the body there wi - __balance__: _number_ - __max_withdrawable__: _number_ -### SendAppUserToAppUserPaymentRequest - - __from_user_identifier__: _string_ - - __to_user_identifier__: _string_ - - __amount__: _number_ - -### SetMockAppBalanceRequest - - __amount__: _number_ - -### NewAddressResponse - - __address__: _string_ - -### PayAddressResponse - - __txId__: _string_ - -### PayInvoiceRequest - - __invoice__: _string_ - - __amount__: _number_ +### GetUserOperationsRequest + - __latestIncomingInvoice__: _number_ + - __latestOutgoingInvoice__: _number_ + - __latestIncomingTx__: _number_ + - __latestOutgoingTx__: _number_ + - __latestIncomingUserToUserPayment__: _number_ + - __latestOutgoingUserToUserPayment__: _number_ ### LiveUserOperation - __id__: _string_ - __operation__: _[UserOperation](#UserOperation)_ -### PayAppUserInvoiceResponse - - __preimage__: _string_ - - __amount_paid__: _number_ +### SetMockInvoiceAsPaidRequest + - __invoice__: _string_ + - __amount__: _number_ ### SetMockAppUserBalanceRequest - __user_identifier__: _string_ - __amount__: _number_ -### AddAppInvoiceRequest - - __payer_identifier__: _string_ - - __http_callback_url__: _string_ - - __invoice_req__: _[NewInvoiceRequest](#NewInvoiceRequest)_ +### NewInvoiceResponse + - __invoice__: _string_ ### LnurlWithdrawInfoResponse - __tag__: _string_ @@ -483,15 +431,20 @@ The nostr server will send back a message response, and inside the body there wi - __balanceCheck__: _string_ - __payLink__: _string_ -### PayInvoiceResponse - - __preimage__: _string_ - - __amount_paid__: _number_ +### GetProductBuyLinkResponse + - __link__: _string_ -### OpenChannelRequest - - __destination__: _string_ - - __fundingAmount__: _number_ - - __pushAmount__: _number_ - - __closeAddress__: _string_ +### AddAppUserRequest + - __identifier__: _string_ + - __fail_if_exists__: _boolean_ + - __balance__: _number_ + +### NewAddressRequest + - __addressType__: _[AddressType](#AddressType)_ + +### PayInvoiceRequest + - __invoice__: _string_ + - __amount__: _number_ ### UserOperation - __paidAtUnix__: _number_ @@ -500,6 +453,62 @@ The nostr server will send back a message response, and inside the body there wi - __amount__: _number_ - __identifier__: _string_ +### PayAddressRequest + - __address__: _string_ + - __amoutSats__: _number_ + - __satsPerVByte__: _number_ + +### OpenChannelRequest + - __destination__: _string_ + - __fundingAmount__: _number_ + - __pushAmount__: _number_ + - __closeAddress__: _string_ + +### HandleLnurlPayResponse + - __pr__: _string_ + - __routes__: ARRAY of: _[Empty](#Empty)_ + +### GetAppUserLNURLInfoRequest + - __user_identifier__: _string_ + - __base_url_override__: _string_ + +### SetMockAppBalanceRequest + - __amount__: _number_ + +### PayInvoiceResponse + - __preimage__: _string_ + - __amount_paid__: _number_ + +### LnurlPayInfoResponse + - __tag__: _string_ + - __callback__: _string_ + - __maxSendable__: _number_ + - __minSendable__: _number_ + - __metadata__: _string_ + +### GetUserOperationsResponse + - __latestOutgoingInvoiceOperations__: _[UserOperations](#UserOperations)_ + - __latestIncomingInvoiceOperations__: _[UserOperations](#UserOperations)_ + - __latestOutgoingTxOperations__: _[UserOperations](#UserOperations)_ + - __latestIncomingTxOperations__: _[UserOperations](#UserOperations)_ + - __latestOutgoingUserToUserPayemnts__: _[UserOperations](#UserOperations)_ + - __latestIncomingUserToUserPayemnts__: _[UserOperations](#UserOperations)_ + +### Empty + +### AuthApp + - __app__: _[Application](#Application)_ + - __auth_token__: _string_ + +### SendAppUserToAppUserPaymentRequest + - __from_user_identifier__: _string_ + - __to_user_identifier__: _string_ + - __amount__: _number_ + +### AddProductRequest + - __name__: _string_ + - __price_sats__: _number_ + ### UserOperations - __fromIndex__: _number_ - __toIndex__: _number_ @@ -510,72 +519,63 @@ The nostr server will send back a message response, and inside the body there wi - __name__: _string_ - __price_sats__: _number_ -### GetProductBuyLinkResponse - - __link__: _string_ - -### Empty - -### NewAddressRequest - - __addressType__: _[AddressType](#AddressType)_ - -### AuthApp - - __app__: _[Application](#Application)_ - - __auth_token__: _string_ - -### GetAppUserRequest - - __user_identifier__: _string_ - -### SendAppUserToAppPaymentRequest - - __from_user_identifier__: _string_ - - __amount__: _number_ - -### PayAddressRequest - - __address__: _string_ - - __amoutSats__: _number_ - - __satsPerVByte__: _number_ - -### NewInvoiceRequest - - __amountSats__: _number_ - - __memo__: _string_ - -### GetUserOperationsRequest - - __latestIncomingInvoice__: _number_ - - __latestOutgoingInvoice__: _number_ - - __latestIncomingTx__: _number_ - - __latestOutgoingTx__: _number_ - - __latestIncomingUserToUserPayment__: _number_ - - __latestOutgoingUserToUserPayment__: _number_ - -### SetMockInvoiceAsPaidRequest - - __invoice__: _string_ - - __amount__: _number_ - -### LndGetInfoResponse - - __alias__: _string_ +### EncryptionExchangeRequest + - __publicKey__: _string_ + - __deviceId__: _string_ ### AppUser - __identifier__: _string_ - __info__: _[UserInfo](#UserInfo)_ - __max_withdrawable__: _number_ +### NewAddressResponse + - __address__: _string_ + ### AddAppUserInvoiceRequest - __receiver_identifier__: _string_ - __payer_identifier__: _string_ - __http_callback_url__: _string_ - __invoice_req__: _[NewInvoiceRequest](#NewInvoiceRequest)_ -### HandleLnurlPayResponse - - __pr__: _string_ - - __routes__: ARRAY of: _[Empty](#Empty)_ +### PayAppUserInvoiceResponse + - __preimage__: _string_ + - __amount_paid__: _number_ + +### SendAppUserToAppPaymentRequest + - __from_user_identifier__: _string_ + - __amount__: _number_ + +### PayAddressResponse + - __txId__: _string_ + +### NewInvoiceRequest + - __amountSats__: _number_ + - __memo__: _string_ + +### LndGetInfoRequest + - __nodeId__: _number_ + +### AddAppRequest + - __name__: _string_ + - __allow_user_creation__: _boolean_ ### AuthAppRequest - __name__: _string_ - __allow_user_creation__: _boolean_ *this field is optional -### AddAppUserRequest - - __identifier__: _string_ - - __fail_if_exists__: _boolean_ - - __balance__: _number_ +### DecodeInvoiceRequest + - __invoice__: _string_ + +### DecodeInvoiceResponse + - __amount__: _number_ + +### LndGetInfoResponse + - __alias__: _string_ + +### AddAppInvoiceRequest + - __payer_identifier__: _string_ + - __http_callback_url__: _string_ + - __invoice_req__: _[NewInvoiceRequest](#NewInvoiceRequest)_ ## Enums ### The enumerators used in the messages diff --git a/proto/autogenerated/debug.txt b/proto/autogenerated/debug.txt index 06c5a096..2fc48947 100644 --- a/proto/autogenerated/debug.txt +++ b/proto/autogenerated/debug.txt @@ -9,8 +9,8 @@ name: (string) (len=18) "LndGetInfoResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc00006d140)({ - authType: (*main.supportedAuth)(0xc0001a0360)({ + opts: (*main.methodOptions)(0xc00006d1a0)({ + authType: (*main.supportedAuth)(0xc00007c360)({ id: (string) (len=5) "admin", name: (string) (len=5) "Admin", encrypted: (bool) false, @@ -38,8 +38,8 @@ name: (string) (len=7) "AuthApp", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc00006d2c0)({ - authType: (*main.supportedAuth)(0xc0001a03f0)({ + opts: (*main.methodOptions)(0xc00006d320)({ + authType: (*main.supportedAuth)(0xc00007c3f0)({ id: (string) (len=5) "admin", name: (string) (len=5) "Admin", encrypted: (bool) false, @@ -67,8 +67,8 @@ name: (string) (len=7) "AuthApp", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc00006d440)({ - authType: (*main.supportedAuth)(0xc0001a0480)({ + opts: (*main.methodOptions)(0xc00006d4a0)({ + authType: (*main.supportedAuth)(0xc00007c480)({ id: (string) (len=5) "admin", name: (string) (len=5) "Admin", encrypted: (bool) false, @@ -96,8 +96,8 @@ name: (string) (len=5) "Empty", hasZeroFields: (bool) true }, - opts: (*main.methodOptions)(0xc00006d5c0)({ - authType: (*main.supportedAuth)(0xc0001a0510)({ + opts: (*main.methodOptions)(0xc00006d620)({ + authType: (*main.supportedAuth)(0xc00007c510)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -124,8 +124,8 @@ name: (string) (len=5) "Empty", hasZeroFields: (bool) true }, - opts: (*main.methodOptions)(0xc00006d740)({ - authType: (*main.supportedAuth)(0xc0001a05d0)({ + opts: (*main.methodOptions)(0xc00006d7a0)({ + authType: (*main.supportedAuth)(0xc00007c5d0)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -152,8 +152,8 @@ name: (string) (len=5) "Empty", hasZeroFields: (bool) true }, - opts: (*main.methodOptions)(0xc00006d920)({ - authType: (*main.supportedAuth)(0xc0001a0660)({ + opts: (*main.methodOptions)(0xc00006d980)({ + authType: (*main.supportedAuth)(0xc00007c660)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -180,8 +180,8 @@ name: (string) (len=25) "LnurlWithdrawInfoResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc00006dc80)({ - authType: (*main.supportedAuth)(0xc0001a07b0)({ + opts: (*main.methodOptions)(0xc00006dce0)({ + authType: (*main.supportedAuth)(0xc00007c7b0)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -211,7 +211,7 @@ hasZeroFields: (bool) true }, opts: (*main.methodOptions)(0xc0002f5020)({ - authType: (*main.supportedAuth)(0xc0001a0900)({ + authType: (*main.supportedAuth)(0xc00007c900)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -242,7 +242,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f5380)({ - authType: (*main.supportedAuth)(0xc0001a0a20)({ + authType: (*main.supportedAuth)(0xc00007ca20)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -272,7 +272,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f56e0)({ - authType: (*main.supportedAuth)(0xc0001a0b70)({ + authType: (*main.supportedAuth)(0xc00007cb70)({ id: (string) (len=5) "guest", name: (string) (len=5) "Guest", encrypted: (bool) false, @@ -303,7 +303,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f5860)({ - authType: (*main.supportedAuth)(0xc0001a0c00)({ + authType: (*main.supportedAuth)(0xc00007cc00)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -332,7 +332,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f59e0)({ - authType: (*main.supportedAuth)(0xc0001a0c90)({ + authType: (*main.supportedAuth)(0xc00007cc90)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -361,7 +361,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f5b60)({ - authType: (*main.supportedAuth)(0xc0001a0d20)({ + authType: (*main.supportedAuth)(0xc00007cd20)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -390,7 +390,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f5d40)({ - authType: (*main.supportedAuth)(0xc0001a0db0)({ + authType: (*main.supportedAuth)(0xc00007cdb0)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -419,7 +419,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc0002f5ec0)({ - authType: (*main.supportedAuth)(0xc0001a0e40)({ + authType: (*main.supportedAuth)(0xc00007ce40)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -448,7 +448,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc00009e4e0)({ - authType: (*main.supportedAuth)(0xc0001a0ed0)({ + authType: (*main.supportedAuth)(0xc00007ced0)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -477,7 +477,7 @@ hasZeroFields: (bool) true }, opts: (*main.methodOptions)(0xc00009e720)({ - authType: (*main.supportedAuth)(0xc0001a0f60)({ + authType: (*main.supportedAuth)(0xc00007cf60)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -506,7 +506,7 @@ hasZeroFields: (bool) true }, opts: (*main.methodOptions)(0xc00009e8a0)({ - authType: (*main.supportedAuth)(0xc0001a0ff0)({ + authType: (*main.supportedAuth)(0xc00007cff0)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -535,7 +535,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc00009ea20)({ - authType: (*main.supportedAuth)(0xc0001a1080)({ + authType: (*main.supportedAuth)(0xc00007d080)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -564,7 +564,7 @@ hasZeroFields: (bool) true }, opts: (*main.methodOptions)(0xc00009eba0)({ - authType: (*main.supportedAuth)(0xc0001a1110)({ + authType: (*main.supportedAuth)(0xc00007d110)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -593,7 +593,7 @@ hasZeroFields: (bool) true }, opts: (*main.methodOptions)(0xc00009ed80)({ - authType: (*main.supportedAuth)(0xc0001a11a0)({ + authType: (*main.supportedAuth)(0xc00007d1a0)({ id: (string) (len=3) "app", name: (string) (len=3) "App", encrypted: (bool) false, @@ -622,14 +622,14 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc00009efc0)({ - authType: (*main.supportedAuth)(0xc0001a1260)({ + authType: (*main.supportedAuth)(0xc00007d260)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -653,7 +653,7 @@ hasZeroFields: (bool) false }, opts: (*main.methodOptions)(0xc00009f200)({ - authType: (*main.supportedAuth)(0xc0001a12f0)({ + authType: (*main.supportedAuth)(0xc00007d2f0)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, @@ -683,15 +683,15 @@ name: (string) (len=18) "NewInvoiceResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a81e0)({ - authType: (*main.supportedAuth)(0xc0001a1410)({ + opts: (*main.methodOptions)(0xc0001aa1e0)({ + authType: (*main.supportedAuth)(0xc00007d410)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { + (string) (len=11) "app_user_id": (string) (len=6) "string", (string) (len=7) "user_id": (string) (len=6) "string", - (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=6) "app_id": (string) (len=6) "string" } }), method: (string) (len=3) "get", @@ -716,15 +716,15 @@ name: (string) (len=25) "GetUserOperationsResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a83c0)({ - authType: (*main.supportedAuth)(0xc0001a14a0)({ + opts: (*main.methodOptions)(0xc0001aa3c0)({ + authType: (*main.supportedAuth)(0xc00007d4a0)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -747,15 +747,15 @@ name: (string) (len=18) "NewAddressResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a85a0)({ - authType: (*main.supportedAuth)(0xc0001a1530)({ + opts: (*main.methodOptions)(0xc0001aa5a0)({ + authType: (*main.supportedAuth)(0xc00007d530)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -778,15 +778,15 @@ name: (string) (len=18) "PayAddressResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a8780)({ - authType: (*main.supportedAuth)(0xc0001a15c0)({ + opts: (*main.methodOptions)(0xc0001aa780)({ + authType: (*main.supportedAuth)(0xc00007d5c0)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { + (string) (len=6) "app_id": (string) (len=6) "string", (string) (len=11) "app_user_id": (string) (len=6) "string", - (string) (len=7) "user_id": (string) (len=6) "string", - (string) (len=6) "app_id": (string) (len=6) "string" + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -809,15 +809,15 @@ name: (string) (len=18) "NewInvoiceResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a8960)({ - authType: (*main.supportedAuth)(0xc0001a1650)({ + opts: (*main.methodOptions)(0xc0001aa960)({ + authType: (*main.supportedAuth)(0xc00007d650)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -840,15 +840,15 @@ name: (string) (len=21) "DecodeInvoiceResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a8b40)({ - authType: (*main.supportedAuth)(0xc0001a16e0)({ + opts: (*main.methodOptions)(0xc0001aab40)({ + authType: (*main.supportedAuth)(0xc00007d6e0)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -871,15 +871,15 @@ name: (string) (len=18) "PayInvoiceResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a8d20)({ - authType: (*main.supportedAuth)(0xc0001a1770)({ + opts: (*main.methodOptions)(0xc0001aad20)({ + authType: (*main.supportedAuth)(0xc00007d770)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -902,15 +902,15 @@ name: (string) (len=19) "OpenChannelResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a8f00)({ - authType: (*main.supportedAuth)(0xc0001a1800)({ + opts: (*main.methodOptions)(0xc0001aaf00)({ + authType: (*main.supportedAuth)(0xc00007d800)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { + (string) (len=6) "app_id": (string) (len=6) "string", (string) (len=11) "app_user_id": (string) (len=6) "string", - (string) (len=7) "user_id": (string) (len=6) "string", - (string) (len=6) "app_id": (string) (len=6) "string" + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -933,8 +933,8 @@ name: (string) (len=17) "LnurlLinkResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a90e0)({ - authType: (*main.supportedAuth)(0xc0001a1890)({ + opts: (*main.methodOptions)(0xc0001ab0e0)({ + authType: (*main.supportedAuth)(0xc00007d890)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, @@ -964,15 +964,15 @@ name: (string) (len=17) "LnurlLinkResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a92c0)({ - authType: (*main.supportedAuth)(0xc0001a1920)({ + opts: (*main.methodOptions)(0xc0001ab2c0)({ + authType: (*main.supportedAuth)(0xc00007d920)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { - (string) (len=7) "user_id": (string) (len=6) "string", (string) (len=6) "app_id": (string) (len=6) "string", - (string) (len=11) "app_user_id": (string) (len=6) "string" + (string) (len=11) "app_user_id": (string) (len=6) "string", + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=3) "get", @@ -995,8 +995,8 @@ name: (string) (len=17) "LnurlLinkResponse", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a94a0)({ - authType: (*main.supportedAuth)(0xc0001a19b0)({ + opts: (*main.methodOptions)(0xc0001ab4a0)({ + authType: (*main.supportedAuth)(0xc00007d9b0)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, @@ -1026,15 +1026,15 @@ name: (string) (len=17) "LiveUserOperation", hasZeroFields: (bool) false }, - opts: (*main.methodOptions)(0xc0001a9680)({ - authType: (*main.supportedAuth)(0xc0001a1a40)({ + opts: (*main.methodOptions)(0xc0001ab680)({ + authType: (*main.supportedAuth)(0xc00007da40)({ id: (string) (len=4) "user", name: (string) (len=4) "User", encrypted: (bool) false, context: (map[string]string) (len=3) { + (string) (len=6) "app_id": (string) (len=6) "string", (string) (len=11) "app_user_id": (string) (len=6) "string", - (string) (len=7) "user_id": (string) (len=6) "string", - (string) (len=6) "app_id": (string) (len=6) "string" + (string) (len=7) "user_id": (string) (len=6) "string" } }), method: (string) (len=4) "post", @@ -1050,7 +1050,7 @@ } ([]*main.Enum) (len=2 cap=2) { - (*main.Enum)(0xc000125a70)({ + (*main.Enum)(0xc0001f8a50)({ name: (string) (len=11) "AddressType", values: ([]main.EnumValue) (len=3 cap=4) { (main.EnumValue) { @@ -1067,7 +1067,7 @@ } } }), - (*main.Enum)(0xc000125ad0)({ + (*main.Enum)(0xc0001f8ab0)({ name: (string) (len=17) "UserOperationType", values: ([]main.EnumValue) (len=6 cap=8) { (main.EnumValue) { @@ -1099,191 +1099,11 @@ } (map[string]*main.Message) (len=46) { - (string) (len=14) "AuthAppRequest": (*main.Message)(0xc000484600)({ - fullName: (string) (len=14) "AuthAppRequest", - name: (string) (len=14) "AuthAppRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124690)({ - name: (string) (len=4) "name", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001246c0)({ - name: (string) (len=19) "allow_user_creation", - kind: (string) (len=4) "bool", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) true - }) - } - }), - (string) (len=17) "AddAppUserRequest": (*main.Message)(0xc0004846c0)({ - fullName: (string) (len=17) "AddAppUserRequest", - name: (string) (len=17) "AddAppUserRequest", - fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000124810)({ - name: (string) (len=10) "identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124840)({ - name: (string) (len=14) "fail_if_exists", - kind: (string) (len=4) "bool", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124870)({ - name: (string) (len=7) "balance", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=7) "AppUser": (*main.Message)(0xc000484700)({ - fullName: (string) (len=7) "AppUser", - name: (string) (len=7) "AppUser", - fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc0001248a0)({ - name: (string) (len=10) "identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001248d0)({ - name: (string) (len=4) "info", - kind: (string) (len=8) "UserInfo", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }), - (*main.Field)(0xc000124900)({ - name: (string) (len=16) "max_withdrawable", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=24) "AddAppUserInvoiceRequest": (*main.Message)(0xc000484780)({ - fullName: (string) (len=24) "AddAppUserInvoiceRequest", - name: (string) (len=24) "AddAppUserInvoiceRequest", - fields: ([]*main.Field) (len=4 cap=4) { - (*main.Field)(0xc0001249c0)({ - name: (string) (len=19) "receiver_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001249f0)({ - name: (string) (len=16) "payer_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124a20)({ - name: (string) (len=17) "http_callback_url", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124a50)({ - name: (string) (len=11) "invoice_req", - kind: (string) (len=17) "NewInvoiceRequest", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }) - } - }), - (string) (len=22) "HandleLnurlPayResponse": (*main.Message)(0xc000484e00)({ - fullName: (string) (len=22) "HandleLnurlPayResponse", - name: (string) (len=22) "HandleLnurlPayResponse", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000125410)({ - name: (string) (len=2) "pr", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125440)({ - name: (string) (len=6) "routes", - kind: (string) (len=5) "Empty", - isMap: (bool) false, - isArray: (bool) true, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }) - } - }), - (string) (len=17) "AddProductRequest": (*main.Message)(0xc000485040)({ - fullName: (string) (len=17) "AddProductRequest", - name: (string) (len=17) "AddProductRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc0001258c0)({ - name: (string) (len=4) "name", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001258f0)({ - name: (string) (len=10) "price_sats", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=25) "EncryptionExchangeRequest": (*main.Message)(0xc0004844c0)({ + (string) (len=25) "EncryptionExchangeRequest": (*main.Message)(0xc00048c440)({ fullName: (string) (len=25) "EncryptionExchangeRequest", name: (string) (len=25) "EncryptionExchangeRequest", fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124510)({ + (*main.Field)(0xc0003d58c0)({ name: (string) (len=9) "publicKey", kind: (string) (len=6) "string", isMap: (bool) false, @@ -1292,7 +1112,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124540)({ + (*main.Field)(0xc0003d58f0)({ name: (string) (len=8) "deviceId", kind: (string) (len=6) "string", isMap: (bool) false, @@ -1303,198 +1123,12 @@ }) } }), - (string) (len=17) "LndGetInfoRequest": (*main.Message)(0xc000484500)({ - fullName: (string) (len=17) "LndGetInfoRequest", - name: (string) (len=17) "LndGetInfoRequest", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124570)({ - name: (string) (len=6) "nodeId", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=13) "AddAppRequest": (*main.Message)(0xc0004845c0)({ - fullName: (string) (len=13) "AddAppRequest", - name: (string) (len=13) "AddAppRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124630)({ - name: (string) (len=4) "name", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124660)({ - name: (string) (len=19) "allow_user_creation", - kind: (string) (len=4) "bool", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=26) "GetAppUserLNURLInfoRequest": (*main.Message)(0xc000484900)({ - fullName: (string) (len=26) "GetAppUserLNURLInfoRequest", - name: (string) (len=26) "GetAppUserLNURLInfoRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124c90)({ - name: (string) (len=15) "user_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124cc0)({ - name: (string) (len=17) "base_url_override", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=20) "DecodeInvoiceRequest": (*main.Message)(0xc000484b40)({ - fullName: (string) (len=20) "DecodeInvoiceRequest", - name: (string) (len=20) "DecodeInvoiceRequest", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124f30)({ - name: (string) (len=7) "invoice", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=21) "DecodeInvoiceResponse": (*main.Message)(0xc000484b80)({ - fullName: (string) (len=21) "DecodeInvoiceResponse", - name: (string) (len=21) "DecodeInvoiceResponse", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124f60)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=20) "LnurlPayInfoResponse": (*main.Message)(0xc000484dc0)({ - fullName: (string) (len=20) "LnurlPayInfoResponse", - name: (string) (len=20) "LnurlPayInfoResponse", - fields: ([]*main.Field) (len=5 cap=8) { - (*main.Field)(0xc000125320)({ - name: (string) (len=3) "tag", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125350)({ - name: (string) (len=8) "callback", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125380)({ - name: (string) (len=11) "maxSendable", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001253b0)({ - name: (string) (len=11) "minSendable", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001253e0)({ - name: (string) (len=8) "metadata", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=11) "Application": (*main.Message)(0xc000484640)({ - fullName: (string) (len=11) "Application", - name: (string) (len=11) "Application", - fields: ([]*main.Field) (len=4 cap=4) { - (*main.Field)(0xc0001246f0)({ - name: (string) (len=4) "name", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124720)({ - name: (string) (len=2) "id", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124750)({ - name: (string) (len=7) "balance", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124780)({ - name: (string) (len=4) "npub", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=24) "PayAppUserInvoiceRequest": (*main.Message)(0xc000484800)({ - fullName: (string) (len=24) "PayAppUserInvoiceRequest", - name: (string) (len=24) "PayAppUserInvoiceRequest", + (string) (len=7) "AppUser": (*main.Message)(0xc00048c680)({ + fullName: (string) (len=7) "AppUser", + name: (string) (len=7) "AppUser", fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000124ab0)({ - name: (string) (len=15) "user_identifier", + (*main.Field)(0xc0003d5c50)({ + name: (string) (len=10) "identifier", kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, @@ -1502,211 +1136,16 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124ae0)({ - name: (string) (len=7) "invoice", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124b10)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=19) "OpenChannelResponse": (*main.Message)(0xc000484c80)({ - fullName: (string) (len=19) "OpenChannelResponse", - name: (string) (len=19) "OpenChannelResponse", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000125110)({ - name: (string) (len=9) "channelId", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=25) "GetUserOperationsResponse": (*main.Message)(0xc000485000)({ - fullName: (string) (len=25) "GetUserOperationsResponse", - name: (string) (len=25) "GetUserOperationsResponse", - fields: ([]*main.Field) (len=6 cap=8) { - (*main.Field)(0xc0001257a0)({ - name: (string) (len=31) "latestOutgoingInvoiceOperations", - kind: (string) (len=14) "UserOperations", + (*main.Field)(0xc0003d5c80)({ + name: (string) (len=4) "info", + kind: (string) (len=8) "UserInfo", isMap: (bool) false, isArray: (bool) false, isEnum: (bool) false, isMessage: (bool) true, isOptional: (bool) false }), - (*main.Field)(0xc0001257d0)({ - name: (string) (len=31) "latestIncomingInvoiceOperations", - kind: (string) (len=14) "UserOperations", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }), - (*main.Field)(0xc000125800)({ - name: (string) (len=26) "latestOutgoingTxOperations", - kind: (string) (len=14) "UserOperations", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }), - (*main.Field)(0xc000125830)({ - name: (string) (len=26) "latestIncomingTxOperations", - kind: (string) (len=14) "UserOperations", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }), - (*main.Field)(0xc000125860)({ - name: (string) (len=32) "latestOutgoingUserToUserPayemnts", - kind: (string) (len=14) "UserOperations", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }), - (*main.Field)(0xc000125890)({ - name: (string) (len=32) "latestIncomingUserToUserPayemnts", - kind: (string) (len=14) "UserOperations", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }) - } - }), - (string) (len=34) "SendAppUserToAppUserPaymentRequest": (*main.Message)(0xc000484880)({ - fullName: (string) (len=34) "SendAppUserToAppUserPaymentRequest", - name: (string) (len=34) "SendAppUserToAppUserPaymentRequest", - fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000124ba0)({ - name: (string) (len=20) "from_user_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124bd0)({ - name: (string) (len=18) "to_user_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124c00)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=24) "SetMockAppBalanceRequest": (*main.Message)(0xc000484980)({ - fullName: (string) (len=24) "SetMockAppBalanceRequest", - name: (string) (len=24) "SetMockAppBalanceRequest", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124d50)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=18) "NewInvoiceResponse": (*main.Message)(0xc000484b00)({ - fullName: (string) (len=18) "NewInvoiceResponse", - name: (string) (len=18) "NewInvoiceResponse", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124f00)({ - name: (string) (len=7) "invoice", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=17) "LnurlLinkResponse": (*main.Message)(0xc000484cc0)({ - fullName: (string) (len=17) "LnurlLinkResponse", - name: (string) (len=17) "LnurlLinkResponse", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000125140)({ - name: (string) (len=5) "lnurl", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125170)({ - name: (string) (len=2) "k1", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=8) "UserInfo": (*main.Message)(0xc000484e40)({ - fullName: (string) (len=8) "UserInfo", - name: (string) (len=8) "UserInfo", - fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000125470)({ - name: (string) (len=6) "userId", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001254a0)({ - name: (string) (len=7) "balance", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001254d0)({ + (*main.Field)(0xc0003d5cb0)({ name: (string) (len=16) "max_withdrawable", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -1717,59 +1156,11 @@ }) } }), - (string) (len=25) "PayAppUserInvoiceResponse": (*main.Message)(0xc000484840)({ - fullName: (string) (len=25) "PayAppUserInvoiceResponse", - name: (string) (len=25) "PayAppUserInvoiceResponse", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124b40)({ - name: (string) (len=8) "preimage", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124b70)({ - name: (string) (len=11) "amount_paid", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=28) "SetMockAppUserBalanceRequest": (*main.Message)(0xc000484940)({ - fullName: (string) (len=28) "SetMockAppUserBalanceRequest", - name: (string) (len=28) "SetMockAppUserBalanceRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124cf0)({ - name: (string) (len=15) "user_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124d20)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=18) "NewAddressResponse": (*main.Message)(0xc000484a00)({ + (string) (len=18) "NewAddressResponse": (*main.Message)(0xc00048c980)({ fullName: (string) (len=18) "NewAddressResponse", name: (string) (len=18) "NewAddressResponse", fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124db0)({ + (*main.Field)(0xc00008e6c0)({ name: (string) (len=7) "address", kind: (string) (len=6) "string", isMap: (bool) false, @@ -1780,337 +1171,11 @@ }) } }), - (string) (len=18) "PayAddressResponse": (*main.Message)(0xc000484a80)({ - fullName: (string) (len=18) "PayAddressResponse", - name: (string) (len=18) "PayAddressResponse", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124e70)({ - name: (string) (len=4) "txId", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=17) "PayInvoiceRequest": (*main.Message)(0xc000484bc0)({ - fullName: (string) (len=17) "PayInvoiceRequest", - name: (string) (len=17) "PayInvoiceRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124f90)({ - name: (string) (len=7) "invoice", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124fc0)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=17) "LiveUserOperation": (*main.Message)(0xc000485100)({ - fullName: (string) (len=17) "LiveUserOperation", - name: (string) (len=17) "LiveUserOperation", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc0001259e0)({ - name: (string) (len=2) "id", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125a10)({ - name: (string) (len=9) "operation", - kind: (string) (len=13) "UserOperation", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }) - } - }), - (string) (len=20) "AddAppInvoiceRequest": (*main.Message)(0xc000484740)({ - fullName: (string) (len=20) "AddAppInvoiceRequest", - name: (string) (len=20) "AddAppInvoiceRequest", - fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000124930)({ - name: (string) (len=16) "payer_identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124960)({ - name: (string) (len=17) "http_callback_url", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000124990)({ - name: (string) (len=11) "invoice_req", - kind: (string) (len=17) "NewInvoiceRequest", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) true, - isOptional: (bool) false - }) - } - }), - (string) (len=25) "LnurlWithdrawInfoResponse": (*main.Message)(0xc000484d40)({ - fullName: (string) (len=25) "LnurlWithdrawInfoResponse", - name: (string) (len=25) "LnurlWithdrawInfoResponse", - fields: ([]*main.Field) (len=8 cap=8) { - (*main.Field)(0xc0001251a0)({ - name: (string) (len=3) "tag", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001251d0)({ - name: (string) (len=8) "callback", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125200)({ - name: (string) (len=2) "k1", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125230)({ - name: (string) (len=18) "defaultDescription", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125260)({ - name: (string) (len=15) "minWithdrawable", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125290)({ - name: (string) (len=15) "maxWithdrawable", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001252c0)({ - name: (string) (len=12) "balanceCheck", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001252f0)({ - name: (string) (len=7) "payLink", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=25) "GetProductBuyLinkResponse": (*main.Message)(0xc0004850c0)({ - fullName: (string) (len=25) "GetProductBuyLinkResponse", - name: (string) (len=25) "GetProductBuyLinkResponse", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc0001259b0)({ - name: (string) (len=4) "link", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=5) "Empty": (*main.Message)(0xc000484480)({ - fullName: (string) (len=5) "Empty", - name: (string) (len=5) "Empty", - fields: ([]*main.Field) - }), - (string) (len=17) "NewAddressRequest": (*main.Message)(0xc0004849c0)({ - fullName: (string) (len=17) "NewAddressRequest", - name: (string) (len=17) "NewAddressRequest", - fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124d80)({ - name: (string) (len=11) "addressType", - kind: (string) (len=11) "AddressType", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) true, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=18) "PayInvoiceResponse": (*main.Message)(0xc000484c00)({ - fullName: (string) (len=18) "PayInvoiceResponse", - name: (string) (len=18) "PayInvoiceResponse", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124ff0)({ - name: (string) (len=8) "preimage", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125020)({ - name: (string) (len=11) "amount_paid", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=18) "OpenChannelRequest": (*main.Message)(0xc000484c40)({ - fullName: (string) (len=18) "OpenChannelRequest", - name: (string) (len=18) "OpenChannelRequest", - fields: ([]*main.Field) (len=4 cap=4) { - (*main.Field)(0xc000125050)({ - name: (string) (len=11) "destination", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125080)({ - name: (string) (len=13) "fundingAmount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001250b0)({ - name: (string) (len=10) "pushAmount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001250e0)({ - name: (string) (len=12) "closeAddress", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=13) "UserOperation": (*main.Message)(0xc000484f40)({ - fullName: (string) (len=13) "UserOperation", - name: (string) (len=13) "UserOperation", - fields: ([]*main.Field) (len=5 cap=8) { - (*main.Field)(0xc000125620)({ - name: (string) (len=10) "paidAtUnix", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125650)({ - name: (string) (len=4) "type", - kind: (string) (len=17) "UserOperationType", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) true, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125680)({ - name: (string) (len=7) "inbound", - kind: (string) (len=4) "bool", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001256b0)({ - name: (string) (len=6) "amount", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001256e0)({ - name: (string) (len=10) "identifier", - kind: (string) (len=6) "string", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }) - } - }), - (string) (len=14) "UserOperations": (*main.Message)(0xc000484f80)({ + (string) (len=14) "UserOperations": (*main.Message)(0xc00048cf00)({ fullName: (string) (len=14) "UserOperations", name: (string) (len=14) "UserOperations", fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000125710)({ + (*main.Field)(0xc00008fb60)({ name: (string) (len=9) "fromIndex", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2119,7 +1184,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000125740)({ + (*main.Field)(0xc00008fdd0)({ name: (string) (len=7) "toIndex", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2128,7 +1193,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000125770)({ + (*main.Field)(0xc00008fe00)({ name: (string) (len=10) "operations", kind: (string) (len=13) "UserOperation", isMap: (bool) false, @@ -2139,11 +1204,11 @@ }) } }), - (string) (len=7) "Product": (*main.Message)(0xc000485080)({ + (string) (len=7) "Product": (*main.Message)(0xc00048d000)({ fullName: (string) (len=7) "Product", name: (string) (len=7) "Product", fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000125920)({ + (*main.Field)(0xc0001f8690)({ name: (string) (len=2) "id", kind: (string) (len=6) "string", isMap: (bool) false, @@ -2152,7 +1217,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000125950)({ + (*main.Field)(0xc0001f86c0)({ name: (string) (len=4) "name", kind: (string) (len=6) "string", isMap: (bool) false, @@ -2161,7 +1226,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000125980)({ + (*main.Field)(0xc0001f87e0)({ name: (string) (len=10) "price_sats", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2172,12 +1237,12 @@ }) } }), - (string) (len=24) "GetUserOperationsRequest": (*main.Message)(0xc000484ec0)({ - fullName: (string) (len=24) "GetUserOperationsRequest", - name: (string) (len=24) "GetUserOperationsRequest", - fields: ([]*main.Field) (len=6 cap=8) { - (*main.Field)(0xc000125500)({ - name: (string) (len=21) "latestIncomingInvoice", + (string) (len=17) "NewInvoiceRequest": (*main.Message)(0xc00048ca40)({ + fullName: (string) (len=17) "NewInvoiceRequest", + name: (string) (len=17) "NewInvoiceRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008ee70)({ + name: (string) (len=10) "amountSats", kind: (string) (len=5) "int64", isMap: (bool) false, isArray: (bool) false, @@ -2185,44 +1250,23 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000125530)({ - name: (string) (len=21) "latestOutgoingInvoice", - kind: (string) (len=5) "int64", + (*main.Field)(0xc00008eed0)({ + name: (string) (len=4) "memo", + kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, isEnum: (bool) false, isMessage: (bool) false, isOptional: (bool) false - }), - (*main.Field)(0xc000125560)({ - name: (string) (len=16) "latestIncomingTx", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc000125590)({ - name: (string) (len=16) "latestOutgoingTx", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001255c0)({ - name: (string) (len=31) "latestIncomingUserToUserPayment", - kind: (string) (len=5) "int64", - isMap: (bool) false, - isArray: (bool) false, - isEnum: (bool) false, - isMessage: (bool) false, - isOptional: (bool) false - }), - (*main.Field)(0xc0001255f0)({ - name: (string) (len=31) "latestOutgoingUserToUserPayment", + }) + } + }), + (string) (len=17) "LndGetInfoRequest": (*main.Message)(0xc00048c480)({ + fullName: (string) (len=17) "LndGetInfoRequest", + name: (string) (len=17) "LndGetInfoRequest", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc0003d5920)({ + name: (string) (len=6) "nodeId", kind: (string) (len=5) "int64", isMap: (bool) false, isArray: (bool) false, @@ -2232,12 +1276,12 @@ }) } }), - (string) (len=27) "SetMockInvoiceAsPaidRequest": (*main.Message)(0xc000484540)({ - fullName: (string) (len=27) "SetMockInvoiceAsPaidRequest", - name: (string) (len=27) "SetMockInvoiceAsPaidRequest", + (string) (len=13) "AddAppRequest": (*main.Message)(0xc00048c540)({ + fullName: (string) (len=13) "AddAppRequest", + name: (string) (len=13) "AddAppRequest", fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc0001245a0)({ - name: (string) (len=7) "invoice", + (*main.Field)(0xc0003d59e0)({ + name: (string) (len=4) "name", kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, @@ -2245,7 +1289,121 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc0001245d0)({ + (*main.Field)(0xc0003d5a10)({ + name: (string) (len=19) "allow_user_creation", + kind: (string) (len=4) "bool", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=14) "AuthAppRequest": (*main.Message)(0xc00048c580)({ + fullName: (string) (len=14) "AuthAppRequest", + name: (string) (len=14) "AuthAppRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0003d5a40)({ + name: (string) (len=4) "name", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5a70)({ + name: (string) (len=19) "allow_user_creation", + kind: (string) (len=4) "bool", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) true + }) + } + }), + (string) (len=24) "AddAppUserInvoiceRequest": (*main.Message)(0xc00048c700)({ + fullName: (string) (len=24) "AddAppUserInvoiceRequest", + name: (string) (len=24) "AddAppUserInvoiceRequest", + fields: ([]*main.Field) (len=4 cap=4) { + (*main.Field)(0xc0003d5d70)({ + name: (string) (len=19) "receiver_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5da0)({ + name: (string) (len=16) "payer_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5dd0)({ + name: (string) (len=17) "http_callback_url", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5e00)({ + name: (string) (len=11) "invoice_req", + kind: (string) (len=17) "NewInvoiceRequest", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }) + } + }), + (string) (len=25) "PayAppUserInvoiceResponse": (*main.Message)(0xc00048c7c0)({ + fullName: (string) (len=25) "PayAppUserInvoiceResponse", + name: (string) (len=25) "PayAppUserInvoiceResponse", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0003d5ef0)({ + name: (string) (len=8) "preimage", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5f20)({ + name: (string) (len=11) "amount_paid", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=30) "SendAppUserToAppPaymentRequest": (*main.Message)(0xc00048c840)({ + fullName: (string) (len=30) "SendAppUserToAppPaymentRequest", + name: (string) (len=30) "SendAppUserToAppPaymentRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008e1e0)({ + name: (string) (len=20) "from_user_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008e210)({ name: (string) (len=6) "amount", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2256,11 +1414,56 @@ }) } }), - (string) (len=18) "LndGetInfoResponse": (*main.Message)(0xc000484580)({ + (string) (len=18) "PayAddressResponse": (*main.Message)(0xc00048ca00)({ + fullName: (string) (len=18) "PayAddressResponse", + name: (string) (len=18) "PayAddressResponse", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008ee40)({ + name: (string) (len=4) "txId", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=20) "DecodeInvoiceRequest": (*main.Message)(0xc00048cac0)({ + fullName: (string) (len=20) "DecodeInvoiceRequest", + name: (string) (len=20) "DecodeInvoiceRequest", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008ef30)({ + name: (string) (len=7) "invoice", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=21) "DecodeInvoiceResponse": (*main.Message)(0xc00048cb00)({ + fullName: (string) (len=21) "DecodeInvoiceResponse", + name: (string) (len=21) "DecodeInvoiceResponse", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008ef60)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=18) "LndGetInfoResponse": (*main.Message)(0xc00048c500)({ fullName: (string) (len=18) "LndGetInfoResponse", name: (string) (len=18) "LndGetInfoResponse", fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124600)({ + (*main.Field)(0xc0003d59b0)({ name: (string) (len=5) "alias", kind: (string) (len=6) "string", isMap: (bool) false, @@ -2271,21 +1474,72 @@ }) } }), - (string) (len=7) "AuthApp": (*main.Message)(0xc000484680)({ - fullName: (string) (len=7) "AuthApp", - name: (string) (len=7) "AuthApp", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc0001247b0)({ - name: (string) (len=3) "app", - kind: (string) (len=11) "Application", + (string) (len=20) "AddAppInvoiceRequest": (*main.Message)(0xc00048c6c0)({ + fullName: (string) (len=20) "AddAppInvoiceRequest", + name: (string) (len=20) "AddAppInvoiceRequest", + fields: ([]*main.Field) (len=3 cap=4) { + (*main.Field)(0xc0003d5ce0)({ + name: (string) (len=16) "payer_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5d10)({ + name: (string) (len=17) "http_callback_url", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5d40)({ + name: (string) (len=11) "invoice_req", + kind: (string) (len=17) "NewInvoiceRequest", isMap: (bool) false, isArray: (bool) false, isEnum: (bool) false, isMessage: (bool) true, isOptional: (bool) false + }) + } + }), + (string) (len=11) "Application": (*main.Message)(0xc00048c5c0)({ + fullName: (string) (len=11) "Application", + name: (string) (len=11) "Application", + fields: ([]*main.Field) (len=4 cap=4) { + (*main.Field)(0xc0003d5aa0)({ + name: (string) (len=4) "name", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false }), - (*main.Field)(0xc0001247e0)({ - name: (string) (len=10) "auth_token", + (*main.Field)(0xc0003d5ad0)({ + name: (string) (len=2) "id", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5b00)({ + name: (string) (len=7) "balance", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5b30)({ + name: (string) (len=4) "npub", kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, @@ -2295,11 +1549,11 @@ }) } }), - (string) (len=17) "GetAppUserRequest": (*main.Message)(0xc0004847c0)({ + (string) (len=17) "GetAppUserRequest": (*main.Message)(0xc00048c740)({ fullName: (string) (len=17) "GetAppUserRequest", name: (string) (len=17) "GetAppUserRequest", fields: ([]*main.Field) (len=1 cap=1) { - (*main.Field)(0xc000124a80)({ + (*main.Field)(0xc0003d5e30)({ name: (string) (len=15) "user_identifier", kind: (string) (len=6) "string", isMap: (bool) false, @@ -2310,12 +1564,12 @@ }) } }), - (string) (len=30) "SendAppUserToAppPaymentRequest": (*main.Message)(0xc0004848c0)({ - fullName: (string) (len=30) "SendAppUserToAppPaymentRequest", - name: (string) (len=30) "SendAppUserToAppPaymentRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124c30)({ - name: (string) (len=20) "from_user_identifier", + (string) (len=24) "PayAppUserInvoiceRequest": (*main.Message)(0xc00048c780)({ + fullName: (string) (len=24) "PayAppUserInvoiceRequest", + name: (string) (len=24) "PayAppUserInvoiceRequest", + fields: ([]*main.Field) (len=3 cap=4) { + (*main.Field)(0xc0003d5e60)({ + name: (string) (len=15) "user_identifier", kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, @@ -2323,7 +1577,16 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124c60)({ + (*main.Field)(0xc0003d5e90)({ + name: (string) (len=7) "invoice", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5ec0)({ name: (string) (len=6) "amount", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2334,11 +1597,395 @@ }) } }), - (string) (len=17) "PayAddressRequest": (*main.Message)(0xc000484a40)({ + (string) (len=17) "LiveUserOperation": (*main.Message)(0xc00048d080)({ + fullName: (string) (len=17) "LiveUserOperation", + name: (string) (len=17) "LiveUserOperation", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0001f8840)({ + name: (string) (len=2) "id", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8870)({ + name: (string) (len=9) "operation", + kind: (string) (len=13) "UserOperation", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }) + } + }), + (string) (len=27) "SetMockInvoiceAsPaidRequest": (*main.Message)(0xc00048c4c0)({ + fullName: (string) (len=27) "SetMockInvoiceAsPaidRequest", + name: (string) (len=27) "SetMockInvoiceAsPaidRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0003d5950)({ + name: (string) (len=7) "invoice", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5980)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=28) "SetMockAppUserBalanceRequest": (*main.Message)(0xc00048c8c0)({ + fullName: (string) (len=28) "SetMockAppUserBalanceRequest", + name: (string) (len=28) "SetMockAppUserBalanceRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008e300)({ + name: (string) (len=15) "user_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008e330)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=18) "NewInvoiceResponse": (*main.Message)(0xc00048ca80)({ + fullName: (string) (len=18) "NewInvoiceResponse", + name: (string) (len=18) "NewInvoiceResponse", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008ef00)({ + name: (string) (len=7) "invoice", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=19) "OpenChannelResponse": (*main.Message)(0xc00048cc00)({ + fullName: (string) (len=19) "OpenChannelResponse", + name: (string) (len=19) "OpenChannelResponse", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008f260)({ + name: (string) (len=9) "channelId", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "LnurlLinkResponse": (*main.Message)(0xc00048cc40)({ + fullName: (string) (len=17) "LnurlLinkResponse", + name: (string) (len=17) "LnurlLinkResponse", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008f290)({ + name: (string) (len=5) "lnurl", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f2c0)({ + name: (string) (len=2) "k1", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=8) "UserInfo": (*main.Message)(0xc00048cdc0)({ + fullName: (string) (len=8) "UserInfo", + name: (string) (len=8) "UserInfo", + fields: ([]*main.Field) (len=3 cap=4) { + (*main.Field)(0xc00008f5c0)({ + name: (string) (len=6) "userId", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f5f0)({ + name: (string) (len=7) "balance", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f620)({ + name: (string) (len=16) "max_withdrawable", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=24) "GetUserOperationsRequest": (*main.Message)(0xc00048ce40)({ + fullName: (string) (len=24) "GetUserOperationsRequest", + name: (string) (len=24) "GetUserOperationsRequest", + fields: ([]*main.Field) (len=6 cap=8) { + (*main.Field)(0xc00008f650)({ + name: (string) (len=21) "latestIncomingInvoice", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f680)({ + name: (string) (len=21) "latestOutgoingInvoice", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f830)({ + name: (string) (len=16) "latestIncomingTx", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f860)({ + name: (string) (len=16) "latestOutgoingTx", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f890)({ + name: (string) (len=31) "latestIncomingUserToUserPayment", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f8c0)({ + name: (string) (len=31) "latestOutgoingUserToUserPayment", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "AddAppUserRequest": (*main.Message)(0xc00048c640)({ + fullName: (string) (len=17) "AddAppUserRequest", + name: (string) (len=17) "AddAppUserRequest", + fields: ([]*main.Field) (len=3 cap=4) { + (*main.Field)(0xc0003d5bc0)({ + name: (string) (len=10) "identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5bf0)({ + name: (string) (len=14) "fail_if_exists", + kind: (string) (len=4) "bool", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5c20)({ + name: (string) (len=7) "balance", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "NewAddressRequest": (*main.Message)(0xc00048c940)({ + fullName: (string) (len=17) "NewAddressRequest", + name: (string) (len=17) "NewAddressRequest", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008e690)({ + name: (string) (len=11) "addressType", + kind: (string) (len=11) "AddressType", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) true, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "PayInvoiceRequest": (*main.Message)(0xc00048cb40)({ + fullName: (string) (len=17) "PayInvoiceRequest", + name: (string) (len=17) "PayInvoiceRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008ef90)({ + name: (string) (len=7) "invoice", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f080)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=25) "LnurlWithdrawInfoResponse": (*main.Message)(0xc00048ccc0)({ + fullName: (string) (len=25) "LnurlWithdrawInfoResponse", + name: (string) (len=25) "LnurlWithdrawInfoResponse", + fields: ([]*main.Field) (len=8 cap=8) { + (*main.Field)(0xc00008f2f0)({ + name: (string) (len=3) "tag", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f320)({ + name: (string) (len=8) "callback", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f350)({ + name: (string) (len=2) "k1", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f380)({ + name: (string) (len=18) "defaultDescription", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f3b0)({ + name: (string) (len=15) "minWithdrawable", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f3e0)({ + name: (string) (len=15) "maxWithdrawable", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f410)({ + name: (string) (len=12) "balanceCheck", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f440)({ + name: (string) (len=7) "payLink", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=25) "GetProductBuyLinkResponse": (*main.Message)(0xc00048d040)({ + fullName: (string) (len=25) "GetProductBuyLinkResponse", + name: (string) (len=25) "GetProductBuyLinkResponse", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc0001f8810)({ + name: (string) (len=4) "link", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "PayAddressRequest": (*main.Message)(0xc00048c9c0)({ fullName: (string) (len=17) "PayAddressRequest", name: (string) (len=17) "PayAddressRequest", fields: ([]*main.Field) (len=3 cap=4) { - (*main.Field)(0xc000124de0)({ + (*main.Field)(0xc00008e750)({ name: (string) (len=7) "address", kind: (string) (len=6) "string", isMap: (bool) false, @@ -2347,7 +1994,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124e10)({ + (*main.Field)(0xc00008ede0)({ name: (string) (len=9) "amoutSats", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2356,7 +2003,7 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124e40)({ + (*main.Field)(0xc00008ee10)({ name: (string) (len=12) "satsPerVByte", kind: (string) (len=5) "int64", isMap: (bool) false, @@ -2367,12 +2014,21 @@ }) } }), - (string) (len=17) "NewInvoiceRequest": (*main.Message)(0xc000484ac0)({ - fullName: (string) (len=17) "NewInvoiceRequest", - name: (string) (len=17) "NewInvoiceRequest", - fields: ([]*main.Field) (len=2 cap=2) { - (*main.Field)(0xc000124ea0)({ - name: (string) (len=10) "amountSats", + (string) (len=18) "OpenChannelRequest": (*main.Message)(0xc00048cbc0)({ + fullName: (string) (len=18) "OpenChannelRequest", + name: (string) (len=18) "OpenChannelRequest", + fields: ([]*main.Field) (len=4 cap=4) { + (*main.Field)(0xc00008f1a0)({ + name: (string) (len=11) "destination", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f1d0)({ + name: (string) (len=13) "fundingAmount", kind: (string) (len=5) "int64", isMap: (bool) false, isArray: (bool) false, @@ -2380,8 +2036,17 @@ isMessage: (bool) false, isOptional: (bool) false }), - (*main.Field)(0xc000124ed0)({ - name: (string) (len=4) "memo", + (*main.Field)(0xc00008f200)({ + name: (string) (len=10) "pushAmount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f230)({ + name: (string) (len=12) "closeAddress", kind: (string) (len=6) "string", isMap: (bool) false, isArray: (bool) false, @@ -2390,6 +2055,341 @@ isOptional: (bool) false }) } + }), + (string) (len=22) "HandleLnurlPayResponse": (*main.Message)(0xc00048cd80)({ + fullName: (string) (len=22) "HandleLnurlPayResponse", + name: (string) (len=22) "HandleLnurlPayResponse", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008f560)({ + name: (string) (len=2) "pr", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f590)({ + name: (string) (len=6) "routes", + kind: (string) (len=5) "Empty", + isMap: (bool) false, + isArray: (bool) true, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }) + } + }), + (string) (len=13) "UserOperation": (*main.Message)(0xc00048cec0)({ + fullName: (string) (len=13) "UserOperation", + name: (string) (len=13) "UserOperation", + fields: ([]*main.Field) (len=5 cap=8) { + (*main.Field)(0xc00008f8f0)({ + name: (string) (len=10) "paidAtUnix", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f920)({ + name: (string) (len=4) "type", + kind: (string) (len=17) "UserOperationType", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) true, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008fad0)({ + name: (string) (len=7) "inbound", + kind: (string) (len=4) "bool", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008fb00)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008fb30)({ + name: (string) (len=10) "identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=25) "GetUserOperationsResponse": (*main.Message)(0xc00048cf80)({ + fullName: (string) (len=25) "GetUserOperationsResponse", + name: (string) (len=25) "GetUserOperationsResponse", + fields: ([]*main.Field) (len=6 cap=8) { + (*main.Field)(0xc00008fe30)({ + name: (string) (len=31) "latestOutgoingInvoiceOperations", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc00008fe60)({ + name: (string) (len=31) "latestIncomingInvoiceOperations", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8000)({ + name: (string) (len=26) "latestOutgoingTxOperations", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8030)({ + name: (string) (len=26) "latestIncomingTxOperations", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8060)({ + name: (string) (len=32) "latestOutgoingUserToUserPayemnts", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8090)({ + name: (string) (len=32) "latestIncomingUserToUserPayemnts", + kind: (string) (len=14) "UserOperations", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }) + } + }), + (string) (len=5) "Empty": (*main.Message)(0xc00048c400)({ + fullName: (string) (len=5) "Empty", + name: (string) (len=5) "Empty", + fields: ([]*main.Field) + }), + (string) (len=7) "AuthApp": (*main.Message)(0xc00048c600)({ + fullName: (string) (len=7) "AuthApp", + name: (string) (len=7) "AuthApp", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0003d5b60)({ + name: (string) (len=3) "app", + kind: (string) (len=11) "Application", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) true, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5b90)({ + name: (string) (len=10) "auth_token", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=34) "SendAppUserToAppUserPaymentRequest": (*main.Message)(0xc00048c800)({ + fullName: (string) (len=34) "SendAppUserToAppUserPaymentRequest", + name: (string) (len=34) "SendAppUserToAppUserPaymentRequest", + fields: ([]*main.Field) (len=3 cap=4) { + (*main.Field)(0xc0003d5f50)({ + name: (string) (len=20) "from_user_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5f80)({ + name: (string) (len=18) "to_user_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0003d5fb0)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=26) "GetAppUserLNURLInfoRequest": (*main.Message)(0xc00048c880)({ + fullName: (string) (len=26) "GetAppUserLNURLInfoRequest", + name: (string) (len=26) "GetAppUserLNURLInfoRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008e270)({ + name: (string) (len=15) "user_identifier", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008e2a0)({ + name: (string) (len=17) "base_url_override", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=24) "SetMockAppBalanceRequest": (*main.Message)(0xc00048c900)({ + fullName: (string) (len=24) "SetMockAppBalanceRequest", + name: (string) (len=24) "SetMockAppBalanceRequest", + fields: ([]*main.Field) (len=1 cap=1) { + (*main.Field)(0xc00008e570)({ + name: (string) (len=6) "amount", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=18) "PayInvoiceResponse": (*main.Message)(0xc00048cb80)({ + fullName: (string) (len=18) "PayInvoiceResponse", + name: (string) (len=18) "PayInvoiceResponse", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc00008f140)({ + name: (string) (len=8) "preimage", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f170)({ + name: (string) (len=11) "amount_paid", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=20) "LnurlPayInfoResponse": (*main.Message)(0xc00048cd40)({ + fullName: (string) (len=20) "LnurlPayInfoResponse", + name: (string) (len=20) "LnurlPayInfoResponse", + fields: ([]*main.Field) (len=5 cap=8) { + (*main.Field)(0xc00008f470)({ + name: (string) (len=3) "tag", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f4a0)({ + name: (string) (len=8) "callback", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f4d0)({ + name: (string) (len=11) "maxSendable", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f500)({ + name: (string) (len=11) "minSendable", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc00008f530)({ + name: (string) (len=8) "metadata", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } + }), + (string) (len=17) "AddProductRequest": (*main.Message)(0xc00048cfc0)({ + fullName: (string) (len=17) "AddProductRequest", + name: (string) (len=17) "AddProductRequest", + fields: ([]*main.Field) (len=2 cap=2) { + (*main.Field)(0xc0001f8630)({ + name: (string) (len=4) "name", + kind: (string) (len=6) "string", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }), + (*main.Field)(0xc0001f8660)({ + name: (string) (len=10) "price_sats", + kind: (string) (len=5) "int64", + isMap: (bool) false, + isArray: (bool) false, + isEnum: (bool) false, + isMessage: (bool) false, + isOptional: (bool) false + }) + } }) } diff --git a/proto/autogenerated/ts/nostr_client.ts b/proto/autogenerated/ts/nostr_client.ts index 81a71f38..4dfcc671 100644 --- a/proto/autogenerated/ts/nostr_client.ts +++ b/proto/autogenerated/ts/nostr_client.ts @@ -208,7 +208,7 @@ export default (params: NostrClientParams, send: (to:string, message: NostrRequ if (data.status === 'ERROR' && typeof data.reason === 'string') return cb(data) if (data.status === 'OK') { const result = data - if(!params.checkResult) return { status: 'OK', ...result } + if(!params.checkResult) return cb({ status: 'OK', ...result }) const error = Types.LiveUserOperationValidate(result) if (error === null) { return cb({ status: 'OK', ...result }) } else return cb({ status: 'ERROR', reason: error.message }) } diff --git a/proto/autogenerated/ts/types.ts b/proto/autogenerated/ts/types.ts index 068a6bac..94d03d69 100644 --- a/proto/autogenerated/ts/types.ts +++ b/proto/autogenerated/ts/types.ts @@ -3,9 +3,9 @@ export type GuestContext = { } export type UserContext = { - user_id: string app_id: string app_user_id: string + user_id: string } export type AdminContext = { admin_id: string @@ -261,6 +261,713 @@ export type OptionsBaseMessage = { allOptionalsAreSet?: true } +export type LndGetInfoResponse = { + alias: string +} +export const LndGetInfoResponseOptionalFields: [] = [] +export type LndGetInfoResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + alias_CustomCheck?: (v: string) => boolean +} +export const LndGetInfoResponseValidate = (o?: LndGetInfoResponse, opts: LndGetInfoResponseOptions = {}, path: string = 'LndGetInfoResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.alias !== 'string') return new Error(`${path}.alias: is not a string`) + if (opts.alias_CustomCheck && !opts.alias_CustomCheck(o.alias)) return new Error(`${path}.alias: custom check failed`) + + return null +} + +export type AddAppInvoiceRequest = { + payer_identifier: string + http_callback_url: string + invoice_req: NewInvoiceRequest +} +export const AddAppInvoiceRequestOptionalFields: [] = [] +export type AddAppInvoiceRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + payer_identifier_CustomCheck?: (v: string) => boolean + http_callback_url_CustomCheck?: (v: string) => boolean + invoice_req_Options?: NewInvoiceRequestOptions +} +export const AddAppInvoiceRequestValidate = (o?: AddAppInvoiceRequest, opts: AddAppInvoiceRequestOptions = {}, path: string = 'AddAppInvoiceRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.payer_identifier !== 'string') return new Error(`${path}.payer_identifier: is not a string`) + if (opts.payer_identifier_CustomCheck && !opts.payer_identifier_CustomCheck(o.payer_identifier)) return new Error(`${path}.payer_identifier: custom check failed`) + + if (typeof o.http_callback_url !== 'string') return new Error(`${path}.http_callback_url: is not a string`) + if (opts.http_callback_url_CustomCheck && !opts.http_callback_url_CustomCheck(o.http_callback_url)) return new Error(`${path}.http_callback_url: custom check failed`) + + const invoice_reqErr = NewInvoiceRequestValidate(o.invoice_req, opts.invoice_req_Options, `${path}.invoice_req`) + if (invoice_reqErr !== null) return invoice_reqErr + + + return null +} + +export type Application = { + name: string + id: string + balance: number + npub: string +} +export const ApplicationOptionalFields: [] = [] +export type ApplicationOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + name_CustomCheck?: (v: string) => boolean + id_CustomCheck?: (v: string) => boolean + balance_CustomCheck?: (v: number) => boolean + npub_CustomCheck?: (v: string) => boolean +} +export const ApplicationValidate = (o?: Application, opts: ApplicationOptions = {}, path: string = 'Application::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) + if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) + + if (typeof o.id !== 'string') return new Error(`${path}.id: is not a string`) + if (opts.id_CustomCheck && !opts.id_CustomCheck(o.id)) return new Error(`${path}.id: custom check failed`) + + if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) + if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) + + if (typeof o.npub !== 'string') return new Error(`${path}.npub: is not a string`) + if (opts.npub_CustomCheck && !opts.npub_CustomCheck(o.npub)) return new Error(`${path}.npub: custom check failed`) + + return null +} + +export type GetAppUserRequest = { + user_identifier: string +} +export const GetAppUserRequestOptionalFields: [] = [] +export type GetAppUserRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + user_identifier_CustomCheck?: (v: string) => boolean +} +export const GetAppUserRequestValidate = (o?: GetAppUserRequest, opts: GetAppUserRequestOptions = {}, path: string = 'GetAppUserRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) + if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) + + return null +} + +export type PayAppUserInvoiceRequest = { + user_identifier: string + invoice: string + amount: number +} +export const PayAppUserInvoiceRequestOptionalFields: [] = [] +export type PayAppUserInvoiceRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + user_identifier_CustomCheck?: (v: string) => boolean + invoice_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean +} +export const PayAppUserInvoiceRequestValidate = (o?: PayAppUserInvoiceRequest, opts: PayAppUserInvoiceRequestOptions = {}, path: string = 'PayAppUserInvoiceRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) + if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) + + if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) + if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + return null +} + +export type LiveUserOperation = { + id: string + operation: UserOperation +} +export const LiveUserOperationOptionalFields: [] = [] +export type LiveUserOperationOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + id_CustomCheck?: (v: string) => boolean + operation_Options?: UserOperationOptions +} +export const LiveUserOperationValidate = (o?: LiveUserOperation, opts: LiveUserOperationOptions = {}, path: string = 'LiveUserOperation::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.id !== 'string') return new Error(`${path}.id: is not a string`) + if (opts.id_CustomCheck && !opts.id_CustomCheck(o.id)) return new Error(`${path}.id: custom check failed`) + + const operationErr = UserOperationValidate(o.operation, opts.operation_Options, `${path}.operation`) + if (operationErr !== null) return operationErr + + + return null +} + +export type SetMockInvoiceAsPaidRequest = { + invoice: string + amount: number +} +export const SetMockInvoiceAsPaidRequestOptionalFields: [] = [] +export type SetMockInvoiceAsPaidRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + invoice_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean +} +export const SetMockInvoiceAsPaidRequestValidate = (o?: SetMockInvoiceAsPaidRequest, opts: SetMockInvoiceAsPaidRequestOptions = {}, path: string = 'SetMockInvoiceAsPaidRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) + if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + return null +} + +export type SetMockAppUserBalanceRequest = { + user_identifier: string + amount: number +} +export const SetMockAppUserBalanceRequestOptionalFields: [] = [] +export type SetMockAppUserBalanceRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + user_identifier_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean +} +export const SetMockAppUserBalanceRequestValidate = (o?: SetMockAppUserBalanceRequest, opts: SetMockAppUserBalanceRequestOptions = {}, path: string = 'SetMockAppUserBalanceRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) + if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + return null +} + +export type NewInvoiceResponse = { + invoice: string +} +export const NewInvoiceResponseOptionalFields: [] = [] +export type NewInvoiceResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + invoice_CustomCheck?: (v: string) => boolean +} +export const NewInvoiceResponseValidate = (o?: NewInvoiceResponse, opts: NewInvoiceResponseOptions = {}, path: string = 'NewInvoiceResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) + if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + + return null +} + +export type OpenChannelResponse = { + channelId: string +} +export const OpenChannelResponseOptionalFields: [] = [] +export type OpenChannelResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + channelId_CustomCheck?: (v: string) => boolean +} +export const OpenChannelResponseValidate = (o?: OpenChannelResponse, opts: OpenChannelResponseOptions = {}, path: string = 'OpenChannelResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.channelId !== 'string') return new Error(`${path}.channelId: is not a string`) + if (opts.channelId_CustomCheck && !opts.channelId_CustomCheck(o.channelId)) return new Error(`${path}.channelId: custom check failed`) + + return null +} + +export type LnurlLinkResponse = { + lnurl: string + k1: string +} +export const LnurlLinkResponseOptionalFields: [] = [] +export type LnurlLinkResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + lnurl_CustomCheck?: (v: string) => boolean + k1_CustomCheck?: (v: string) => boolean +} +export const LnurlLinkResponseValidate = (o?: LnurlLinkResponse, opts: LnurlLinkResponseOptions = {}, path: string = 'LnurlLinkResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.lnurl !== 'string') return new Error(`${path}.lnurl: is not a string`) + if (opts.lnurl_CustomCheck && !opts.lnurl_CustomCheck(o.lnurl)) return new Error(`${path}.lnurl: custom check failed`) + + if (typeof o.k1 !== 'string') return new Error(`${path}.k1: is not a string`) + if (opts.k1_CustomCheck && !opts.k1_CustomCheck(o.k1)) return new Error(`${path}.k1: custom check failed`) + + return null +} + +export type UserInfo = { + userId: string + balance: number + max_withdrawable: number +} +export const UserInfoOptionalFields: [] = [] +export type UserInfoOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + userId_CustomCheck?: (v: string) => boolean + balance_CustomCheck?: (v: number) => boolean + max_withdrawable_CustomCheck?: (v: number) => boolean +} +export const UserInfoValidate = (o?: UserInfo, opts: UserInfoOptions = {}, path: string = 'UserInfo::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.userId !== 'string') return new Error(`${path}.userId: is not a string`) + if (opts.userId_CustomCheck && !opts.userId_CustomCheck(o.userId)) return new Error(`${path}.userId: custom check failed`) + + if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) + if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) + + if (typeof o.max_withdrawable !== 'number') return new Error(`${path}.max_withdrawable: is not a number`) + if (opts.max_withdrawable_CustomCheck && !opts.max_withdrawable_CustomCheck(o.max_withdrawable)) return new Error(`${path}.max_withdrawable: custom check failed`) + + return null +} + +export type GetUserOperationsRequest = { + latestIncomingInvoice: number + latestOutgoingInvoice: number + latestIncomingTx: number + latestOutgoingTx: number + latestIncomingUserToUserPayment: number + latestOutgoingUserToUserPayment: number +} +export const GetUserOperationsRequestOptionalFields: [] = [] +export type GetUserOperationsRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + latestIncomingInvoice_CustomCheck?: (v: number) => boolean + latestOutgoingInvoice_CustomCheck?: (v: number) => boolean + latestIncomingTx_CustomCheck?: (v: number) => boolean + latestOutgoingTx_CustomCheck?: (v: number) => boolean + latestIncomingUserToUserPayment_CustomCheck?: (v: number) => boolean + latestOutgoingUserToUserPayment_CustomCheck?: (v: number) => boolean +} +export const GetUserOperationsRequestValidate = (o?: GetUserOperationsRequest, opts: GetUserOperationsRequestOptions = {}, path: string = 'GetUserOperationsRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.latestIncomingInvoice !== 'number') return new Error(`${path}.latestIncomingInvoice: is not a number`) + if (opts.latestIncomingInvoice_CustomCheck && !opts.latestIncomingInvoice_CustomCheck(o.latestIncomingInvoice)) return new Error(`${path}.latestIncomingInvoice: custom check failed`) + + if (typeof o.latestOutgoingInvoice !== 'number') return new Error(`${path}.latestOutgoingInvoice: is not a number`) + if (opts.latestOutgoingInvoice_CustomCheck && !opts.latestOutgoingInvoice_CustomCheck(o.latestOutgoingInvoice)) return new Error(`${path}.latestOutgoingInvoice: custom check failed`) + + if (typeof o.latestIncomingTx !== 'number') return new Error(`${path}.latestIncomingTx: is not a number`) + if (opts.latestIncomingTx_CustomCheck && !opts.latestIncomingTx_CustomCheck(o.latestIncomingTx)) return new Error(`${path}.latestIncomingTx: custom check failed`) + + if (typeof o.latestOutgoingTx !== 'number') return new Error(`${path}.latestOutgoingTx: is not a number`) + if (opts.latestOutgoingTx_CustomCheck && !opts.latestOutgoingTx_CustomCheck(o.latestOutgoingTx)) return new Error(`${path}.latestOutgoingTx: custom check failed`) + + if (typeof o.latestIncomingUserToUserPayment !== 'number') return new Error(`${path}.latestIncomingUserToUserPayment: is not a number`) + if (opts.latestIncomingUserToUserPayment_CustomCheck && !opts.latestIncomingUserToUserPayment_CustomCheck(o.latestIncomingUserToUserPayment)) return new Error(`${path}.latestIncomingUserToUserPayment: custom check failed`) + + if (typeof o.latestOutgoingUserToUserPayment !== 'number') return new Error(`${path}.latestOutgoingUserToUserPayment: is not a number`) + if (opts.latestOutgoingUserToUserPayment_CustomCheck && !opts.latestOutgoingUserToUserPayment_CustomCheck(o.latestOutgoingUserToUserPayment)) return new Error(`${path}.latestOutgoingUserToUserPayment: custom check failed`) + + return null +} + +export type AddAppUserRequest = { + identifier: string + fail_if_exists: boolean + balance: number +} +export const AddAppUserRequestOptionalFields: [] = [] +export type AddAppUserRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + identifier_CustomCheck?: (v: string) => boolean + fail_if_exists_CustomCheck?: (v: boolean) => boolean + balance_CustomCheck?: (v: number) => boolean +} +export const AddAppUserRequestValidate = (o?: AddAppUserRequest, opts: AddAppUserRequestOptions = {}, path: string = 'AddAppUserRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) + if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) + + if (typeof o.fail_if_exists !== 'boolean') return new Error(`${path}.fail_if_exists: is not a boolean`) + if (opts.fail_if_exists_CustomCheck && !opts.fail_if_exists_CustomCheck(o.fail_if_exists)) return new Error(`${path}.fail_if_exists: custom check failed`) + + if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) + if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) + + return null +} + +export type NewAddressRequest = { + addressType: AddressType +} +export const NewAddressRequestOptionalFields: [] = [] +export type NewAddressRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + addressType_CustomCheck?: (v: AddressType) => boolean +} +export const NewAddressRequestValidate = (o?: NewAddressRequest, opts: NewAddressRequestOptions = {}, path: string = 'NewAddressRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (!enumCheckAddressType(o.addressType)) return new Error(`${path}.addressType: is not a valid AddressType`) + if (opts.addressType_CustomCheck && !opts.addressType_CustomCheck(o.addressType)) return new Error(`${path}.addressType: custom check failed`) + + return null +} + +export type PayInvoiceRequest = { + invoice: string + amount: number +} +export const PayInvoiceRequestOptionalFields: [] = [] +export type PayInvoiceRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + invoice_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean +} +export const PayInvoiceRequestValidate = (o?: PayInvoiceRequest, opts: PayInvoiceRequestOptions = {}, path: string = 'PayInvoiceRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) + if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + return null +} + +export type LnurlWithdrawInfoResponse = { + tag: string + callback: string + k1: string + defaultDescription: string + minWithdrawable: number + maxWithdrawable: number + balanceCheck: string + payLink: string +} +export const LnurlWithdrawInfoResponseOptionalFields: [] = [] +export type LnurlWithdrawInfoResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + tag_CustomCheck?: (v: string) => boolean + callback_CustomCheck?: (v: string) => boolean + k1_CustomCheck?: (v: string) => boolean + defaultDescription_CustomCheck?: (v: string) => boolean + minWithdrawable_CustomCheck?: (v: number) => boolean + maxWithdrawable_CustomCheck?: (v: number) => boolean + balanceCheck_CustomCheck?: (v: string) => boolean + payLink_CustomCheck?: (v: string) => boolean +} +export const LnurlWithdrawInfoResponseValidate = (o?: LnurlWithdrawInfoResponse, opts: LnurlWithdrawInfoResponseOptions = {}, path: string = 'LnurlWithdrawInfoResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.tag !== 'string') return new Error(`${path}.tag: is not a string`) + if (opts.tag_CustomCheck && !opts.tag_CustomCheck(o.tag)) return new Error(`${path}.tag: custom check failed`) + + if (typeof o.callback !== 'string') return new Error(`${path}.callback: is not a string`) + if (opts.callback_CustomCheck && !opts.callback_CustomCheck(o.callback)) return new Error(`${path}.callback: custom check failed`) + + if (typeof o.k1 !== 'string') return new Error(`${path}.k1: is not a string`) + if (opts.k1_CustomCheck && !opts.k1_CustomCheck(o.k1)) return new Error(`${path}.k1: custom check failed`) + + if (typeof o.defaultDescription !== 'string') return new Error(`${path}.defaultDescription: is not a string`) + if (opts.defaultDescription_CustomCheck && !opts.defaultDescription_CustomCheck(o.defaultDescription)) return new Error(`${path}.defaultDescription: custom check failed`) + + if (typeof o.minWithdrawable !== 'number') return new Error(`${path}.minWithdrawable: is not a number`) + if (opts.minWithdrawable_CustomCheck && !opts.minWithdrawable_CustomCheck(o.minWithdrawable)) return new Error(`${path}.minWithdrawable: custom check failed`) + + if (typeof o.maxWithdrawable !== 'number') return new Error(`${path}.maxWithdrawable: is not a number`) + if (opts.maxWithdrawable_CustomCheck && !opts.maxWithdrawable_CustomCheck(o.maxWithdrawable)) return new Error(`${path}.maxWithdrawable: custom check failed`) + + if (typeof o.balanceCheck !== 'string') return new Error(`${path}.balanceCheck: is not a string`) + if (opts.balanceCheck_CustomCheck && !opts.balanceCheck_CustomCheck(o.balanceCheck)) return new Error(`${path}.balanceCheck: custom check failed`) + + if (typeof o.payLink !== 'string') return new Error(`${path}.payLink: is not a string`) + if (opts.payLink_CustomCheck && !opts.payLink_CustomCheck(o.payLink)) return new Error(`${path}.payLink: custom check failed`) + + return null +} + +export type GetProductBuyLinkResponse = { + link: string +} +export const GetProductBuyLinkResponseOptionalFields: [] = [] +export type GetProductBuyLinkResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + link_CustomCheck?: (v: string) => boolean +} +export const GetProductBuyLinkResponseValidate = (o?: GetProductBuyLinkResponse, opts: GetProductBuyLinkResponseOptions = {}, path: string = 'GetProductBuyLinkResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.link !== 'string') return new Error(`${path}.link: is not a string`) + if (opts.link_CustomCheck && !opts.link_CustomCheck(o.link)) return new Error(`${path}.link: custom check failed`) + + return null +} + +export type PayAddressRequest = { + address: string + amoutSats: number + satsPerVByte: number +} +export const PayAddressRequestOptionalFields: [] = [] +export type PayAddressRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + address_CustomCheck?: (v: string) => boolean + amoutSats_CustomCheck?: (v: number) => boolean + satsPerVByte_CustomCheck?: (v: number) => boolean +} +export const PayAddressRequestValidate = (o?: PayAddressRequest, opts: PayAddressRequestOptions = {}, path: string = 'PayAddressRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.address !== 'string') return new Error(`${path}.address: is not a string`) + if (opts.address_CustomCheck && !opts.address_CustomCheck(o.address)) return new Error(`${path}.address: custom check failed`) + + if (typeof o.amoutSats !== 'number') return new Error(`${path}.amoutSats: is not a number`) + if (opts.amoutSats_CustomCheck && !opts.amoutSats_CustomCheck(o.amoutSats)) return new Error(`${path}.amoutSats: custom check failed`) + + if (typeof o.satsPerVByte !== 'number') return new Error(`${path}.satsPerVByte: is not a number`) + if (opts.satsPerVByte_CustomCheck && !opts.satsPerVByte_CustomCheck(o.satsPerVByte)) return new Error(`${path}.satsPerVByte: custom check failed`) + + return null +} + +export type OpenChannelRequest = { + destination: string + fundingAmount: number + pushAmount: number + closeAddress: string +} +export const OpenChannelRequestOptionalFields: [] = [] +export type OpenChannelRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + destination_CustomCheck?: (v: string) => boolean + fundingAmount_CustomCheck?: (v: number) => boolean + pushAmount_CustomCheck?: (v: number) => boolean + closeAddress_CustomCheck?: (v: string) => boolean +} +export const OpenChannelRequestValidate = (o?: OpenChannelRequest, opts: OpenChannelRequestOptions = {}, path: string = 'OpenChannelRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.destination !== 'string') return new Error(`${path}.destination: is not a string`) + if (opts.destination_CustomCheck && !opts.destination_CustomCheck(o.destination)) return new Error(`${path}.destination: custom check failed`) + + if (typeof o.fundingAmount !== 'number') return new Error(`${path}.fundingAmount: is not a number`) + if (opts.fundingAmount_CustomCheck && !opts.fundingAmount_CustomCheck(o.fundingAmount)) return new Error(`${path}.fundingAmount: custom check failed`) + + if (typeof o.pushAmount !== 'number') return new Error(`${path}.pushAmount: is not a number`) + if (opts.pushAmount_CustomCheck && !opts.pushAmount_CustomCheck(o.pushAmount)) return new Error(`${path}.pushAmount: custom check failed`) + + if (typeof o.closeAddress !== 'string') return new Error(`${path}.closeAddress: is not a string`) + if (opts.closeAddress_CustomCheck && !opts.closeAddress_CustomCheck(o.closeAddress)) return new Error(`${path}.closeAddress: custom check failed`) + + return null +} + +export type HandleLnurlPayResponse = { + pr: string + routes: Empty[] +} +export const HandleLnurlPayResponseOptionalFields: [] = [] +export type HandleLnurlPayResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + pr_CustomCheck?: (v: string) => boolean + routes_ItemOptions?: EmptyOptions + routes_CustomCheck?: (v: Empty[]) => boolean +} +export const HandleLnurlPayResponseValidate = (o?: HandleLnurlPayResponse, opts: HandleLnurlPayResponseOptions = {}, path: string = 'HandleLnurlPayResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.pr !== 'string') return new Error(`${path}.pr: is not a string`) + if (opts.pr_CustomCheck && !opts.pr_CustomCheck(o.pr)) return new Error(`${path}.pr: custom check failed`) + + if (!Array.isArray(o.routes)) return new Error(`${path}.routes: is not an array`) + for (let index = 0; index < o.routes.length; index++) { + const routesErr = EmptyValidate(o.routes[index], opts.routes_ItemOptions, `${path}.routes[${index}]`) + if (routesErr !== null) return routesErr + } + if (opts.routes_CustomCheck && !opts.routes_CustomCheck(o.routes)) return new Error(`${path}.routes: custom check failed`) + + return null +} + +export type UserOperation = { + paidAtUnix: number + type: UserOperationType + inbound: boolean + amount: number + identifier: string +} +export const UserOperationOptionalFields: [] = [] +export type UserOperationOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + paidAtUnix_CustomCheck?: (v: number) => boolean + type_CustomCheck?: (v: UserOperationType) => boolean + inbound_CustomCheck?: (v: boolean) => boolean + amount_CustomCheck?: (v: number) => boolean + identifier_CustomCheck?: (v: string) => boolean +} +export const UserOperationValidate = (o?: UserOperation, opts: UserOperationOptions = {}, path: string = 'UserOperation::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.paidAtUnix !== 'number') return new Error(`${path}.paidAtUnix: is not a number`) + if (opts.paidAtUnix_CustomCheck && !opts.paidAtUnix_CustomCheck(o.paidAtUnix)) return new Error(`${path}.paidAtUnix: custom check failed`) + + if (!enumCheckUserOperationType(o.type)) return new Error(`${path}.type: is not a valid UserOperationType`) + if (opts.type_CustomCheck && !opts.type_CustomCheck(o.type)) return new Error(`${path}.type: custom check failed`) + + if (typeof o.inbound !== 'boolean') return new Error(`${path}.inbound: is not a boolean`) + if (opts.inbound_CustomCheck && !opts.inbound_CustomCheck(o.inbound)) return new Error(`${path}.inbound: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) + if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) + + return null +} + +export type GetUserOperationsResponse = { + latestOutgoingInvoiceOperations: UserOperations + latestIncomingInvoiceOperations: UserOperations + latestOutgoingTxOperations: UserOperations + latestIncomingTxOperations: UserOperations + latestOutgoingUserToUserPayemnts: UserOperations + latestIncomingUserToUserPayemnts: UserOperations +} +export const GetUserOperationsResponseOptionalFields: [] = [] +export type GetUserOperationsResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + latestOutgoingInvoiceOperations_Options?: UserOperationsOptions + latestIncomingInvoiceOperations_Options?: UserOperationsOptions + latestOutgoingTxOperations_Options?: UserOperationsOptions + latestIncomingTxOperations_Options?: UserOperationsOptions + latestOutgoingUserToUserPayemnts_Options?: UserOperationsOptions + latestIncomingUserToUserPayemnts_Options?: UserOperationsOptions +} +export const GetUserOperationsResponseValidate = (o?: GetUserOperationsResponse, opts: GetUserOperationsResponseOptions = {}, path: string = 'GetUserOperationsResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + const latestOutgoingInvoiceOperationsErr = UserOperationsValidate(o.latestOutgoingInvoiceOperations, opts.latestOutgoingInvoiceOperations_Options, `${path}.latestOutgoingInvoiceOperations`) + if (latestOutgoingInvoiceOperationsErr !== null) return latestOutgoingInvoiceOperationsErr + + + const latestIncomingInvoiceOperationsErr = UserOperationsValidate(o.latestIncomingInvoiceOperations, opts.latestIncomingInvoiceOperations_Options, `${path}.latestIncomingInvoiceOperations`) + if (latestIncomingInvoiceOperationsErr !== null) return latestIncomingInvoiceOperationsErr + + + const latestOutgoingTxOperationsErr = UserOperationsValidate(o.latestOutgoingTxOperations, opts.latestOutgoingTxOperations_Options, `${path}.latestOutgoingTxOperations`) + if (latestOutgoingTxOperationsErr !== null) return latestOutgoingTxOperationsErr + + + const latestIncomingTxOperationsErr = UserOperationsValidate(o.latestIncomingTxOperations, opts.latestIncomingTxOperations_Options, `${path}.latestIncomingTxOperations`) + if (latestIncomingTxOperationsErr !== null) return latestIncomingTxOperationsErr + + + const latestOutgoingUserToUserPayemntsErr = UserOperationsValidate(o.latestOutgoingUserToUserPayemnts, opts.latestOutgoingUserToUserPayemnts_Options, `${path}.latestOutgoingUserToUserPayemnts`) + if (latestOutgoingUserToUserPayemntsErr !== null) return latestOutgoingUserToUserPayemntsErr + + + const latestIncomingUserToUserPayemntsErr = UserOperationsValidate(o.latestIncomingUserToUserPayemnts, opts.latestIncomingUserToUserPayemnts_Options, `${path}.latestIncomingUserToUserPayemnts`) + if (latestIncomingUserToUserPayemntsErr !== null) return latestIncomingUserToUserPayemntsErr + + + return null +} + +export type Empty = { +} +export const EmptyOptionalFields: [] = [] +export type EmptyOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] +} +export const EmptyValidate = (o?: Empty, opts: EmptyOptions = {}, path: string = 'Empty::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + return null +} + +export type AuthApp = { + app: Application + auth_token: string +} +export const AuthAppOptionalFields: [] = [] +export type AuthAppOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + app_Options?: ApplicationOptions + auth_token_CustomCheck?: (v: string) => boolean +} +export const AuthAppValidate = (o?: AuthApp, opts: AuthAppOptions = {}, path: string = 'AuthApp::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + const appErr = ApplicationValidate(o.app, opts.app_Options, `${path}.app`) + if (appErr !== null) return appErr + + + if (typeof o.auth_token !== 'string') return new Error(`${path}.auth_token: is not a string`) + if (opts.auth_token_CustomCheck && !opts.auth_token_CustomCheck(o.auth_token)) return new Error(`${path}.auth_token: custom check failed`) + + return null +} + +export type SendAppUserToAppUserPaymentRequest = { + from_user_identifier: string + to_user_identifier: string + amount: number +} +export const SendAppUserToAppUserPaymentRequestOptionalFields: [] = [] +export type SendAppUserToAppUserPaymentRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + from_user_identifier_CustomCheck?: (v: string) => boolean + to_user_identifier_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean +} +export const SendAppUserToAppUserPaymentRequestValidate = (o?: SendAppUserToAppUserPaymentRequest, opts: SendAppUserToAppUserPaymentRequestOptions = {}, path: string = 'SendAppUserToAppUserPaymentRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.from_user_identifier !== 'string') return new Error(`${path}.from_user_identifier: is not a string`) + if (opts.from_user_identifier_CustomCheck && !opts.from_user_identifier_CustomCheck(o.from_user_identifier)) return new Error(`${path}.from_user_identifier: custom check failed`) + + if (typeof o.to_user_identifier !== 'string') return new Error(`${path}.to_user_identifier: is not a string`) + if (opts.to_user_identifier_CustomCheck && !opts.to_user_identifier_CustomCheck(o.to_user_identifier)) return new Error(`${path}.to_user_identifier: custom check failed`) + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + + return null +} + export type GetAppUserLNURLInfoRequest = { user_identifier: string base_url_override: string @@ -284,33 +991,15 @@ export const GetAppUserLNURLInfoRequestValidate = (o?: GetAppUserLNURLInfoReques return null } -export type DecodeInvoiceRequest = { - invoice: string -} -export const DecodeInvoiceRequestOptionalFields: [] = [] -export type DecodeInvoiceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - invoice_CustomCheck?: (v: string) => boolean -} -export const DecodeInvoiceRequestValidate = (o?: DecodeInvoiceRequest, opts: DecodeInvoiceRequestOptions = {}, path: string = 'DecodeInvoiceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) - if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) - - return null -} - -export type DecodeInvoiceResponse = { +export type SetMockAppBalanceRequest = { amount: number } -export const DecodeInvoiceResponseOptionalFields: [] = [] -export type DecodeInvoiceResponseOptions = OptionsBaseMessage & { +export const SetMockAppBalanceRequestOptionalFields: [] = [] +export type SetMockAppBalanceRequestOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] amount_CustomCheck?: (v: number) => boolean } -export const DecodeInvoiceResponseValidate = (o?: DecodeInvoiceResponse, opts: DecodeInvoiceResponseOptions = {}, path: string = 'DecodeInvoiceResponse::root.'): Error | null => { +export const SetMockAppBalanceRequestValidate = (o?: SetMockAppBalanceRequest, opts: SetMockAppBalanceRequestOptions = {}, path: string = 'SetMockAppBalanceRequest::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') @@ -320,6 +1009,29 @@ export const DecodeInvoiceResponseValidate = (o?: DecodeInvoiceResponse, opts: D return null } +export type PayInvoiceResponse = { + preimage: string + amount_paid: number +} +export const PayInvoiceResponseOptionalFields: [] = [] +export type PayInvoiceResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + preimage_CustomCheck?: (v: string) => boolean + amount_paid_CustomCheck?: (v: number) => boolean +} +export const PayInvoiceResponseValidate = (o?: PayInvoiceResponse, opts: PayInvoiceResponseOptions = {}, path: string = 'PayInvoiceResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.preimage !== 'string') return new Error(`${path}.preimage: is not a string`) + if (opts.preimage_CustomCheck && !opts.preimage_CustomCheck(o.preimage)) return new Error(`${path}.preimage: custom check failed`) + + if (typeof o.amount_paid !== 'number') return new Error(`${path}.amount_paid: is not a number`) + if (opts.amount_paid_CustomCheck && !opts.amount_paid_CustomCheck(o.amount_paid)) return new Error(`${path}.amount_paid: custom check failed`) + + return null +} + export type LnurlPayInfoResponse = { tag: string callback: string @@ -404,219 +1116,28 @@ export const EncryptionExchangeRequestValidate = (o?: EncryptionExchangeRequest, return null } -export type LndGetInfoRequest = { - nodeId: number -} -export const LndGetInfoRequestOptionalFields: [] = [] -export type LndGetInfoRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - nodeId_CustomCheck?: (v: number) => boolean -} -export const LndGetInfoRequestValidate = (o?: LndGetInfoRequest, opts: LndGetInfoRequestOptions = {}, path: string = 'LndGetInfoRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.nodeId !== 'number') return new Error(`${path}.nodeId: is not a number`) - if (opts.nodeId_CustomCheck && !opts.nodeId_CustomCheck(o.nodeId)) return new Error(`${path}.nodeId: custom check failed`) - - return null -} - -export type AddAppRequest = { - name: string - allow_user_creation: boolean -} -export const AddAppRequestOptionalFields: [] = [] -export type AddAppRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - name_CustomCheck?: (v: string) => boolean - allow_user_creation_CustomCheck?: (v: boolean) => boolean -} -export const AddAppRequestValidate = (o?: AddAppRequest, opts: AddAppRequestOptions = {}, path: string = 'AddAppRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) - if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) - - if (typeof o.allow_user_creation !== 'boolean') return new Error(`${path}.allow_user_creation: is not a boolean`) - if (opts.allow_user_creation_CustomCheck && !opts.allow_user_creation_CustomCheck(o.allow_user_creation)) return new Error(`${path}.allow_user_creation: custom check failed`) - - return null -} - -export type GetUserOperationsResponse = { - latestOutgoingInvoiceOperations: UserOperations - latestIncomingInvoiceOperations: UserOperations - latestOutgoingTxOperations: UserOperations - latestIncomingTxOperations: UserOperations - latestOutgoingUserToUserPayemnts: UserOperations - latestIncomingUserToUserPayemnts: UserOperations -} -export const GetUserOperationsResponseOptionalFields: [] = [] -export type GetUserOperationsResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - latestOutgoingInvoiceOperations_Options?: UserOperationsOptions - latestIncomingInvoiceOperations_Options?: UserOperationsOptions - latestOutgoingTxOperations_Options?: UserOperationsOptions - latestIncomingTxOperations_Options?: UserOperationsOptions - latestOutgoingUserToUserPayemnts_Options?: UserOperationsOptions - latestIncomingUserToUserPayemnts_Options?: UserOperationsOptions -} -export const GetUserOperationsResponseValidate = (o?: GetUserOperationsResponse, opts: GetUserOperationsResponseOptions = {}, path: string = 'GetUserOperationsResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - const latestOutgoingInvoiceOperationsErr = UserOperationsValidate(o.latestOutgoingInvoiceOperations, opts.latestOutgoingInvoiceOperations_Options, `${path}.latestOutgoingInvoiceOperations`) - if (latestOutgoingInvoiceOperationsErr !== null) return latestOutgoingInvoiceOperationsErr - - - const latestIncomingInvoiceOperationsErr = UserOperationsValidate(o.latestIncomingInvoiceOperations, opts.latestIncomingInvoiceOperations_Options, `${path}.latestIncomingInvoiceOperations`) - if (latestIncomingInvoiceOperationsErr !== null) return latestIncomingInvoiceOperationsErr - - - const latestOutgoingTxOperationsErr = UserOperationsValidate(o.latestOutgoingTxOperations, opts.latestOutgoingTxOperations_Options, `${path}.latestOutgoingTxOperations`) - if (latestOutgoingTxOperationsErr !== null) return latestOutgoingTxOperationsErr - - - const latestIncomingTxOperationsErr = UserOperationsValidate(o.latestIncomingTxOperations, opts.latestIncomingTxOperations_Options, `${path}.latestIncomingTxOperations`) - if (latestIncomingTxOperationsErr !== null) return latestIncomingTxOperationsErr - - - const latestOutgoingUserToUserPayemntsErr = UserOperationsValidate(o.latestOutgoingUserToUserPayemnts, opts.latestOutgoingUserToUserPayemnts_Options, `${path}.latestOutgoingUserToUserPayemnts`) - if (latestOutgoingUserToUserPayemntsErr !== null) return latestOutgoingUserToUserPayemntsErr - - - const latestIncomingUserToUserPayemntsErr = UserOperationsValidate(o.latestIncomingUserToUserPayemnts, opts.latestIncomingUserToUserPayemnts_Options, `${path}.latestIncomingUserToUserPayemnts`) - if (latestIncomingUserToUserPayemntsErr !== null) return latestIncomingUserToUserPayemntsErr - - - return null -} - -export type Application = { - name: string - id: string - balance: number - npub: string -} -export const ApplicationOptionalFields: [] = [] -export type ApplicationOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - name_CustomCheck?: (v: string) => boolean - id_CustomCheck?: (v: string) => boolean - balance_CustomCheck?: (v: number) => boolean - npub_CustomCheck?: (v: string) => boolean -} -export const ApplicationValidate = (o?: Application, opts: ApplicationOptions = {}, path: string = 'Application::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) - if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) - - if (typeof o.id !== 'string') return new Error(`${path}.id: is not a string`) - if (opts.id_CustomCheck && !opts.id_CustomCheck(o.id)) return new Error(`${path}.id: custom check failed`) - - if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) - if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) - - if (typeof o.npub !== 'string') return new Error(`${path}.npub: is not a string`) - if (opts.npub_CustomCheck && !opts.npub_CustomCheck(o.npub)) return new Error(`${path}.npub: custom check failed`) - - return null -} - -export type PayAppUserInvoiceRequest = { - user_identifier: string - invoice: string - amount: number -} -export const PayAppUserInvoiceRequestOptionalFields: [] = [] -export type PayAppUserInvoiceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - user_identifier_CustomCheck?: (v: string) => boolean - invoice_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean -} -export const PayAppUserInvoiceRequestValidate = (o?: PayAppUserInvoiceRequest, opts: PayAppUserInvoiceRequestOptions = {}, path: string = 'PayAppUserInvoiceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) - if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) - - if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) - if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - -export type OpenChannelResponse = { - channelId: string -} -export const OpenChannelResponseOptionalFields: [] = [] -export type OpenChannelResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - channelId_CustomCheck?: (v: string) => boolean -} -export const OpenChannelResponseValidate = (o?: OpenChannelResponse, opts: OpenChannelResponseOptions = {}, path: string = 'OpenChannelResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.channelId !== 'string') return new Error(`${path}.channelId: is not a string`) - if (opts.channelId_CustomCheck && !opts.channelId_CustomCheck(o.channelId)) return new Error(`${path}.channelId: custom check failed`) - - return null -} - -export type LnurlLinkResponse = { - lnurl: string - k1: string -} -export const LnurlLinkResponseOptionalFields: [] = [] -export type LnurlLinkResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - lnurl_CustomCheck?: (v: string) => boolean - k1_CustomCheck?: (v: string) => boolean -} -export const LnurlLinkResponseValidate = (o?: LnurlLinkResponse, opts: LnurlLinkResponseOptions = {}, path: string = 'LnurlLinkResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.lnurl !== 'string') return new Error(`${path}.lnurl: is not a string`) - if (opts.lnurl_CustomCheck && !opts.lnurl_CustomCheck(o.lnurl)) return new Error(`${path}.lnurl: custom check failed`) - - if (typeof o.k1 !== 'string') return new Error(`${path}.k1: is not a string`) - if (opts.k1_CustomCheck && !opts.k1_CustomCheck(o.k1)) return new Error(`${path}.k1: custom check failed`) - - return null -} - -export type UserInfo = { - userId: string - balance: number +export type AppUser = { + identifier: string + info: UserInfo max_withdrawable: number } -export const UserInfoOptionalFields: [] = [] -export type UserInfoOptions = OptionsBaseMessage & { +export const AppUserOptionalFields: [] = [] +export type AppUserOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - userId_CustomCheck?: (v: string) => boolean - balance_CustomCheck?: (v: number) => boolean + identifier_CustomCheck?: (v: string) => boolean + info_Options?: UserInfoOptions max_withdrawable_CustomCheck?: (v: number) => boolean } -export const UserInfoValidate = (o?: UserInfo, opts: UserInfoOptions = {}, path: string = 'UserInfo::root.'): Error | null => { +export const AppUserValidate = (o?: AppUser, opts: AppUserOptions = {}, path: string = 'AppUser::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.userId !== 'string') return new Error(`${path}.userId: is not a string`) - if (opts.userId_CustomCheck && !opts.userId_CustomCheck(o.userId)) return new Error(`${path}.userId: custom check failed`) + if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) + if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) - if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) - if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) + const infoErr = UserInfoValidate(o.info, opts.info_Options, `${path}.info`) + if (infoErr !== null) return infoErr + if (typeof o.max_withdrawable !== 'number') return new Error(`${path}.max_withdrawable: is not a number`) if (opts.max_withdrawable_CustomCheck && !opts.max_withdrawable_CustomCheck(o.max_withdrawable)) return new Error(`${path}.max_withdrawable: custom check failed`) @@ -624,181 +1145,6 @@ export const UserInfoValidate = (o?: UserInfo, opts: UserInfoOptions = {}, path: return null } -export type SendAppUserToAppUserPaymentRequest = { - from_user_identifier: string - to_user_identifier: string - amount: number -} -export const SendAppUserToAppUserPaymentRequestOptionalFields: [] = [] -export type SendAppUserToAppUserPaymentRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - from_user_identifier_CustomCheck?: (v: string) => boolean - to_user_identifier_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean -} -export const SendAppUserToAppUserPaymentRequestValidate = (o?: SendAppUserToAppUserPaymentRequest, opts: SendAppUserToAppUserPaymentRequestOptions = {}, path: string = 'SendAppUserToAppUserPaymentRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.from_user_identifier !== 'string') return new Error(`${path}.from_user_identifier: is not a string`) - if (opts.from_user_identifier_CustomCheck && !opts.from_user_identifier_CustomCheck(o.from_user_identifier)) return new Error(`${path}.from_user_identifier: custom check failed`) - - if (typeof o.to_user_identifier !== 'string') return new Error(`${path}.to_user_identifier: is not a string`) - if (opts.to_user_identifier_CustomCheck && !opts.to_user_identifier_CustomCheck(o.to_user_identifier)) return new Error(`${path}.to_user_identifier: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - -export type SetMockAppBalanceRequest = { - amount: number -} -export const SetMockAppBalanceRequestOptionalFields: [] = [] -export type SetMockAppBalanceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - amount_CustomCheck?: (v: number) => boolean -} -export const SetMockAppBalanceRequestValidate = (o?: SetMockAppBalanceRequest, opts: SetMockAppBalanceRequestOptions = {}, path: string = 'SetMockAppBalanceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - -export type NewInvoiceResponse = { - invoice: string -} -export const NewInvoiceResponseOptionalFields: [] = [] -export type NewInvoiceResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - invoice_CustomCheck?: (v: string) => boolean -} -export const NewInvoiceResponseValidate = (o?: NewInvoiceResponse, opts: NewInvoiceResponseOptions = {}, path: string = 'NewInvoiceResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) - if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) - - return null -} - -export type PayAddressResponse = { - txId: string -} -export const PayAddressResponseOptionalFields: [] = [] -export type PayAddressResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - txId_CustomCheck?: (v: string) => boolean -} -export const PayAddressResponseValidate = (o?: PayAddressResponse, opts: PayAddressResponseOptions = {}, path: string = 'PayAddressResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.txId !== 'string') return new Error(`${path}.txId: is not a string`) - if (opts.txId_CustomCheck && !opts.txId_CustomCheck(o.txId)) return new Error(`${path}.txId: custom check failed`) - - return null -} - -export type PayInvoiceRequest = { - invoice: string - amount: number -} -export const PayInvoiceRequestOptionalFields: [] = [] -export type PayInvoiceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - invoice_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean -} -export const PayInvoiceRequestValidate = (o?: PayInvoiceRequest, opts: PayInvoiceRequestOptions = {}, path: string = 'PayInvoiceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) - if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - -export type LiveUserOperation = { - id: string - operation: UserOperation -} -export const LiveUserOperationOptionalFields: [] = [] -export type LiveUserOperationOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - id_CustomCheck?: (v: string) => boolean - operation_Options?: UserOperationOptions -} -export const LiveUserOperationValidate = (o?: LiveUserOperation, opts: LiveUserOperationOptions = {}, path: string = 'LiveUserOperation::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.id !== 'string') return new Error(`${path}.id: is not a string`) - if (opts.id_CustomCheck && !opts.id_CustomCheck(o.id)) return new Error(`${path}.id: custom check failed`) - - const operationErr = UserOperationValidate(o.operation, opts.operation_Options, `${path}.operation`) - if (operationErr !== null) return operationErr - - - return null -} - -export type PayAppUserInvoiceResponse = { - preimage: string - amount_paid: number -} -export const PayAppUserInvoiceResponseOptionalFields: [] = [] -export type PayAppUserInvoiceResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - preimage_CustomCheck?: (v: string) => boolean - amount_paid_CustomCheck?: (v: number) => boolean -} -export const PayAppUserInvoiceResponseValidate = (o?: PayAppUserInvoiceResponse, opts: PayAppUserInvoiceResponseOptions = {}, path: string = 'PayAppUserInvoiceResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.preimage !== 'string') return new Error(`${path}.preimage: is not a string`) - if (opts.preimage_CustomCheck && !opts.preimage_CustomCheck(o.preimage)) return new Error(`${path}.preimage: custom check failed`) - - if (typeof o.amount_paid !== 'number') return new Error(`${path}.amount_paid: is not a number`) - if (opts.amount_paid_CustomCheck && !opts.amount_paid_CustomCheck(o.amount_paid)) return new Error(`${path}.amount_paid: custom check failed`) - - return null -} - -export type SetMockAppUserBalanceRequest = { - user_identifier: string - amount: number -} -export const SetMockAppUserBalanceRequestOptionalFields: [] = [] -export type SetMockAppUserBalanceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - user_identifier_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean -} -export const SetMockAppUserBalanceRequestValidate = (o?: SetMockAppUserBalanceRequest, opts: SetMockAppUserBalanceRequestOptions = {}, path: string = 'SetMockAppUserBalanceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) - if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - export type NewAddressResponse = { address: string } @@ -817,159 +1163,6 @@ export const NewAddressResponseValidate = (o?: NewAddressResponse, opts: NewAddr return null } -export type AddAppInvoiceRequest = { - payer_identifier: string - http_callback_url: string - invoice_req: NewInvoiceRequest -} -export const AddAppInvoiceRequestOptionalFields: [] = [] -export type AddAppInvoiceRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - payer_identifier_CustomCheck?: (v: string) => boolean - http_callback_url_CustomCheck?: (v: string) => boolean - invoice_req_Options?: NewInvoiceRequestOptions -} -export const AddAppInvoiceRequestValidate = (o?: AddAppInvoiceRequest, opts: AddAppInvoiceRequestOptions = {}, path: string = 'AddAppInvoiceRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.payer_identifier !== 'string') return new Error(`${path}.payer_identifier: is not a string`) - if (opts.payer_identifier_CustomCheck && !opts.payer_identifier_CustomCheck(o.payer_identifier)) return new Error(`${path}.payer_identifier: custom check failed`) - - if (typeof o.http_callback_url !== 'string') return new Error(`${path}.http_callback_url: is not a string`) - if (opts.http_callback_url_CustomCheck && !opts.http_callback_url_CustomCheck(o.http_callback_url)) return new Error(`${path}.http_callback_url: custom check failed`) - - const invoice_reqErr = NewInvoiceRequestValidate(o.invoice_req, opts.invoice_req_Options, `${path}.invoice_req`) - if (invoice_reqErr !== null) return invoice_reqErr - - - return null -} - -export type LnurlWithdrawInfoResponse = { - tag: string - callback: string - k1: string - defaultDescription: string - minWithdrawable: number - maxWithdrawable: number - balanceCheck: string - payLink: string -} -export const LnurlWithdrawInfoResponseOptionalFields: [] = [] -export type LnurlWithdrawInfoResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - tag_CustomCheck?: (v: string) => boolean - callback_CustomCheck?: (v: string) => boolean - k1_CustomCheck?: (v: string) => boolean - defaultDescription_CustomCheck?: (v: string) => boolean - minWithdrawable_CustomCheck?: (v: number) => boolean - maxWithdrawable_CustomCheck?: (v: number) => boolean - balanceCheck_CustomCheck?: (v: string) => boolean - payLink_CustomCheck?: (v: string) => boolean -} -export const LnurlWithdrawInfoResponseValidate = (o?: LnurlWithdrawInfoResponse, opts: LnurlWithdrawInfoResponseOptions = {}, path: string = 'LnurlWithdrawInfoResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.tag !== 'string') return new Error(`${path}.tag: is not a string`) - if (opts.tag_CustomCheck && !opts.tag_CustomCheck(o.tag)) return new Error(`${path}.tag: custom check failed`) - - if (typeof o.callback !== 'string') return new Error(`${path}.callback: is not a string`) - if (opts.callback_CustomCheck && !opts.callback_CustomCheck(o.callback)) return new Error(`${path}.callback: custom check failed`) - - if (typeof o.k1 !== 'string') return new Error(`${path}.k1: is not a string`) - if (opts.k1_CustomCheck && !opts.k1_CustomCheck(o.k1)) return new Error(`${path}.k1: custom check failed`) - - if (typeof o.defaultDescription !== 'string') return new Error(`${path}.defaultDescription: is not a string`) - if (opts.defaultDescription_CustomCheck && !opts.defaultDescription_CustomCheck(o.defaultDescription)) return new Error(`${path}.defaultDescription: custom check failed`) - - if (typeof o.minWithdrawable !== 'number') return new Error(`${path}.minWithdrawable: is not a number`) - if (opts.minWithdrawable_CustomCheck && !opts.minWithdrawable_CustomCheck(o.minWithdrawable)) return new Error(`${path}.minWithdrawable: custom check failed`) - - if (typeof o.maxWithdrawable !== 'number') return new Error(`${path}.maxWithdrawable: is not a number`) - if (opts.maxWithdrawable_CustomCheck && !opts.maxWithdrawable_CustomCheck(o.maxWithdrawable)) return new Error(`${path}.maxWithdrawable: custom check failed`) - - if (typeof o.balanceCheck !== 'string') return new Error(`${path}.balanceCheck: is not a string`) - if (opts.balanceCheck_CustomCheck && !opts.balanceCheck_CustomCheck(o.balanceCheck)) return new Error(`${path}.balanceCheck: custom check failed`) - - if (typeof o.payLink !== 'string') return new Error(`${path}.payLink: is not a string`) - if (opts.payLink_CustomCheck && !opts.payLink_CustomCheck(o.payLink)) return new Error(`${path}.payLink: custom check failed`) - - return null -} - -export type OpenChannelRequest = { - destination: string - fundingAmount: number - pushAmount: number - closeAddress: string -} -export const OpenChannelRequestOptionalFields: [] = [] -export type OpenChannelRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - destination_CustomCheck?: (v: string) => boolean - fundingAmount_CustomCheck?: (v: number) => boolean - pushAmount_CustomCheck?: (v: number) => boolean - closeAddress_CustomCheck?: (v: string) => boolean -} -export const OpenChannelRequestValidate = (o?: OpenChannelRequest, opts: OpenChannelRequestOptions = {}, path: string = 'OpenChannelRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.destination !== 'string') return new Error(`${path}.destination: is not a string`) - if (opts.destination_CustomCheck && !opts.destination_CustomCheck(o.destination)) return new Error(`${path}.destination: custom check failed`) - - if (typeof o.fundingAmount !== 'number') return new Error(`${path}.fundingAmount: is not a number`) - if (opts.fundingAmount_CustomCheck && !opts.fundingAmount_CustomCheck(o.fundingAmount)) return new Error(`${path}.fundingAmount: custom check failed`) - - if (typeof o.pushAmount !== 'number') return new Error(`${path}.pushAmount: is not a number`) - if (opts.pushAmount_CustomCheck && !opts.pushAmount_CustomCheck(o.pushAmount)) return new Error(`${path}.pushAmount: custom check failed`) - - if (typeof o.closeAddress !== 'string') return new Error(`${path}.closeAddress: is not a string`) - if (opts.closeAddress_CustomCheck && !opts.closeAddress_CustomCheck(o.closeAddress)) return new Error(`${path}.closeAddress: custom check failed`) - - return null -} - -export type UserOperation = { - paidAtUnix: number - type: UserOperationType - inbound: boolean - amount: number - identifier: string -} -export const UserOperationOptionalFields: [] = [] -export type UserOperationOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - paidAtUnix_CustomCheck?: (v: number) => boolean - type_CustomCheck?: (v: UserOperationType) => boolean - inbound_CustomCheck?: (v: boolean) => boolean - amount_CustomCheck?: (v: number) => boolean - identifier_CustomCheck?: (v: string) => boolean -} -export const UserOperationValidate = (o?: UserOperation, opts: UserOperationOptions = {}, path: string = 'UserOperation::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.paidAtUnix !== 'number') return new Error(`${path}.paidAtUnix: is not a number`) - if (opts.paidAtUnix_CustomCheck && !opts.paidAtUnix_CustomCheck(o.paidAtUnix)) return new Error(`${path}.paidAtUnix: custom check failed`) - - if (!enumCheckUserOperationType(o.type)) return new Error(`${path}.type: is not a valid UserOperationType`) - if (opts.type_CustomCheck && !opts.type_CustomCheck(o.type)) return new Error(`${path}.type: custom check failed`) - - if (typeof o.inbound !== 'boolean') return new Error(`${path}.inbound: is not a boolean`) - if (opts.inbound_CustomCheck && !opts.inbound_CustomCheck(o.inbound)) return new Error(`${path}.inbound: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) - if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) - - return null -} - export type UserOperations = { fromIndex: number toIndex: number @@ -1031,147 +1224,6 @@ export const ProductValidate = (o?: Product, opts: ProductOptions = {}, path: st return null } -export type GetProductBuyLinkResponse = { - link: string -} -export const GetProductBuyLinkResponseOptionalFields: [] = [] -export type GetProductBuyLinkResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - link_CustomCheck?: (v: string) => boolean -} -export const GetProductBuyLinkResponseValidate = (o?: GetProductBuyLinkResponse, opts: GetProductBuyLinkResponseOptions = {}, path: string = 'GetProductBuyLinkResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.link !== 'string') return new Error(`${path}.link: is not a string`) - if (opts.link_CustomCheck && !opts.link_CustomCheck(o.link)) return new Error(`${path}.link: custom check failed`) - - return null -} - -export type Empty = { -} -export const EmptyOptionalFields: [] = [] -export type EmptyOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] -} -export const EmptyValidate = (o?: Empty, opts: EmptyOptions = {}, path: string = 'Empty::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - return null -} - -export type NewAddressRequest = { - addressType: AddressType -} -export const NewAddressRequestOptionalFields: [] = [] -export type NewAddressRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - addressType_CustomCheck?: (v: AddressType) => boolean -} -export const NewAddressRequestValidate = (o?: NewAddressRequest, opts: NewAddressRequestOptions = {}, path: string = 'NewAddressRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (!enumCheckAddressType(o.addressType)) return new Error(`${path}.addressType: is not a valid AddressType`) - if (opts.addressType_CustomCheck && !opts.addressType_CustomCheck(o.addressType)) return new Error(`${path}.addressType: custom check failed`) - - return null -} - -export type PayInvoiceResponse = { - preimage: string - amount_paid: number -} -export const PayInvoiceResponseOptionalFields: [] = [] -export type PayInvoiceResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - preimage_CustomCheck?: (v: string) => boolean - amount_paid_CustomCheck?: (v: number) => boolean -} -export const PayInvoiceResponseValidate = (o?: PayInvoiceResponse, opts: PayInvoiceResponseOptions = {}, path: string = 'PayInvoiceResponse::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.preimage !== 'string') return new Error(`${path}.preimage: is not a string`) - if (opts.preimage_CustomCheck && !opts.preimage_CustomCheck(o.preimage)) return new Error(`${path}.preimage: custom check failed`) - - if (typeof o.amount_paid !== 'number') return new Error(`${path}.amount_paid: is not a number`) - if (opts.amount_paid_CustomCheck && !opts.amount_paid_CustomCheck(o.amount_paid)) return new Error(`${path}.amount_paid: custom check failed`) - - return null -} - -export type GetAppUserRequest = { - user_identifier: string -} -export const GetAppUserRequestOptionalFields: [] = [] -export type GetAppUserRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - user_identifier_CustomCheck?: (v: string) => boolean -} -export const GetAppUserRequestValidate = (o?: GetAppUserRequest, opts: GetAppUserRequestOptions = {}, path: string = 'GetAppUserRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.user_identifier !== 'string') return new Error(`${path}.user_identifier: is not a string`) - if (opts.user_identifier_CustomCheck && !opts.user_identifier_CustomCheck(o.user_identifier)) return new Error(`${path}.user_identifier: custom check failed`) - - return null -} - -export type SendAppUserToAppPaymentRequest = { - from_user_identifier: string - amount: number -} -export const SendAppUserToAppPaymentRequestOptionalFields: [] = [] -export type SendAppUserToAppPaymentRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - from_user_identifier_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean -} -export const SendAppUserToAppPaymentRequestValidate = (o?: SendAppUserToAppPaymentRequest, opts: SendAppUserToAppPaymentRequestOptions = {}, path: string = 'SendAppUserToAppPaymentRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.from_user_identifier !== 'string') return new Error(`${path}.from_user_identifier: is not a string`) - if (opts.from_user_identifier_CustomCheck && !opts.from_user_identifier_CustomCheck(o.from_user_identifier)) return new Error(`${path}.from_user_identifier: custom check failed`) - - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) - - return null -} - -export type PayAddressRequest = { - address: string - amoutSats: number - satsPerVByte: number -} -export const PayAddressRequestOptionalFields: [] = [] -export type PayAddressRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - address_CustomCheck?: (v: string) => boolean - amoutSats_CustomCheck?: (v: number) => boolean - satsPerVByte_CustomCheck?: (v: number) => boolean -} -export const PayAddressRequestValidate = (o?: PayAddressRequest, opts: PayAddressRequestOptions = {}, path: string = 'PayAddressRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.address !== 'string') return new Error(`${path}.address: is not a string`) - if (opts.address_CustomCheck && !opts.address_CustomCheck(o.address)) return new Error(`${path}.address: custom check failed`) - - if (typeof o.amoutSats !== 'number') return new Error(`${path}.amoutSats: is not a number`) - if (opts.amoutSats_CustomCheck && !opts.amoutSats_CustomCheck(o.amoutSats)) return new Error(`${path}.amoutSats: custom check failed`) - - if (typeof o.satsPerVByte !== 'number') return new Error(`${path}.satsPerVByte: is not a number`) - if (opts.satsPerVByte_CustomCheck && !opts.satsPerVByte_CustomCheck(o.satsPerVByte)) return new Error(`${path}.satsPerVByte: custom check failed`) - - return null -} - export type NewInvoiceRequest = { amountSats: number memo: string @@ -1195,110 +1247,67 @@ export const NewInvoiceRequestValidate = (o?: NewInvoiceRequest, opts: NewInvoic return null } -export type GetUserOperationsRequest = { - latestIncomingInvoice: number - latestOutgoingInvoice: number - latestIncomingTx: number - latestOutgoingTx: number - latestIncomingUserToUserPayment: number - latestOutgoingUserToUserPayment: number +export type LndGetInfoRequest = { + nodeId: number } -export const GetUserOperationsRequestOptionalFields: [] = [] -export type GetUserOperationsRequestOptions = OptionsBaseMessage & { +export const LndGetInfoRequestOptionalFields: [] = [] +export type LndGetInfoRequestOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - latestIncomingInvoice_CustomCheck?: (v: number) => boolean - latestOutgoingInvoice_CustomCheck?: (v: number) => boolean - latestIncomingTx_CustomCheck?: (v: number) => boolean - latestOutgoingTx_CustomCheck?: (v: number) => boolean - latestIncomingUserToUserPayment_CustomCheck?: (v: number) => boolean - latestOutgoingUserToUserPayment_CustomCheck?: (v: number) => boolean + nodeId_CustomCheck?: (v: number) => boolean } -export const GetUserOperationsRequestValidate = (o?: GetUserOperationsRequest, opts: GetUserOperationsRequestOptions = {}, path: string = 'GetUserOperationsRequest::root.'): Error | null => { +export const LndGetInfoRequestValidate = (o?: LndGetInfoRequest, opts: LndGetInfoRequestOptions = {}, path: string = 'LndGetInfoRequest::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.latestIncomingInvoice !== 'number') return new Error(`${path}.latestIncomingInvoice: is not a number`) - if (opts.latestIncomingInvoice_CustomCheck && !opts.latestIncomingInvoice_CustomCheck(o.latestIncomingInvoice)) return new Error(`${path}.latestIncomingInvoice: custom check failed`) - - if (typeof o.latestOutgoingInvoice !== 'number') return new Error(`${path}.latestOutgoingInvoice: is not a number`) - if (opts.latestOutgoingInvoice_CustomCheck && !opts.latestOutgoingInvoice_CustomCheck(o.latestOutgoingInvoice)) return new Error(`${path}.latestOutgoingInvoice: custom check failed`) - - if (typeof o.latestIncomingTx !== 'number') return new Error(`${path}.latestIncomingTx: is not a number`) - if (opts.latestIncomingTx_CustomCheck && !opts.latestIncomingTx_CustomCheck(o.latestIncomingTx)) return new Error(`${path}.latestIncomingTx: custom check failed`) - - if (typeof o.latestOutgoingTx !== 'number') return new Error(`${path}.latestOutgoingTx: is not a number`) - if (opts.latestOutgoingTx_CustomCheck && !opts.latestOutgoingTx_CustomCheck(o.latestOutgoingTx)) return new Error(`${path}.latestOutgoingTx: custom check failed`) - - if (typeof o.latestIncomingUserToUserPayment !== 'number') return new Error(`${path}.latestIncomingUserToUserPayment: is not a number`) - if (opts.latestIncomingUserToUserPayment_CustomCheck && !opts.latestIncomingUserToUserPayment_CustomCheck(o.latestIncomingUserToUserPayment)) return new Error(`${path}.latestIncomingUserToUserPayment: custom check failed`) - - if (typeof o.latestOutgoingUserToUserPayment !== 'number') return new Error(`${path}.latestOutgoingUserToUserPayment: is not a number`) - if (opts.latestOutgoingUserToUserPayment_CustomCheck && !opts.latestOutgoingUserToUserPayment_CustomCheck(o.latestOutgoingUserToUserPayment)) return new Error(`${path}.latestOutgoingUserToUserPayment: custom check failed`) + if (typeof o.nodeId !== 'number') return new Error(`${path}.nodeId: is not a number`) + if (opts.nodeId_CustomCheck && !opts.nodeId_CustomCheck(o.nodeId)) return new Error(`${path}.nodeId: custom check failed`) return null } -export type SetMockInvoiceAsPaidRequest = { - invoice: string - amount: number +export type AddAppRequest = { + name: string + allow_user_creation: boolean } -export const SetMockInvoiceAsPaidRequestOptionalFields: [] = [] -export type SetMockInvoiceAsPaidRequestOptions = OptionsBaseMessage & { +export const AddAppRequestOptionalFields: [] = [] +export type AddAppRequestOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - invoice_CustomCheck?: (v: string) => boolean - amount_CustomCheck?: (v: number) => boolean + name_CustomCheck?: (v: string) => boolean + allow_user_creation_CustomCheck?: (v: boolean) => boolean } -export const SetMockInvoiceAsPaidRequestValidate = (o?: SetMockInvoiceAsPaidRequest, opts: SetMockInvoiceAsPaidRequestOptions = {}, path: string = 'SetMockInvoiceAsPaidRequest::root.'): Error | null => { +export const AddAppRequestValidate = (o?: AddAppRequest, opts: AddAppRequestOptions = {}, path: string = 'AddAppRequest::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) - if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) + if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) - if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) - if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) + if (typeof o.allow_user_creation !== 'boolean') return new Error(`${path}.allow_user_creation: is not a boolean`) + if (opts.allow_user_creation_CustomCheck && !opts.allow_user_creation_CustomCheck(o.allow_user_creation)) return new Error(`${path}.allow_user_creation: custom check failed`) return null } -export type LndGetInfoResponse = { - alias: string +export type AuthAppRequest = { + name: string + allow_user_creation?: boolean } -export const LndGetInfoResponseOptionalFields: [] = [] -export type LndGetInfoResponseOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - alias_CustomCheck?: (v: string) => boolean +export type AuthAppRequestOptionalField = 'allow_user_creation' +export const AuthAppRequestOptionalFields: AuthAppRequestOptionalField[] = ['allow_user_creation'] +export type AuthAppRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: AuthAppRequestOptionalField[] + name_CustomCheck?: (v: string) => boolean + allow_user_creation_CustomCheck?: (v?: boolean) => boolean } -export const LndGetInfoResponseValidate = (o?: LndGetInfoResponse, opts: LndGetInfoResponseOptions = {}, path: string = 'LndGetInfoResponse::root.'): Error | null => { +export const AuthAppRequestValidate = (o?: AuthAppRequest, opts: AuthAppRequestOptions = {}, path: string = 'AuthAppRequest::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.alias !== 'string') return new Error(`${path}.alias: is not a string`) - if (opts.alias_CustomCheck && !opts.alias_CustomCheck(o.alias)) return new Error(`${path}.alias: custom check failed`) + if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) + if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) - return null -} - -export type AuthApp = { - app: Application - auth_token: string -} -export const AuthAppOptionalFields: [] = [] -export type AuthAppOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: [] - app_Options?: ApplicationOptions - auth_token_CustomCheck?: (v: string) => boolean -} -export const AuthAppValidate = (o?: AuthApp, opts: AuthAppOptions = {}, path: string = 'AuthApp::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - const appErr = ApplicationValidate(o.app, opts.app_Options, `${path}.app`) - if (appErr !== null) return appErr - - - if (typeof o.auth_token !== 'string') return new Error(`${path}.auth_token: is not a string`) - if (opts.auth_token_CustomCheck && !opts.auth_token_CustomCheck(o.auth_token)) return new Error(`${path}.auth_token: custom check failed`) + if ((o.allow_user_creation || opts.allOptionalsAreSet || opts.checkOptionalsAreSet?.includes('allow_user_creation')) && typeof o.allow_user_creation !== 'boolean') return new Error(`${path}.allow_user_creation: is not a boolean`) + if (opts.allow_user_creation_CustomCheck && !opts.allow_user_creation_CustomCheck(o.allow_user_creation)) return new Error(`${path}.allow_user_creation: custom check failed`) return null } @@ -1337,111 +1346,102 @@ export const AddAppUserInvoiceRequestValidate = (o?: AddAppUserInvoiceRequest, o return null } -export type HandleLnurlPayResponse = { - pr: string - routes: Empty[] +export type PayAppUserInvoiceResponse = { + preimage: string + amount_paid: number } -export const HandleLnurlPayResponseOptionalFields: [] = [] -export type HandleLnurlPayResponseOptions = OptionsBaseMessage & { +export const PayAppUserInvoiceResponseOptionalFields: [] = [] +export type PayAppUserInvoiceResponseOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - pr_CustomCheck?: (v: string) => boolean - routes_ItemOptions?: EmptyOptions - routes_CustomCheck?: (v: Empty[]) => boolean + preimage_CustomCheck?: (v: string) => boolean + amount_paid_CustomCheck?: (v: number) => boolean } -export const HandleLnurlPayResponseValidate = (o?: HandleLnurlPayResponse, opts: HandleLnurlPayResponseOptions = {}, path: string = 'HandleLnurlPayResponse::root.'): Error | null => { +export const PayAppUserInvoiceResponseValidate = (o?: PayAppUserInvoiceResponse, opts: PayAppUserInvoiceResponseOptions = {}, path: string = 'PayAppUserInvoiceResponse::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.pr !== 'string') return new Error(`${path}.pr: is not a string`) - if (opts.pr_CustomCheck && !opts.pr_CustomCheck(o.pr)) return new Error(`${path}.pr: custom check failed`) + if (typeof o.preimage !== 'string') return new Error(`${path}.preimage: is not a string`) + if (opts.preimage_CustomCheck && !opts.preimage_CustomCheck(o.preimage)) return new Error(`${path}.preimage: custom check failed`) - if (!Array.isArray(o.routes)) return new Error(`${path}.routes: is not an array`) - for (let index = 0; index < o.routes.length; index++) { - const routesErr = EmptyValidate(o.routes[index], opts.routes_ItemOptions, `${path}.routes[${index}]`) - if (routesErr !== null) return routesErr - } - if (opts.routes_CustomCheck && !opts.routes_CustomCheck(o.routes)) return new Error(`${path}.routes: custom check failed`) + if (typeof o.amount_paid !== 'number') return new Error(`${path}.amount_paid: is not a number`) + if (opts.amount_paid_CustomCheck && !opts.amount_paid_CustomCheck(o.amount_paid)) return new Error(`${path}.amount_paid: custom check failed`) return null } -export type AuthAppRequest = { - name: string - allow_user_creation?: boolean +export type SendAppUserToAppPaymentRequest = { + from_user_identifier: string + amount: number } -export type AuthAppRequestOptionalField = 'allow_user_creation' -export const AuthAppRequestOptionalFields: AuthAppRequestOptionalField[] = ['allow_user_creation'] -export type AuthAppRequestOptions = OptionsBaseMessage & { - checkOptionalsAreSet?: AuthAppRequestOptionalField[] - name_CustomCheck?: (v: string) => boolean - allow_user_creation_CustomCheck?: (v?: boolean) => boolean -} -export const AuthAppRequestValidate = (o?: AuthAppRequest, opts: AuthAppRequestOptions = {}, path: string = 'AuthAppRequest::root.'): Error | null => { - if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') - if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - - if (typeof o.name !== 'string') return new Error(`${path}.name: is not a string`) - if (opts.name_CustomCheck && !opts.name_CustomCheck(o.name)) return new Error(`${path}.name: custom check failed`) - - if ((o.allow_user_creation || opts.allOptionalsAreSet || opts.checkOptionalsAreSet?.includes('allow_user_creation')) && typeof o.allow_user_creation !== 'boolean') return new Error(`${path}.allow_user_creation: is not a boolean`) - if (opts.allow_user_creation_CustomCheck && !opts.allow_user_creation_CustomCheck(o.allow_user_creation)) return new Error(`${path}.allow_user_creation: custom check failed`) - - return null -} - -export type AddAppUserRequest = { - identifier: string - fail_if_exists: boolean - balance: number -} -export const AddAppUserRequestOptionalFields: [] = [] -export type AddAppUserRequestOptions = OptionsBaseMessage & { +export const SendAppUserToAppPaymentRequestOptionalFields: [] = [] +export type SendAppUserToAppPaymentRequestOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - identifier_CustomCheck?: (v: string) => boolean - fail_if_exists_CustomCheck?: (v: boolean) => boolean - balance_CustomCheck?: (v: number) => boolean + from_user_identifier_CustomCheck?: (v: string) => boolean + amount_CustomCheck?: (v: number) => boolean } -export const AddAppUserRequestValidate = (o?: AddAppUserRequest, opts: AddAppUserRequestOptions = {}, path: string = 'AddAppUserRequest::root.'): Error | null => { +export const SendAppUserToAppPaymentRequestValidate = (o?: SendAppUserToAppPaymentRequest, opts: SendAppUserToAppPaymentRequestOptions = {}, path: string = 'SendAppUserToAppPaymentRequest::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) - if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) + if (typeof o.from_user_identifier !== 'string') return new Error(`${path}.from_user_identifier: is not a string`) + if (opts.from_user_identifier_CustomCheck && !opts.from_user_identifier_CustomCheck(o.from_user_identifier)) return new Error(`${path}.from_user_identifier: custom check failed`) - if (typeof o.fail_if_exists !== 'boolean') return new Error(`${path}.fail_if_exists: is not a boolean`) - if (opts.fail_if_exists_CustomCheck && !opts.fail_if_exists_CustomCheck(o.fail_if_exists)) return new Error(`${path}.fail_if_exists: custom check failed`) - - if (typeof o.balance !== 'number') return new Error(`${path}.balance: is not a number`) - if (opts.balance_CustomCheck && !opts.balance_CustomCheck(o.balance)) return new Error(`${path}.balance: custom check failed`) + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) return null } -export type AppUser = { - identifier: string - info: UserInfo - max_withdrawable: number +export type PayAddressResponse = { + txId: string } -export const AppUserOptionalFields: [] = [] -export type AppUserOptions = OptionsBaseMessage & { +export const PayAddressResponseOptionalFields: [] = [] +export type PayAddressResponseOptions = OptionsBaseMessage & { checkOptionalsAreSet?: [] - identifier_CustomCheck?: (v: string) => boolean - info_Options?: UserInfoOptions - max_withdrawable_CustomCheck?: (v: number) => boolean + txId_CustomCheck?: (v: string) => boolean } -export const AppUserValidate = (o?: AppUser, opts: AppUserOptions = {}, path: string = 'AppUser::root.'): Error | null => { +export const PayAddressResponseValidate = (o?: PayAddressResponse, opts: PayAddressResponseOptions = {}, path: string = 'PayAddressResponse::root.'): Error | null => { if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') - if (typeof o.identifier !== 'string') return new Error(`${path}.identifier: is not a string`) - if (opts.identifier_CustomCheck && !opts.identifier_CustomCheck(o.identifier)) return new Error(`${path}.identifier: custom check failed`) - - const infoErr = UserInfoValidate(o.info, opts.info_Options, `${path}.info`) - if (infoErr !== null) return infoErr - - - if (typeof o.max_withdrawable !== 'number') return new Error(`${path}.max_withdrawable: is not a number`) - if (opts.max_withdrawable_CustomCheck && !opts.max_withdrawable_CustomCheck(o.max_withdrawable)) return new Error(`${path}.max_withdrawable: custom check failed`) + if (typeof o.txId !== 'string') return new Error(`${path}.txId: is not a string`) + if (opts.txId_CustomCheck && !opts.txId_CustomCheck(o.txId)) return new Error(`${path}.txId: custom check failed`) + + return null +} + +export type DecodeInvoiceRequest = { + invoice: string +} +export const DecodeInvoiceRequestOptionalFields: [] = [] +export type DecodeInvoiceRequestOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + invoice_CustomCheck?: (v: string) => boolean +} +export const DecodeInvoiceRequestValidate = (o?: DecodeInvoiceRequest, opts: DecodeInvoiceRequestOptions = {}, path: string = 'DecodeInvoiceRequest::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.invoice !== 'string') return new Error(`${path}.invoice: is not a string`) + if (opts.invoice_CustomCheck && !opts.invoice_CustomCheck(o.invoice)) return new Error(`${path}.invoice: custom check failed`) + + return null +} + +export type DecodeInvoiceResponse = { + amount: number +} +export const DecodeInvoiceResponseOptionalFields: [] = [] +export type DecodeInvoiceResponseOptions = OptionsBaseMessage & { + checkOptionalsAreSet?: [] + amount_CustomCheck?: (v: number) => boolean +} +export const DecodeInvoiceResponseValidate = (o?: DecodeInvoiceResponse, opts: DecodeInvoiceResponseOptions = {}, path: string = 'DecodeInvoiceResponse::root.'): Error | null => { + if (opts.checkOptionalsAreSet && opts.allOptionalsAreSet) return new Error(path + ': only one of checkOptionalsAreSet or allOptionalNonDefault can be set for each message') + if (typeof o !== 'object' || o === null) return new Error(path + ': object is not an instance of an object or is null') + + if (typeof o.amount !== 'number') return new Error(`${path}.amount: is not a number`) + if (opts.amount_CustomCheck && !opts.amount_CustomCheck(o.amount)) return new Error(`${path}.amount: custom check failed`) return null } diff --git a/proto/protoc-gen-pub b/proto/protoc-gen-pub index 9a6936521f074a328be98c3ef68b886ce98001b8..e12d9060826bc2d7050e067be31734593e0be72a 100755 GIT binary patch delta 50046 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 delta 50018 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 { - const rand = crypto.randomBytes(32).toString('hex') + const rand = crypto.randomBytes(16).toString('hex') cb({ id: rand, operation: op }, null) } }