2 import CommonBase from './CommonBase';
3 import * as bindings from '../bindings' // TODO: figure out location
5 export default class NetAddress extends CommonBase {
6 protected constructor(_dummy: object, ptr: number) { super(ptr); }
9 if (this.ptr != 0) { bindings.NetAddress_free(this.ptr); }
11 static constr_from_ptr(ptr: number): NetAddress {
12 const raw_val: bindings.LDKNetAddress = bindings.LDKNetAddress_ref_from_ptr(ptr);
13 if (raw_val instanceof bindings.LDKNetAddress.IPv4) {
14 return new IPv4(this.ptr, raw_val);
16 if (raw_val instanceof bindings.LDKNetAddress.IPv6) {
17 return new IPv6(this.ptr, raw_val);
19 if (raw_val instanceof bindings.LDKNetAddress.OnionV2) {
20 return new OnionV2(this.ptr, raw_val);
22 if (raw_val instanceof bindings.LDKNetAddress.OnionV3) {
23 return new OnionV3(this.ptr, raw_val);
25 throw new Error('oops, this should be unreachable'); // Unreachable without extending the (internal) bindings interface
29 export class IPv4 extends NetAddress {
30 public addr: Uint8Array;
32 private constructor(ptr: number, obj: bindings.LDKNetAddress.IPv4) {
38 export class IPv6 extends NetAddress {
39 public addr: Uint8Array;
41 private constructor(ptr: number, obj: bindings.LDKNetAddress.IPv6) {
47 export class OnionV2 extends NetAddress {
48 public onion_v2: Uint8Array;
49 private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV2) {
51 this.onion_v2 = obj.onion_v2;
54 export class OnionV3 extends NetAddress {
55 public ed25519_pubkey: Uint8Array;
56 public checksum: number;
57 public version: number;
59 private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV3) {
61 this.ed25519_pubkey = obj.ed25519_pubkey;
62 this.checksum = obj.checksum;
63 this.version = obj.version;
67 public number clone_ptr() {
68 number ret = bindings.NetAddress_clone_ptr(this.ptr);
72 public NetAddress clone() {
73 number ret = bindings.NetAddress_clone(this.ptr);
74 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
75 ret_hu_conv.ptrs_to.add(this);
79 public static NetAddress constructor_ipv4(Uint8Array addr, number port) {
80 number ret = bindings.NetAddress_ipv4(InternalUtils.check_arr_len(addr, 4), port);
81 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
82 ret_hu_conv.ptrs_to.add(ret_hu_conv);
86 public static NetAddress constructor_ipv6(Uint8Array addr, number port) {
87 number ret = bindings.NetAddress_ipv6(InternalUtils.check_arr_len(addr, 16), port);
88 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
89 ret_hu_conv.ptrs_to.add(ret_hu_conv);
93 public static NetAddress constructor_onion_v2(Uint8Array a) {
94 number ret = bindings.NetAddress_onion_v2(InternalUtils.check_arr_len(a, 12));
95 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
96 ret_hu_conv.ptrs_to.add(ret_hu_conv);
100 public static NetAddress constructor_onion_v3(Uint8Array ed25519_pubkey, number checksum, number version, number port) {
101 number ret = bindings.NetAddress_onion_v3(InternalUtils.check_arr_len(ed25519_pubkey, 32), checksum, version, port);
102 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
103 ret_hu_conv.ptrs_to.add(ret_hu_conv);
107 public Uint8Array write() {
108 Uint8Array ret = bindings.NetAddress_write(this.ptr);
112 public static Result_NetAddressDecodeErrorZ constructor_read(Uint8Array ser) {
113 number ret = bindings.NetAddress_read(ser);
114 Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);