3 import CommonBase from './CommonBase';
4 import * as bindings from '../bindings' // TODO: figure out location
8 export class Score extends CommonBase {
10 bindings_instance?: bindings.LDKScore;
12 constructor(ptr?: number, arg?: bindings.LDKScore) {
13 if (Number.isFinite(ptr)) {
15 this.bindings_instance = null;
17 // TODO: private constructor instantiation
18 super(bindings.LDKScore_new(arg));
19 this.ptrs_to.push(arg);
24 protected finalize() {
26 bindings.Score_free(this.ptr);
31 static new_impl(arg: ScoreInterface): Score {
32 const impl_holder: LDKScoreHolder = new LDKScoreHolder();
33 let structImplementation = <bindings.LDKScore>{
34 // todo: in-line interface filling
35 channel_penalty_msat (short_channel_id: number, send_amt_msat: number, channel_capacity_msat: number, source: number, target: number): number {
36 Option_u64Z channel_capacity_msat_hu_conv = Option_u64Z.constr_from_ptr(channel_capacity_msat);
37 channel_capacity_msat_hu_conv.ptrs_to.add(this);
38 const source_hu_conv: NodeId = new NodeId(null, source);
39 const target_hu_conv: NodeId = new NodeId(null, target);
40 number ret = arg.channel_penalty_msat(short_channel_id, send_amt_msat, channel_capacity_msat_hu_conv, source_hu_conv, target_hu_conv);
44 payment_path_failed (path: number[], short_channel_id: number): void {
45 RouteHop[] path_conv_10_arr = new RouteHop[path.length];
46 for (int k = 0; k < path.length; k++) {
47 number path_conv_10 = path[k];
48 const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
49 path_conv_10_hu_conv.ptrs_to.add(this);
50 path_conv_10_arr[k] = path_conv_10_hu_conv;
52 arg.payment_path_failed(path_conv_10_arr, short_channel_id);
55 payment_path_successful (path: number[]): void {
56 RouteHop[] path_conv_10_arr = new RouteHop[path.length];
57 for (int k = 0; k < path.length; k++) {
58 number path_conv_10 = path[k];
59 const path_conv_10_hu_conv: RouteHop = new RouteHop(null, path_conv_10);
60 path_conv_10_hu_conv.ptrs_to.add(this);
61 path_conv_10_arr[k] = path_conv_10_hu_conv;
63 arg.payment_path_successful(path_conv_10_arr);
66 write (): Uint8Array {
67 Uint8Array ret = arg.write();
73 impl_holder.held = new Score (null, structImplementation);
77 export interface ScoreInterface {
78 channel_penalty_msat(short_channel_id: number, send_amt_msat: number, channel_capacity_msat: Option_u64Z, source: NodeId, target: NodeId): number;
79 payment_path_failed(path: RouteHop[], short_channel_id: number): void;
80 payment_path_successful(path: RouteHop[]): void;
85 class LDKScoreHolder {
88 public number channel_penalty_msat(number short_channel_id, number send_amt_msat, Option_u64Z channel_capacity_msat, NodeId source, NodeId target) {
89 number ret = bindings.Score_channel_penalty_msat(this.ptr, short_channel_id, send_amt_msat, channel_capacity_msat.ptr, source == null ? 0 : source.ptr & ~1, target == null ? 0 : target.ptr & ~1);
90 this.ptrs_to.add(source);
91 this.ptrs_to.add(target);
95 public void payment_path_failed(RouteHop[] path, number short_channel_id) {
96 bindings.Score_payment_path_failed(this.ptr, 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);
99 public void payment_path_successful(RouteHop[] path) {
100 bindings.Score_payment_path_successful(this.ptr, path != null ? Arrays.stream(path).map(path_conv_10 -> path_conv_10 == null ? 0 : path_conv_10.ptr & ~1).toArray(number[]::new) : null);
103 public Uint8Array write() {
104 Uint8Array ret = bindings.Score_write(this.ptr);