3 import CommonBase from './CommonBase';
4 import * as bindings from '../bindings' // TODO: figure out location
8 export class Router extends CommonBase {
10 bindings_instance?: bindings.LDKRouter;
12 constructor(ptr?: number, arg?: bindings.LDKRouter) {
13 if (Number.isFinite(ptr)) {
15 this.bindings_instance = null;
17 // TODO: private constructor instantiation
18 super(bindings.LDKRouter_new(arg));
19 this.ptrs_to.push(arg);
24 protected finalize() {
26 bindings.Router_free(this.ptr);
31 static new_impl(arg: RouterInterface): Router {
32 const impl_holder: LDKRouterHolder = new LDKRouterHolder();
33 let structImplementation = <bindings.LDKRouter>{
34 // todo: in-line interface filling
35 find_route (payer: Uint8Array, params: number, payment_hash: Uint8Array, first_hops: number[], scorer: number): number {
36 const params_hu_conv: RouteParameters = new RouteParameters(null, params);
37 ChannelDetails[] first_hops_conv_16_arr = new ChannelDetails[first_hops.length];
38 for (int q = 0; q < first_hops.length; q++) {
39 number first_hops_conv_16 = first_hops[q];
40 const first_hops_conv_16_hu_conv: ChannelDetails = new ChannelDetails(null, first_hops_conv_16);
41 first_hops_conv_16_hu_conv.ptrs_to.add(this);
42 first_hops_conv_16_arr[q] = first_hops_conv_16_hu_conv;
44 Score ret_hu_conv = new Score(null, scorer);
45 ret_hu_conv.ptrs_to.add(this);
46 Result_RouteLightningErrorZ ret = arg.find_route(payer, params_hu_conv, payment_hash, first_hops_conv_16_arr, ret_hu_conv);
47 result: number = ret == null ? 0 : ret.clone_ptr();
53 impl_holder.held = new Router (null, structImplementation);
57 export interface RouterInterface {
58 find_route(payer: Uint8Array, params: RouteParameters, payment_hash: Uint8Array, first_hops: ChannelDetails[], scorer: Score): Result_RouteLightningErrorZ;
62 class LDKRouterHolder {
65 public Result_RouteLightningErrorZ find_route(Uint8Array payer, RouteParameters params, Uint8Array payment_hash, ChannelDetails[] first_hops, Score scorer) {
66 number ret = bindings.Router_find_route(this.ptr, InternalUtils.check_arr_len(payer, 33), params == null ? 0 : params.ptr & ~1, InternalUtils.check_arr_len(payment_hash, 32), first_hops != null ? Arrays.stream(first_hops).map(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray(number[]::new) : null, scorer == null ? 0 : scorer.ptr);
67 Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
68 this.ptrs_to.add(params);
69 for (ChannelDetails first_hops_conv_16: first_hops) { this.ptrs_to.add(first_hops_conv_16); };
70 this.ptrs_to.add(scorer);