2 import CommonBase from './CommonBase';
3 import * as bindings from '../bindings' // TODO: figure out location
5 export default class Event extends CommonBase {
6 protected constructor(_dummy: object, ptr: number) { super(ptr); }
9 if (this.ptr != 0) { bindings.Event_free(this.ptr); }
11 static constr_from_ptr(ptr: number): Event {
12 const raw_val: bindings.LDKEvent = bindings.LDKEvent_ref_from_ptr(ptr);
13 if (raw_val instanceof bindings.LDKEvent.FundingGenerationReady) {
14 return new FundingGenerationReady(this.ptr, raw_val);
16 if (raw_val instanceof bindings.LDKEvent.PaymentReceived) {
17 return new PaymentReceived(this.ptr, raw_val);
19 if (raw_val instanceof bindings.LDKEvent.PaymentSent) {
20 return new PaymentSent(this.ptr, raw_val);
22 if (raw_val instanceof bindings.LDKEvent.PaymentPathFailed) {
23 return new PaymentPathFailed(this.ptr, raw_val);
25 if (raw_val instanceof bindings.LDKEvent.PendingHTLCsForwardable) {
26 return new PendingHTLCsForwardable(this.ptr, raw_val);
28 if (raw_val instanceof bindings.LDKEvent.SpendableOutputs) {
29 return new SpendableOutputs(this.ptr, raw_val);
31 if (raw_val instanceof bindings.LDKEvent.PaymentForwarded) {
32 return new PaymentForwarded(this.ptr, raw_val);
34 if (raw_val instanceof bindings.LDKEvent.ChannelClosed) {
35 return new ChannelClosed(this.ptr, raw_val);
37 if (raw_val instanceof bindings.LDKEvent.DiscardFunding) {
38 return new DiscardFunding(this.ptr, raw_val);
40 throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
44 export class FundingGenerationReady extends Event {
45 public temporary_channel_id: Uint8Array;
46 public channel_value_satoshis: number;
47 public output_script: Uint8Array;
48 public user_channel_id: number;
49 private constructor(ptr: number, obj: bindings.LDKEvent.FundingGenerationReady) {
51 this.temporary_channel_id = obj.temporary_channel_id;
52 this.channel_value_satoshis = obj.channel_value_satoshis;
53 this.output_script = obj.output_script;
54 this.user_channel_id = obj.user_channel_id;
57 export class PaymentReceived extends Event {
58 public payment_hash: Uint8Array;
60 public purpose: PaymentPurpose;
61 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentReceived) {
63 this.payment_hash = obj.payment_hash;
65 const purpose: number = obj.purpose;
66 PaymentPurpose purpose_hu_conv = PaymentPurpose.constr_from_ptr(purpose);
67 purpose_hu_conv.ptrs_to.add(this);
68 this.purpose = purpose_hu_conv;
71 export class PaymentSent extends Event {
72 public payment_preimage: Uint8Array;
73 public payment_hash: Uint8Array;
74 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentSent) {
76 this.payment_preimage = obj.payment_preimage;
77 this.payment_hash = obj.payment_hash;
80 export class PaymentPathFailed extends Event {
81 public payment_hash: Uint8Array;
82 public rejected_by_dest: boolean;
83 public network_update: Option_NetworkUpdateZ;
84 public all_paths_failed: boolean;
85 public path: RouteHop[];
86 public short_channel_id: Option_u64Z;
87 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentPathFailed) {
89 this.payment_hash = obj.payment_hash;
90 this.rejected_by_dest = obj.rejected_by_dest;
91 const network_update: number = obj.network_update;
92 Option_NetworkUpdateZ network_update_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(network_update);
93 network_update_hu_conv.ptrs_to.add(this);
94 this.network_update = network_update_hu_conv;
95 this.all_paths_failed = obj.all_paths_failed;
96 const path: number[] = obj.path;
97 RouteHop[] path_conv_10_arr = new RouteHop[path.length];
98 for (int k = 0; k < path.length; k++) {
99 number path_conv_10 = path[k];
100 const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
101 path_conv_10_hu_conv.ptrs_to.add(this);
102 path_conv_10_arr[k] = path_conv_10_hu_conv;
104 this.path = path_conv_10_arr;
105 const short_channel_id: number = obj.short_channel_id;
106 Option_u64Z short_channel_id_hu_conv = Option_u64Z.constr_from_ptr(short_channel_id);
107 short_channel_id_hu_conv.ptrs_to.add(this);
108 this.short_channel_id = short_channel_id_hu_conv;
111 export class PendingHTLCsForwardable extends Event {
112 public time_forwardable: number;
113 private constructor(ptr: number, obj: bindings.LDKEvent.PendingHTLCsForwardable) {
115 this.time_forwardable = obj.time_forwardable;
118 export class SpendableOutputs extends Event {
119 public outputs: SpendableOutputDescriptor[];
120 private constructor(ptr: number, obj: bindings.LDKEvent.SpendableOutputs) {
122 const outputs: number[] = obj.outputs;
123 SpendableOutputDescriptor[] outputs_conv_27_arr = new SpendableOutputDescriptor[outputs.length];
124 for (int b = 0; b < outputs.length; b++) {
125 number outputs_conv_27 = outputs[b];
126 SpendableOutputDescriptor outputs_conv_27_hu_conv = SpendableOutputDescriptor.constr_from_ptr(outputs_conv_27);
127 outputs_conv_27_hu_conv.ptrs_to.add(this);
128 outputs_conv_27_arr[b] = outputs_conv_27_hu_conv;
130 this.outputs = outputs_conv_27_arr;
133 export class PaymentForwarded extends Event {
134 public fee_earned_msat: Option_u64Z;
135 public claim_from_onchain_tx: boolean;
136 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentForwarded) {
138 const fee_earned_msat: number = obj.fee_earned_msat;
139 Option_u64Z fee_earned_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_earned_msat);
140 fee_earned_msat_hu_conv.ptrs_to.add(this);
141 this.fee_earned_msat = fee_earned_msat_hu_conv;
142 this.claim_from_onchain_tx = obj.claim_from_onchain_tx;
145 export class ChannelClosed extends Event {
146 public channel_id: Uint8Array;
147 public user_channel_id: number;
148 public reason: ClosureReason;
149 private constructor(ptr: number, obj: bindings.LDKEvent.ChannelClosed) {
151 this.channel_id = obj.channel_id;
152 this.user_channel_id = obj.user_channel_id;
153 const reason: number = obj.reason;
154 ClosureReason reason_hu_conv = ClosureReason.constr_from_ptr(reason);
155 reason_hu_conv.ptrs_to.add(this);
156 this.reason = reason_hu_conv;
159 export class DiscardFunding extends Event {
160 public channel_id: Uint8Array;
161 public transaction: Uint8Array;
162 private constructor(ptr: number, obj: bindings.LDKEvent.DiscardFunding) {
164 this.channel_id = obj.channel_id;
165 this.transaction = obj.transaction;
168 public Event clone() {
169 number ret = bindings.Event_clone(this.ptr);
170 Event ret_hu_conv = Event.constr_from_ptr(ret);
171 ret_hu_conv.ptrs_to.add(this);
175 public static Event constructor_funding_generation_ready(Uint8Array temporary_channel_id, number channel_value_satoshis, Uint8Array output_script, number user_channel_id) {
176 number ret = bindings.Event_funding_generation_ready(temporary_channel_id, channel_value_satoshis, output_script, user_channel_id);
177 Event ret_hu_conv = Event.constr_from_ptr(ret);
178 ret_hu_conv.ptrs_to.add(ret_hu_conv);
182 public static Event constructor_payment_received(Uint8Array payment_hash, number amt, PaymentPurpose purpose) {
183 number ret = bindings.Event_payment_received(payment_hash, amt, purpose.ptr);
184 Event ret_hu_conv = Event.constr_from_ptr(ret);
185 ret_hu_conv.ptrs_to.add(ret_hu_conv);
189 public static Event constructor_payment_sent(Uint8Array payment_preimage, Uint8Array payment_hash) {
190 number ret = bindings.Event_payment_sent(payment_preimage, payment_hash);
191 Event ret_hu_conv = Event.constr_from_ptr(ret);
192 ret_hu_conv.ptrs_to.add(ret_hu_conv);
196 public static Event constructor_payment_path_failed(Uint8Array payment_hash, boolean rejected_by_dest, Option_NetworkUpdateZ network_update, boolean all_paths_failed, RouteHop[] path, Option_u64Z short_channel_id) {
197 number ret = bindings.Event_payment_path_failed(payment_hash, rejected_by_dest, network_update.ptr, all_paths_failed, path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null, short_channel_id.ptr);
198 Event ret_hu_conv = Event.constr_from_ptr(ret);
199 ret_hu_conv.ptrs_to.add(ret_hu_conv);
203 public static Event constructor_pending_htlcs_forwardable(number time_forwardable) {
204 number ret = bindings.Event_pending_htlcs_forwardable(time_forwardable);
205 Event ret_hu_conv = Event.constr_from_ptr(ret);
206 ret_hu_conv.ptrs_to.add(ret_hu_conv);
210 public static Event constructor_spendable_outputs(SpendableOutputDescriptor[] outputs) {
211 number ret = bindings.Event_spendable_outputs(outputs != null ? Arrays.stream(outputs).map(outputs_conv_27 -> outputs_conv_27.ptr).toArray(number[]::new) : null);
212 Event ret_hu_conv = Event.constr_from_ptr(ret);
213 ret_hu_conv.ptrs_to.add(ret_hu_conv);
217 public static Event constructor_payment_forwarded(Option_u64Z fee_earned_msat, boolean claim_from_onchain_tx) {
218 number ret = bindings.Event_payment_forwarded(fee_earned_msat.ptr, claim_from_onchain_tx);
219 Event ret_hu_conv = Event.constr_from_ptr(ret);
220 ret_hu_conv.ptrs_to.add(ret_hu_conv);
224 public static Event constructor_channel_closed(Uint8Array channel_id, number user_channel_id, ClosureReason reason) {
225 number ret = bindings.Event_channel_closed(channel_id, user_channel_id, reason.ptr);
226 Event ret_hu_conv = Event.constr_from_ptr(ret);
227 ret_hu_conv.ptrs_to.add(ret_hu_conv);
231 public static Event constructor_discard_funding(Uint8Array channel_id, Uint8Array transaction) {
232 number ret = bindings.Event_discard_funding(channel_id, transaction);
233 Event ret_hu_conv = Event.constr_from_ptr(ret);
234 ret_hu_conv.ptrs_to.add(ret_hu_conv);
238 public Uint8Array write() {
239 Uint8Array ret = bindings.Event_write(this.ptr);