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 throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
41 export class FundingGenerationReady extends Event {
42 public temporary_channel_id: Uint8Array;
43 public channel_value_satoshis: number;
44 public output_script: Uint8Array;
45 public user_channel_id: number;
46 private constructor(ptr: number, obj: bindings.LDKEvent.FundingGenerationReady) {
48 this.temporary_channel_id = obj.temporary_channel_id;
49 this.channel_value_satoshis = obj.channel_value_satoshis;
50 this.output_script = obj.output_script;
51 this.user_channel_id = obj.user_channel_id;
54 export class PaymentReceived extends Event {
55 public payment_hash: Uint8Array;
57 public purpose: PaymentPurpose;
58 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentReceived) {
60 this.payment_hash = obj.payment_hash;
62 const purpose: number = obj.purpose;
63 PaymentPurpose purpose_hu_conv = PaymentPurpose.constr_from_ptr(purpose);
64 purpose_hu_conv.ptrs_to.add(this);
65 this.purpose = purpose_hu_conv;
68 export class PaymentSent extends Event {
69 public payment_preimage: Uint8Array;
70 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentSent) {
72 this.payment_preimage = obj.payment_preimage;
75 export class PaymentPathFailed extends Event {
76 public payment_hash: Uint8Array;
77 public rejected_by_dest: boolean;
78 public network_update: Option_NetworkUpdateZ;
79 public all_paths_failed: boolean;
80 public path: RouteHop[];
81 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentPathFailed) {
83 this.payment_hash = obj.payment_hash;
84 this.rejected_by_dest = obj.rejected_by_dest;
85 const network_update: number = obj.network_update;
86 Option_NetworkUpdateZ network_update_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(network_update);
87 network_update_hu_conv.ptrs_to.add(this);
88 this.network_update = network_update_hu_conv;
89 this.all_paths_failed = obj.all_paths_failed;
90 const path: number[] = obj.path;
91 RouteHop[] path_conv_10_arr = new RouteHop[path.length];
92 for (int k = 0; k < path.length; k++) {
93 number path_conv_10 = path[k];
94 const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
95 path_conv_10_hu_conv.ptrs_to.add(this);
96 path_conv_10_arr[k] = path_conv_10_hu_conv;
98 this.path = path_conv_10_arr;
101 export class PendingHTLCsForwardable extends Event {
102 public time_forwardable: number;
103 private constructor(ptr: number, obj: bindings.LDKEvent.PendingHTLCsForwardable) {
105 this.time_forwardable = obj.time_forwardable;
108 export class SpendableOutputs extends Event {
109 public outputs: SpendableOutputDescriptor[];
110 private constructor(ptr: number, obj: bindings.LDKEvent.SpendableOutputs) {
112 const outputs: number[] = obj.outputs;
113 SpendableOutputDescriptor[] outputs_conv_27_arr = new SpendableOutputDescriptor[outputs.length];
114 for (int b = 0; b < outputs.length; b++) {
115 number outputs_conv_27 = outputs[b];
116 SpendableOutputDescriptor outputs_conv_27_hu_conv = SpendableOutputDescriptor.constr_from_ptr(outputs_conv_27);
117 outputs_conv_27_hu_conv.ptrs_to.add(this);
118 outputs_conv_27_arr[b] = outputs_conv_27_hu_conv;
120 this.outputs = outputs_conv_27_arr;
123 export class PaymentForwarded extends Event {
124 public fee_earned_msat: Option_u64Z;
125 public claim_from_onchain_tx: boolean;
126 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentForwarded) {
128 const fee_earned_msat: number = obj.fee_earned_msat;
129 Option_u64Z fee_earned_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_earned_msat);
130 fee_earned_msat_hu_conv.ptrs_to.add(this);
131 this.fee_earned_msat = fee_earned_msat_hu_conv;
132 this.claim_from_onchain_tx = obj.claim_from_onchain_tx;
135 export class ChannelClosed extends Event {
136 public channel_id: Uint8Array;
137 public reason: ClosureReason;
138 private constructor(ptr: number, obj: bindings.LDKEvent.ChannelClosed) {
140 this.channel_id = obj.channel_id;
141 const reason: number = obj.reason;
142 ClosureReason reason_hu_conv = ClosureReason.constr_from_ptr(reason);
143 reason_hu_conv.ptrs_to.add(this);
144 this.reason = reason_hu_conv;
147 public Event clone() {
148 number ret = bindings.Event_clone(this.ptr);
149 Event ret_hu_conv = Event.constr_from_ptr(ret);
150 ret_hu_conv.ptrs_to.add(this);
154 public static Event constructor_funding_generation_ready(Uint8Array temporary_channel_id, number channel_value_satoshis, Uint8Array output_script, number user_channel_id) {
155 number ret = bindings.Event_funding_generation_ready(temporary_channel_id, channel_value_satoshis, output_script, user_channel_id);
156 Event ret_hu_conv = Event.constr_from_ptr(ret);
157 ret_hu_conv.ptrs_to.add(ret_hu_conv);
161 public static Event constructor_payment_received(Uint8Array payment_hash, number amt, PaymentPurpose purpose) {
162 number ret = bindings.Event_payment_received(payment_hash, amt, purpose.ptr);
163 Event ret_hu_conv = Event.constr_from_ptr(ret);
164 ret_hu_conv.ptrs_to.add(ret_hu_conv);
168 public static Event constructor_payment_sent(Uint8Array payment_preimage) {
169 number ret = bindings.Event_payment_sent(payment_preimage);
170 Event ret_hu_conv = Event.constr_from_ptr(ret);
171 ret_hu_conv.ptrs_to.add(ret_hu_conv);
175 public static Event constructor_payment_path_failed(Uint8Array payment_hash, boolean rejected_by_dest, Option_NetworkUpdateZ network_update, boolean all_paths_failed, RouteHop[] path) {
176 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);
177 Event ret_hu_conv = Event.constr_from_ptr(ret);
178 ret_hu_conv.ptrs_to.add(ret_hu_conv);
179 for (RouteHop path_conv_10: path) { ret_hu_conv.ptrs_to.add(path_conv_10); };
183 public static Event constructor_pending_htlcs_forwardable(number time_forwardable) {
184 number ret = bindings.Event_pending_htlcs_forwardable(time_forwardable);
185 Event ret_hu_conv = Event.constr_from_ptr(ret);
186 ret_hu_conv.ptrs_to.add(ret_hu_conv);
190 public static Event constructor_spendable_outputs(SpendableOutputDescriptor[] outputs) {
191 number ret = bindings.Event_spendable_outputs(outputs != null ? Arrays.stream(outputs).map(outputs_conv_27 -> outputs_conv_27.ptr).toArray(number[]::new) : null);
192 Event ret_hu_conv = Event.constr_from_ptr(ret);
193 ret_hu_conv.ptrs_to.add(ret_hu_conv);
197 public static Event constructor_payment_forwarded(Option_u64Z fee_earned_msat, boolean claim_from_onchain_tx) {
198 number ret = bindings.Event_payment_forwarded(fee_earned_msat.ptr, claim_from_onchain_tx);
199 Event ret_hu_conv = Event.constr_from_ptr(ret);
200 ret_hu_conv.ptrs_to.add(ret_hu_conv);
204 public static Event constructor_channel_closed(Uint8Array channel_id, ClosureReason reason) {
205 number ret = bindings.Event_channel_closed(channel_id, reason.ptr);
206 Event ret_hu_conv = Event.constr_from_ptr(ret);
207 ret_hu_conv.ptrs_to.add(ret_hu_conv);
211 public Uint8Array write() {
212 Uint8Array ret = bindings.Event_write(this.ptr);