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

/* 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