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_id: Uint8Array;
73 public payment_preimage: Uint8Array;
74 public payment_hash: Uint8Array;
75 public fee_paid_msat: Option_u64Z;
76 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentSent) {
78 this.payment_id = obj.payment_id;
79 this.payment_preimage = obj.payment_preimage;
80 this.payment_hash = obj.payment_hash;
81 const fee_paid_msat: number = obj.fee_paid_msat;
82 Option_u64Z fee_paid_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_paid_msat);
83 fee_paid_msat_hu_conv.ptrs_to.add(this);
84 this.fee_paid_msat = fee_paid_msat_hu_conv;
87 export class PaymentPathFailed extends Event {
88 public payment_id: Uint8Array;
89 public payment_hash: Uint8Array;
90 public rejected_by_dest: boolean;
91 public network_update: Option_NetworkUpdateZ;
92 public all_paths_failed: boolean;
93 public path: RouteHop[];
94 public short_channel_id: Option_u64Z;
95 public retry: RouteParameters;
96 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentPathFailed) {
98 this.payment_id = obj.payment_id;
99 this.payment_hash = obj.payment_hash;
100 this.rejected_by_dest = obj.rejected_by_dest;
101 const network_update: number = obj.network_update;
102 Option_NetworkUpdateZ network_update_hu_conv = Option_NetworkUpdateZ.constr_from_ptr(network_update);
103 network_update_hu_conv.ptrs_to.add(this);
104 this.network_update = network_update_hu_conv;
105 this.all_paths_failed = obj.all_paths_failed;
106 const path: number[] = obj.path;
107 RouteHop[] path_conv_10_arr = new RouteHop[path.length];
108 for (int k = 0; k < path.length; k++) {
109 number path_conv_10 = path[k];
110 const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
111 path_conv_10_hu_conv.ptrs_to.add(this);
112 path_conv_10_arr[k] = path_conv_10_hu_conv;
114 this.path = path_conv_10_arr;
115 const short_channel_id: number = obj.short_channel_id;
116 Option_u64Z short_channel_id_hu_conv = Option_u64Z.constr_from_ptr(short_channel_id);
117 short_channel_id_hu_conv.ptrs_to.add(this);
118 this.short_channel_id = short_channel_id_hu_conv;
119 const retry: number = obj.retry;
120 const retry_hu_conv: RouteParameters = new RouteParameters(null, retry);
121 retry_hu_conv.ptrs_to.add(this);
122 this.retry = retry_hu_conv;
125 export class PendingHTLCsForwardable extends Event {
126 public time_forwardable: number;
127 private constructor(ptr: number, obj: bindings.LDKEvent.PendingHTLCsForwardable) {
129 this.time_forwardable = obj.time_forwardable;
132 export class SpendableOutputs extends Event {
133 public outputs: SpendableOutputDescriptor[];
134 private constructor(ptr: number, obj: bindings.LDKEvent.SpendableOutputs) {
136 const outputs: number[] = obj.outputs;
137 SpendableOutputDescriptor[] outputs_conv_27_arr = new SpendableOutputDescriptor[outputs.length];
138 for (int b = 0; b < outputs.length; b++) {
139 number outputs_conv_27 = outputs[b];
140 SpendableOutputDescriptor outputs_conv_27_hu_conv = SpendableOutputDescriptor.constr_from_ptr(outputs_conv_27);
141 outputs_conv_27_hu_conv.ptrs_to.add(this);
142 outputs_conv_27_arr[b] = outputs_conv_27_hu_conv;
144 this.outputs = outputs_conv_27_arr;
147 export class PaymentForwarded extends Event {
148 public fee_earned_msat: Option_u64Z;
149 public claim_from_onchain_tx: boolean;
150 private constructor(ptr: number, obj: bindings.LDKEvent.PaymentForwarded) {
152 const fee_earned_msat: number = obj.fee_earned_msat;
153 Option_u64Z fee_earned_msat_hu_conv = Option_u64Z.constr_from_ptr(fee_earned_msat);
154 fee_earned_msat_hu_conv.ptrs_to.add(this);
155 this.fee_earned_msat = fee_earned_msat_hu_conv;
156 this.claim_from_onchain_tx = obj.claim_from_onchain_tx;
159 export class ChannelClosed extends Event {
160 public channel_id: Uint8Array;
161 public user_channel_id: number;
162 public reason: ClosureReason;
163 private constructor(ptr: number, obj: bindings.LDKEvent.ChannelClosed) {
165 this.channel_id = obj.channel_id;
166 this.user_channel_id = obj.user_channel_id;
167 const reason: number = obj.reason;
168 ClosureReason reason_hu_conv = ClosureReason.constr_from_ptr(reason);
169 reason_hu_conv.ptrs_to.add(this);
170 this.reason = reason_hu_conv;
173 export class DiscardFunding extends Event {
174 public channel_id: Uint8Array;
175 public transaction: Uint8Array;
176 private constructor(ptr: number, obj: bindings.LDKEvent.DiscardFunding) {
178 this.channel_id = obj.channel_id;
179 this.transaction = obj.transaction;
182 public Event clone() {
183 number ret = bindings.Event_clone(this.ptr);
184 Event ret_hu_conv = Event.constr_from_ptr(ret);
185 ret_hu_conv.ptrs_to.add(this);
189 public static Event constructor_funding_generation_ready(Uint8Array temporary_channel_id, number channel_value_satoshis, Uint8Array output_script, number user_channel_id) {
190 number ret = bindings.Event_funding_generation_ready(temporary_channel_id, channel_value_satoshis, output_script, user_channel_id);
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_received(Uint8Array payment_hash, number amt, PaymentPurpose purpose) {
197 number ret = bindings.Event_payment_received(payment_hash, amt, purpose.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_payment_sent(Uint8Array payment_id, Uint8Array payment_preimage, Uint8Array payment_hash, Option_u64Z fee_paid_msat) {
204 number ret = bindings.Event_payment_sent(payment_id, payment_preimage, payment_hash, fee_paid_msat.ptr);
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_payment_path_failed(Uint8Array payment_id, Uint8Array payment_hash, boolean rejected_by_dest, Option_NetworkUpdateZ network_update, boolean all_paths_failed, RouteHop[] path, Option_u64Z short_channel_id, RouteParameters retry) {
211 number ret = bindings.Event_payment_path_failed(payment_id, 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, retry == null ? 0 : retry.ptr & ~1);
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_pending_htlcs_forwardable(number time_forwardable) {
218 number ret = bindings.Event_pending_htlcs_forwardable(time_forwardable);
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_spendable_outputs(SpendableOutputDescriptor[] outputs) {
225 number ret = bindings.Event_spendable_outputs(outputs != null ? Arrays.stream(outputs).map(outputs_conv_27 -> outputs_conv_27.ptr).toArray(number[]::new) : null);
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_payment_forwarded(Option_u64Z fee_earned_msat, boolean claim_from_onchain_tx) {
232 number ret = bindings.Event_payment_forwarded(fee_earned_msat.ptr, claim_from_onchain_tx);
233 Event ret_hu_conv = Event.constr_from_ptr(ret);
234 ret_hu_conv.ptrs_to.add(ret_hu_conv);
238 public static Event constructor_channel_closed(Uint8Array channel_id, number user_channel_id, ClosureReason reason) {
239 number ret = bindings.Event_channel_closed(channel_id, user_channel_id, reason.ptr);
240 Event ret_hu_conv = Event.constr_from_ptr(ret);
241 ret_hu_conv.ptrs_to.add(ret_hu_conv);
245 public static Event constructor_discard_funding(Uint8Array channel_id, Uint8Array transaction) {
246 number ret = bindings.Event_discard_funding(channel_id, transaction);
247 Event ret_hu_conv = Event.constr_from_ptr(ret);
248 ret_hu_conv.ptrs_to.add(ret_hu_conv);
252 public Uint8Array write() {
253 Uint8Array ret = bindings.Event_write(this.ptr);