34555536253a08e72017feab484d3b9fb7a2c95d
[ldk-java] / ts / structs / Watch.ts
1
2             
3 import CommonBase from './CommonBase';
4 import * as bindings from '../bindings' // TODO: figure out location
5
6
7
8             export class Watch extends CommonBase {
9
10                 bindings_instance?: bindings.LDKWatch;
11
12                 constructor(ptr?: number, arg?: bindings.LDKWatch) {
13                     if (Number.isFinite(ptr)) {
14                                         super(ptr);
15                                         this.bindings_instance = null;
16                                     } else {
17                                         // TODO: private constructor instantiation
18                                         super(bindings.LDKWatch_new(arg));
19                                         this.ptrs_to.push(arg);
20                                         
21                                     }
22                 }
23
24                 protected finalize() {
25                     if (this.ptr != 0) {
26                         bindings.Watch_free(this.ptr);
27                     }
28                     super.finalize();
29                 }
30
31                 static new_impl(arg: WatchInterface): Watch {
32                     const impl_holder: LDKWatchHolder = new LDKWatchHolder();
33                     let structImplementation = <bindings.LDKWatch>{
34                         // todo: in-line interface filling
35                         watch_channel (funding_txo: number, monitor: number): number {
36                                                         const funding_txo_hu_conv: OutPoint = new OutPoint(null, funding_txo);
37                                 funding_txo_hu_conv.ptrs_to.add(this);
38                                                         const monitor_hu_conv: ChannelMonitor = new ChannelMonitor(null, monitor);
39                                 monitor_hu_conv.ptrs_to.add(this);
40                                                         Result_NoneChannelMonitorUpdateErrZ ret = arg.watch_channel(funding_txo_hu_conv, monitor_hu_conv);
41                                 result: number = ret != null ? ret.ptr : 0;
42                                 return result;
43                                                 },
44
45                                                 update_channel (funding_txo: number, update: number): number {
46                                                         const funding_txo_hu_conv: OutPoint = new OutPoint(null, funding_txo);
47                                 funding_txo_hu_conv.ptrs_to.add(this);
48                                                         const update_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, update);
49                                 update_hu_conv.ptrs_to.add(this);
50                                                         Result_NoneChannelMonitorUpdateErrZ ret = arg.update_channel(funding_txo_hu_conv, update_hu_conv);
51                                 result: number = ret != null ? ret.ptr : 0;
52                                 return result;
53                                                 },
54
55                                                 release_pending_monitor_events (): number[] {
56                                                         MonitorEvent[] ret = arg.release_pending_monitor_events();
57                                 result: number[] = Arrays.stream(ret).map(arr_conv_14 -> arr_conv_14 == null ? 0 : arr_conv_14.ptr & ~1).toArray(number[]::new);
58                                 /* TODO 2 MonitorEvent  */;
59                                 return result;
60                                                 },
61
62                                                 
63                     };
64                     impl_holder.held = new Watch (null, structImplementation);
65                 }
66             }
67
68             export interface WatchInterface {
69                 watch_channel(funding_txo: OutPoint, monitor: ChannelMonitor): Result_NoneChannelMonitorUpdateErrZ;
70                                 update_channel(funding_txo: OutPoint, update: ChannelMonitorUpdate): Result_NoneChannelMonitorUpdateErrZ;
71                                 release_pending_monitor_events(): MonitorEvent[];
72                                 
73             }
74
75             class LDKWatchHolder {
76                 held: Watch;
77             }
78         public Result_NoneChannelMonitorUpdateErrZ watch_channel(OutPoint funding_txo, ChannelMonitor monitor) {
79                 number ret = bindings.Watch_watch_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, monitor == null ? 0 : monitor.ptr & ~1);
80                 Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
81                 this.ptrs_to.add(funding_txo);
82                 this.ptrs_to.add(monitor);
83                 return ret_hu_conv;
84         }
85
86         public Result_NoneChannelMonitorUpdateErrZ update_channel(OutPoint funding_txo, ChannelMonitorUpdate update) {
87                 number ret = bindings.Watch_update_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, update == null ? 0 : update.ptr & ~1);
88                 Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
89                 this.ptrs_to.add(funding_txo);
90                 this.ptrs_to.add(update);
91                 return ret_hu_conv;
92         }
93
94         public MonitorEvent[] release_pending_monitor_events() {
95                 number[] ret = bindings.Watch_release_pending_monitor_events(this.ptr);
96                 MonitorEvent[] arr_conv_14_arr = new MonitorEvent[ret.length];
97                 for (int o = 0; o < ret.length; o++) {
98                         number arr_conv_14 = ret[o];
99                         const arr_conv_14_hu_conv: MonitorEvent = new MonitorEvent(null, arr_conv_14);
100                         arr_conv_14_hu_conv.ptrs_to.add(this);
101                         arr_conv_14_arr[o] = arr_conv_14_hu_conv;
102                 }
103                 return arr_conv_14_arr;
104         }
105
106 }