3 import CommonBase from './CommonBase';
4 import * as bindings from '../bindings' // TODO: figure out location
8 export class Filter extends CommonBase {
10 bindings_instance?: bindings.LDKFilter;
12 constructor(ptr?: number, arg?: bindings.LDKFilter) {
13 if (Number.isFinite(ptr)) {
15 this.bindings_instance = null;
17 // TODO: private constructor instantiation
18 super(bindings.LDKFilter_new(arg));
19 this.ptrs_to.push(arg);
24 protected finalize() {
26 bindings.Filter_free(this.ptr);
31 static new_impl(arg: FilterInterface): Filter {
32 const impl_holder: LDKFilterHolder = new LDKFilterHolder();
33 let structImplementation = <bindings.LDKFilter>{
34 // todo: in-line interface filling
35 register_tx (txid: Uint8Array, script_pubkey: Uint8Array): void {
36 arg.register_tx(txid, script_pubkey);
39 register_output (output: number): number {
40 const output_hu_conv: WatchedOutput = new WatchedOutput(null, output);
41 output_hu_conv.ptrs_to.add(this);
42 Option_C2Tuple_usizeTransactionZZ ret = arg.register_output(output_hu_conv);
43 result: number = ret == null ? 0 : ret.clone_ptr();
49 impl_holder.held = new Filter (null, structImplementation);
53 export interface FilterInterface {
54 register_tx(txid: Uint8Array, script_pubkey: Uint8Array): void;
55 register_output(output: WatchedOutput): Option_C2Tuple_usizeTransactionZZ;
59 class LDKFilterHolder {
62 public void register_tx(Uint8Array txid, Uint8Array script_pubkey) {
63 bindings.Filter_register_tx(this.ptr, InternalUtils.check_arr_len(txid, 32), script_pubkey);
66 public Option_C2Tuple_usizeTransactionZZ register_output(WatchedOutput output) {
67 number ret = bindings.Filter_register_output(this.ptr, output == null ? 0 : output.ptr & ~1);
68 Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
69 ret_hu_conv.ptrs_to.add(this);