#ifndef LNSOCKET_H #define LNSOCKET_H #include #include struct lnsocket; #ifdef __EMSCRIPTEN__ #include #define EXPORT EMSCRIPTEN_KEEPALIVE #else #define EXPORT #endif enum peer_wire { WIRE_INIT = 16, WIRE_ERROR = 17, WIRE_WARNING = 1, WIRE_PING = 18, WIRE_PONG = 19, WIRE_TX_ADD_INPUT = 66, WIRE_TX_ADD_OUTPUT = 67, WIRE_TX_REMOVE_INPUT = 68, WIRE_TX_REMOVE_OUTPUT = 69, WIRE_TX_COMPLETE = 70, WIRE_TX_SIGNATURES = 71, WIRE_OPEN_CHANNEL = 32, WIRE_ACCEPT_CHANNEL = 33, WIRE_FUNDING_CREATED = 34, WIRE_FUNDING_SIGNED = 35, WIRE_FUNDING_LOCKED = 36, WIRE_OPEN_CHANNEL2 = 64, WIRE_ACCEPT_CHANNEL2 = 65, WIRE_INIT_RBF = 72, WIRE_ACK_RBF = 73, WIRE_SHUTDOWN = 38, WIRE_CLOSING_SIGNED = 39, WIRE_UPDATE_ADD_HTLC = 128, WIRE_UPDATE_FULFILL_HTLC = 130, WIRE_UPDATE_FAIL_HTLC = 131, WIRE_UPDATE_FAIL_MALFORMED_HTLC = 135, WIRE_COMMITMENT_SIGNED = 132, WIRE_REVOKE_AND_ACK = 133, WIRE_UPDATE_FEE = 134, WIRE_UPDATE_BLOCKHEIGHT = 137, WIRE_CHANNEL_REESTABLISH = 136, WIRE_ANNOUNCEMENT_SIGNATURES = 259, WIRE_CHANNEL_ANNOUNCEMENT = 256, WIRE_NODE_ANNOUNCEMENT = 257, WIRE_CHANNEL_UPDATE = 258, WIRE_QUERY_SHORT_CHANNEL_IDS = 261, WIRE_REPLY_SHORT_CHANNEL_IDS_END = 262, WIRE_QUERY_CHANNEL_RANGE = 263, WIRE_REPLY_CHANNEL_RANGE = 264, WIRE_GOSSIP_TIMESTAMP_FILTER = 265, WIRE_OBS2_ONION_MESSAGE = 387, WIRE_ONION_MESSAGE = 513, }; /* A single TLV field, consisting of the data and its associated metadata. */ struct tlv { uint64_t type; size_t length; unsigned char *value; }; struct lnsocket EXPORT *lnsocket_create(); /* messages */ int lnsocket_make_network_tlv(unsigned char *buf, int buflen, const unsigned char **blockids, int num_blockids, struct tlv *tlv_out); int EXPORT lnsocket_make_ping_msg(unsigned char *buf, int buflen, unsigned short num_pong_bytes, unsigned short ignored_bytes); int lnsocket_make_init_msg(unsigned char *buf, int buflen, const unsigned char *globalfeatures, unsigned short gflen, const unsigned char *features, unsigned short flen, const struct tlv **tlvs, unsigned short num_tlvs, unsigned short *outlen); int lnsocket_perform_init(struct lnsocket *ln); int lnsocket_connect(struct lnsocket *, const char *node_id, const char *host); int lnsocket_fd(struct lnsocket *, int *fd); int lnsocket_write(struct lnsocket *, const unsigned char *msg, unsigned short msg_len); int lnsocket_read(struct lnsocket *, unsigned char **buf, unsigned short *len); int lnsocket_send(struct lnsocket *, unsigned short msg_type, const unsigned char *payload, unsigned short payload_len); int lnsocket_recv(struct lnsocket *, unsigned short *msg_type, unsigned char **payload, unsigned short *payload_len); void* EXPORT lnsocket_secp(struct lnsocket *); void EXPORT lnsocket_genkey(struct lnsocket *); void EXPORT lnsocket_destroy(struct lnsocket *); void EXPORT lnsocket_print_errors(struct lnsocket *); int EXPORT lnsocket_make_default_initmsg(unsigned char *msgbuf, int buflen); int EXPORT lnsocket_encrypt(struct lnsocket *ln, const unsigned char *msg, unsigned short msglen); int EXPORT lnsocket_decrypt_header(struct lnsocket *ln, unsigned char *hdr); #endif /* LNSOCKET_H */