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 addr: Uint8Array;
50 private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV2) {
56 export class OnionV3 extends NetAddress {
57 public ed25519_pubkey: Uint8Array;
58 public checksum: number;
59 public version: number;
61 private constructor(ptr: number, obj: bindings.LDKNetAddress.OnionV3) {
63 this.ed25519_pubkey = obj.ed25519_pubkey;
64 this.checksum = obj.checksum;
65 this.version = obj.version;
69 public number clone_ptr() {
70 number ret = bindings.NetAddress_clone_ptr(this.ptr);
74 public NetAddress clone() {
75 number ret = bindings.NetAddress_clone(this.ptr);
76 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
77 ret_hu_conv.ptrs_to.add(this);
81 public static NetAddress constructor_ipv4(Uint8Array addr, number port) {
82 number ret = bindings.NetAddress_ipv4(InternalUtils.check_arr_len(addr, 4), port);
83 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
84 ret_hu_conv.ptrs_to.add(ret_hu_conv);
88 public static NetAddress constructor_ipv6(Uint8Array addr, number port) {
89 number ret = bindings.NetAddress_ipv6(InternalUtils.check_arr_len(addr, 16), port);
90 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
91 ret_hu_conv.ptrs_to.add(ret_hu_conv);
95 public static NetAddress constructor_onion_v2(Uint8Array addr, number port) {
96 number ret = bindings.NetAddress_onion_v2(InternalUtils.check_arr_len(addr, 10), port);
97 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
98 ret_hu_conv.ptrs_to.add(ret_hu_conv);
102 public static NetAddress constructor_onion_v3(Uint8Array ed25519_pubkey, number checksum, number version, number port) {
103 number ret = bindings.NetAddress_onion_v3(InternalUtils.check_arr_len(ed25519_pubkey, 32), checksum, version, port);
104 NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
105 ret_hu_conv.ptrs_to.add(ret_hu_conv);
109 public Uint8Array write() {
110 Uint8Array ret = bindings.NetAddress_write(this.ptr);
114 public static Result_NetAddressDecodeErrorZ constructor_read(Uint8Array ser) {
115 number ret = bindings.NetAddress_read(ser);
116 Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);