You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
10 KiB
319 lines
10 KiB
/* This file was generated by generate-wire.py */
|
|
/* Do not modify this file! Modify the _csv file it was generated from. */
|
|
/* Original template can be found at tools/gen/header_template */
|
|
|
|
#ifndef LIGHTNING_WIRE_BOLT12_WIREGEN_H
|
|
#define LIGHTNING_WIRE_BOLT12_WIREGEN_H
|
|
#include <ccan/tal/tal.h>
|
|
#include <wire/tlvstream.h>
|
|
#include <wire/wire.h>
|
|
#include <bitcoin/short_channel_id.h>
|
|
#include <bitcoin/signature.h>
|
|
#include <bitcoin/privkey.h>
|
|
#include <common/bigsize.h>
|
|
#include <common/amount.h>
|
|
#include <common/node_id.h>
|
|
#include <bitcoin/block.h>
|
|
#include <wire/onion_wire.h>
|
|
|
|
|
|
struct blinded_path {
|
|
struct pubkey blinding;
|
|
struct onionmsg_path **path;
|
|
};
|
|
struct blinded_payinfo {
|
|
u32 fee_base_msat;
|
|
u32 fee_proportional_millionths;
|
|
u16 cltv_expiry_delta;
|
|
u8 *features;
|
|
};
|
|
struct fallback_address {
|
|
u8 version;
|
|
u8 *address;
|
|
};
|
|
struct tlv_offer_recurrence {
|
|
u8 time_unit;
|
|
u32 period;
|
|
};
|
|
struct tlv_offer_recurrence_paywindow {
|
|
u32 seconds_before;
|
|
u8 proportional_amount;
|
|
u32 seconds_after;
|
|
};
|
|
struct tlv_offer_recurrence_base {
|
|
u8 start_any_period;
|
|
u64 basetime;
|
|
};
|
|
struct tlv_offer_send_invoice {
|
|
};
|
|
struct tlv_invoice_send_invoice {
|
|
};
|
|
struct tlv_invoice_fallbacks {
|
|
struct fallback_address **fallbacks;
|
|
};
|
|
struct tlv_offer {
|
|
/* Raw fields including unknown ones. */
|
|
struct tlv_field *fields;
|
|
|
|
/* TODO The following explicit fields could just point into the
|
|
* tlv_field entries above to save on memory. */
|
|
struct bitcoin_blkid *chains;
|
|
utf8 *currency;
|
|
u64 *amount;
|
|
utf8 *description;
|
|
u8 *features;
|
|
u64 *absolute_expiry;
|
|
struct blinded_path **paths;
|
|
utf8 *vendor;
|
|
u64 *quantity_min;
|
|
u64 *quantity_max;
|
|
struct tlv_offer_recurrence *recurrence;
|
|
struct tlv_offer_recurrence_paywindow *recurrence_paywindow;
|
|
u32 *recurrence_limit;
|
|
struct tlv_offer_recurrence_base *recurrence_base;
|
|
struct pubkey32 *node_id;
|
|
struct tlv_offer_send_invoice *send_invoice;
|
|
struct sha256 *refund_for;
|
|
struct bip340sig *signature;
|
|
};
|
|
struct tlv_invoice_request {
|
|
/* Raw fields including unknown ones. */
|
|
struct tlv_field *fields;
|
|
|
|
/* TODO The following explicit fields could just point into the
|
|
* tlv_field entries above to save on memory. */
|
|
struct bitcoin_blkid *chains;
|
|
struct sha256 *offer_id;
|
|
u64 *amount;
|
|
u8 *features;
|
|
u64 *quantity;
|
|
u32 *recurrence_counter;
|
|
u32 *recurrence_start;
|
|
struct pubkey32 *payer_key;
|
|
u8 *payer_info;
|
|
struct bip340sig *recurrence_signature;
|
|
};
|
|
struct tlv_invoice {
|
|
/* Raw fields including unknown ones. */
|
|
struct tlv_field *fields;
|
|
|
|
/* TODO The following explicit fields could just point into the
|
|
* tlv_field entries above to save on memory. */
|
|
struct bitcoin_blkid *chains;
|
|
struct sha256 *offer_id;
|
|
u64 *amount;
|
|
utf8 *description;
|
|
u8 *features;
|
|
struct blinded_path **paths;
|
|
struct blinded_payinfo **blindedpay;
|
|
utf8 *vendor;
|
|
struct pubkey32 *node_id;
|
|
u64 *quantity;
|
|
struct sha256 *refund_for;
|
|
u32 *recurrence_counter;
|
|
struct tlv_invoice_send_invoice *send_invoice;
|
|
u32 *recurrence_start;
|
|
u64 *recurrence_basetime;
|
|
struct pubkey32 *payer_key;
|
|
u8 *payer_info;
|
|
u64 *timestamp;
|
|
struct sha256 *payment_hash;
|
|
u32 *relative_expiry;
|
|
u32 *cltv;
|
|
struct tlv_invoice_fallbacks *fallbacks;
|
|
struct bip340sig *refund_signature;
|
|
struct bip340sig *signature;
|
|
};
|
|
struct tlv_invoice_error {
|
|
/* Raw fields including unknown ones. */
|
|
struct tlv_field *fields;
|
|
|
|
/* TODO The following explicit fields could just point into the
|
|
* tlv_field entries above to save on memory. */
|
|
u64 *erroneous_field;
|
|
u8 *suggested_value;
|
|
utf8 *error;
|
|
};
|
|
|
|
struct tlv_offer *tlv_offer_new(const tal_t *ctx);
|
|
|
|
/**
|
|
* Deserialize a TLV stream for the offer namespace.
|
|
*
|
|
* This function will parse any TLV stream, as long as the type, length and
|
|
* value fields are formatted correctly. Fields that are not known in the
|
|
* current namespace are stored in the `fields` member. Validity can be
|
|
* checked using offer_is_valid.
|
|
*/
|
|
bool fromwire_offer(const u8 **cursor, size_t *max,
|
|
struct tlv_offer * record);
|
|
|
|
/**
|
|
* Serialize a TLV stream for the offer namespace.
|
|
*
|
|
* This function only considers known fields from the offer namespace,
|
|
* and will ignore any fields that may be stored in the `fields` member. This
|
|
* ensures that the resulting stream is valid according to
|
|
* `offer_is_valid`.
|
|
*/
|
|
void towire_offer(u8 **pptr, const struct tlv_offer *record);
|
|
|
|
/**
|
|
* Check that the TLV stream is valid.
|
|
*
|
|
* Enforces the followin validity rules:
|
|
* - Types must be in monotonic non-repeating order
|
|
* - We must understand all even types
|
|
*
|
|
* Returns false if an error was detected, otherwise returns true. If err_index
|
|
* is non-null and we detect an error it is set to the index of the first error
|
|
* detected.
|
|
*/
|
|
bool offer_is_valid(const struct tlv_offer *record,
|
|
size_t *err_index);
|
|
|
|
struct tlv_invoice_request *tlv_invoice_request_new(const tal_t *ctx);
|
|
|
|
/**
|
|
* Deserialize a TLV stream for the invoice_request namespace.
|
|
*
|
|
* This function will parse any TLV stream, as long as the type, length and
|
|
* value fields are formatted correctly. Fields that are not known in the
|
|
* current namespace are stored in the `fields` member. Validity can be
|
|
* checked using invoice_request_is_valid.
|
|
*/
|
|
bool fromwire_invoice_request(const u8 **cursor, size_t *max,
|
|
struct tlv_invoice_request * record);
|
|
|
|
/**
|
|
* Serialize a TLV stream for the invoice_request namespace.
|
|
*
|
|
* This function only considers known fields from the invoice_request namespace,
|
|
* and will ignore any fields that may be stored in the `fields` member. This
|
|
* ensures that the resulting stream is valid according to
|
|
* `invoice_request_is_valid`.
|
|
*/
|
|
void towire_invoice_request(u8 **pptr, const struct tlv_invoice_request *record);
|
|
|
|
/**
|
|
* Check that the TLV stream is valid.
|
|
*
|
|
* Enforces the followin validity rules:
|
|
* - Types must be in monotonic non-repeating order
|
|
* - We must understand all even types
|
|
*
|
|
* Returns false if an error was detected, otherwise returns true. If err_index
|
|
* is non-null and we detect an error it is set to the index of the first error
|
|
* detected.
|
|
*/
|
|
bool invoice_request_is_valid(const struct tlv_invoice_request *record,
|
|
size_t *err_index);
|
|
|
|
#define TLVS_ARRAY_SIZE_invoice_request 10
|
|
extern const struct tlv_record_type tlvs_invoice_request[];
|
|
|
|
|
|
|
|
/* Define an enum with the constants */
|
|
enum invoice_request_types {
|
|
TLV_INVOICE_REQUEST_CHAINS = 2,
|
|
TLV_INVOICE_REQUEST_OFFER_ID = 4,
|
|
TLV_INVOICE_REQUEST_AMOUNT = 8,
|
|
TLV_INVOICE_REQUEST_FEATURES = 12,
|
|
TLV_INVOICE_REQUEST_QUANTITY = 32,
|
|
TLV_INVOICE_REQUEST_RECURRENCE_COUNTER = 36,
|
|
TLV_INVOICE_REQUEST_PAYER_KEY = 38,
|
|
TLV_INVOICE_REQUEST_PAYER_INFO = 50,
|
|
TLV_INVOICE_REQUEST_RECURRENCE_START = 68,
|
|
TLV_INVOICE_REQUEST_RECURRENCE_SIGNATURE = 242,
|
|
};
|
|
|
|
struct tlv_invoice *tlv_invoice_new(const tal_t *ctx);
|
|
|
|
/**
|
|
* Deserialize a TLV stream for the invoice namespace.
|
|
*
|
|
* This function will parse any TLV stream, as long as the type, length and
|
|
* value fields are formatted correctly. Fields that are not known in the
|
|
* current namespace are stored in the `fields` member. Validity can be
|
|
* checked using invoice_is_valid.
|
|
*/
|
|
bool fromwire_invoice(const u8 **cursor, size_t *max,
|
|
struct tlv_invoice * record);
|
|
|
|
/**
|
|
* Serialize a TLV stream for the invoice namespace.
|
|
*
|
|
* This function only considers known fields from the invoice namespace,
|
|
* and will ignore any fields that may be stored in the `fields` member. This
|
|
* ensures that the resulting stream is valid according to
|
|
* `invoice_is_valid`.
|
|
*/
|
|
void towire_invoice(u8 **pptr, const struct tlv_invoice *record);
|
|
|
|
/**
|
|
* Check that the TLV stream is valid.
|
|
*
|
|
* Enforces the followin validity rules:
|
|
* - Types must be in monotonic non-repeating order
|
|
* - We must understand all even types
|
|
*
|
|
* Returns false if an error was detected, otherwise returns true. If err_index
|
|
* is non-null and we detect an error it is set to the index of the first error
|
|
* detected.
|
|
*/
|
|
bool invoice_is_valid(const struct tlv_invoice *record,
|
|
size_t *err_index);
|
|
|
|
struct tlv_invoice_error *tlv_invoice_error_new(const tal_t *ctx);
|
|
|
|
/**
|
|
* Deserialize a TLV stream for the invoice_error namespace.
|
|
*
|
|
* This function will parse any TLV stream, as long as the type, length and
|
|
* value fields are formatted correctly. Fields that are not known in the
|
|
* current namespace are stored in the `fields` member. Validity can be
|
|
* checked using invoice_error_is_valid.
|
|
*/
|
|
bool fromwire_invoice_error(const u8 **cursor, size_t *max,
|
|
struct tlv_invoice_error * record);
|
|
|
|
/**
|
|
* Serialize a TLV stream for the invoice_error namespace.
|
|
*
|
|
* This function only considers known fields from the invoice_error namespace,
|
|
* and will ignore any fields that may be stored in the `fields` member. This
|
|
* ensures that the resulting stream is valid according to
|
|
* `invoice_error_is_valid`.
|
|
*/
|
|
void towire_invoice_error(u8 **pptr, const struct tlv_invoice_error *record);
|
|
|
|
/**
|
|
* Check that the TLV stream is valid.
|
|
*
|
|
* Enforces the followin validity rules:
|
|
* - Types must be in monotonic non-repeating order
|
|
* - We must understand all even types
|
|
*
|
|
* Returns false if an error was detected, otherwise returns true. If err_index
|
|
* is non-null and we detect an error it is set to the index of the first error
|
|
* detected.
|
|
*/
|
|
bool invoice_error_is_valid(const struct tlv_invoice_error *record,
|
|
size_t *err_index);
|
|
|
|
/* SUBTYPE: BLINDED_PATH */
|
|
void towire_blinded_path(u8 **p, const struct blinded_path *blinded_path);
|
|
struct blinded_path *fromwire_blinded_path(const tal_t *ctx, const u8 **cursor, size_t *plen);
|
|
|
|
/* SUBTYPE: BLINDED_PAYINFO */
|
|
void towire_blinded_payinfo(u8 **p, const struct blinded_payinfo *blinded_payinfo);
|
|
struct blinded_payinfo *fromwire_blinded_payinfo(const tal_t *ctx, const u8 **cursor, size_t *plen);
|
|
|
|
/* SUBTYPE: FALLBACK_ADDRESS */
|
|
void towire_fallback_address(u8 **p, const struct fallback_address *fallback_address);
|
|
struct fallback_address *fromwire_fallback_address(const tal_t *ctx, const u8 **cursor, size_t *plen);
|
|
|
|
|
|
#endif /* LIGHTNING_WIRE_BOLT12_WIREGEN_H */
|
|
// SHA256STAMP:b09ebf868d0b5b9792d0054bee17d763c1243d18c419847c554c63aefb7a8548
|
|
|