@xelis/sdk 0.9.11 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/address/address.js +55 -0
  2. package/dist/cjs/address/bech32.js +167 -0
  3. package/dist/cjs/config.js +4 -2
  4. package/dist/cjs/daemon/rpc.js +122 -71
  5. package/dist/cjs/daemon/types.js +44 -24
  6. package/dist/cjs/daemon/websocket.js +129 -105
  7. package/dist/cjs/data/element.js +84 -0
  8. package/dist/cjs/data/value.js +327 -0
  9. package/dist/cjs/{lib/rpc.js → rpc/http.js} +68 -18
  10. package/dist/cjs/rpc/parse_json/parse_json.js +15 -0
  11. package/dist/cjs/{lib → rpc}/websocket.js +119 -79
  12. package/dist/cjs/wallet/rpc.js +81 -70
  13. package/dist/cjs/wallet/types.js +44 -1
  14. package/dist/cjs/wallet/websocket.js +77 -14
  15. package/dist/cjs/xswd/websocket.js +3 -3
  16. package/dist/esm/address/address.js +53 -0
  17. package/dist/esm/address/bech32.js +161 -0
  18. package/dist/esm/config.js +3 -1
  19. package/dist/esm/daemon/rpc.js +122 -71
  20. package/dist/esm/daemon/types.js +44 -24
  21. package/dist/esm/daemon/websocket.js +130 -106
  22. package/dist/esm/data/element.js +81 -0
  23. package/dist/esm/data/value.js +324 -0
  24. package/dist/esm/{lib/rpc.js → rpc/http.js} +67 -17
  25. package/dist/esm/rpc/parse_json/parse_json.js +8 -0
  26. package/dist/esm/{lib → rpc}/websocket.js +118 -78
  27. package/dist/esm/wallet/rpc.js +81 -70
  28. package/dist/esm/wallet/types.js +43 -0
  29. package/dist/esm/wallet/websocket.js +77 -14
  30. package/dist/esm/xswd/websocket.js +3 -3
  31. package/dist/types/address/address.d.ts +12 -0
  32. package/dist/types/address/bech32.d.ts +6 -0
  33. package/dist/types/config.d.ts +2 -0
  34. package/dist/types/daemon/rpc.d.ts +68 -51
  35. package/dist/types/daemon/types.d.ts +216 -44
  36. package/dist/types/daemon/websocket.d.ts +77 -56
  37. package/dist/types/data/element.d.ts +20 -0
  38. package/dist/types/data/value.d.ts +50 -0
  39. package/dist/types/rpc/http.d.ts +9 -0
  40. package/dist/types/rpc/parse_json/parse_json.d.ts +1 -0
  41. package/dist/types/{lib → rpc}/websocket.d.ts +14 -10
  42. package/dist/types/wallet/rpc.d.ts +45 -26
  43. package/dist/types/wallet/types.d.ts +244 -21
  44. package/dist/types/wallet/websocket.d.ts +47 -22
  45. package/dist/types/xswd/websocket.d.ts +3 -3
  46. package/package.json +5 -4
  47. package/dist/cjs/lib/parse_data.js +0 -15
  48. package/dist/esm/lib/parse_data.js +0 -11
  49. package/dist/types/lib/parse_data.d.ts +0 -1
  50. package/dist/types/lib/rpc.d.ts +0 -7
  51. /package/dist/cjs/{lib → rpc}/types.js +0 -0
  52. /package/dist/esm/{lib → rpc}/types.js +0 -0
  53. /package/dist/types/{lib → rpc}/types.d.ts +0 -0
@@ -16,7 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  exports.__esModule = true;
18
18
  exports.WS = exports.WalletMethods = void 0;
19
- var websocket_1 = require("../lib/websocket");
19
+ var websocket_1 = require("../rpc/websocket");
20
20
  var types_1 = require("./types");
21
21
  var WalletMethods = /** @class */ (function () {
22
22
  function WalletMethods(ws, prefix) {
@@ -28,25 +28,28 @@ var WalletMethods = /** @class */ (function () {
28
28
  return this.ws.dataCall(this.prefix + method, params);
29
29
  };
30
30
  WalletMethods.prototype.onNewTopoheight = function (onData) {
31
- return this.ws.listenEvent(types_1.RPCEvent.NewTopoheight, onData);
31
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.NewTopoheight, onData);
32
32
  };
33
33
  WalletMethods.prototype.onNewAsset = function (onData) {
34
- return this.ws.listenEvent(types_1.RPCEvent.NewAsset, onData);
34
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.NewAsset, onData);
35
35
  };
36
36
  WalletMethods.prototype.onNewTransaction = function (onData) {
37
- return this.ws.listenEvent(types_1.RPCEvent.NewTransaction, onData);
37
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.NewTransaction, onData);
38
38
  };
39
39
  WalletMethods.prototype.onBalanceChanged = function (onData) {
40
- return this.ws.listenEvent(types_1.RPCEvent.BalanceChanged, onData);
40
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.BalanceChanged, onData);
41
41
  };
42
42
  WalletMethods.prototype.onRescan = function (onData) {
43
- return this.ws.listenEvent(types_1.RPCEvent.Rescan, onData);
43
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.Rescan, onData);
44
+ };
45
+ WalletMethods.prototype.onHistorySynced = function (onData) {
46
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.HistorySynced, onData);
44
47
  };
45
48
  WalletMethods.prototype.onOnline = function (onData) {
46
- return this.ws.listenEvent(types_1.RPCEvent.Online, onData);
49
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.Online, onData);
47
50
  };
48
51
  WalletMethods.prototype.onOffline = function (onData) {
49
- return this.ws.listenEvent(types_1.RPCEvent.Offline, onData);
52
+ return this.ws.listenEvent(this.prefix + types_1.RPCEvent.Offline, onData);
50
53
  };
51
54
  WalletMethods.prototype.getVersion = function () {
52
55
  return this.dataCall(types_1.RPCMethod.GetVersion);
@@ -73,35 +76,95 @@ var WalletMethods = /** @class */ (function () {
73
76
  WalletMethods.prototype.getBalance = function (asset) {
74
77
  return this.dataCall(types_1.RPCMethod.GetBalance, { asset: asset });
75
78
  };
79
+ WalletMethods.prototype.hasBalance = function (asset) {
80
+ return this.dataCall(types_1.RPCMethod.HasBalance, { asset: asset });
81
+ };
76
82
  WalletMethods.prototype.getTrackedAssets = function () {
77
83
  return this.dataCall(types_1.RPCMethod.GetTrackedAssets);
78
84
  };
79
85
  WalletMethods.prototype.getAssetPrecision = function (params) {
80
86
  return this.dataCall(types_1.RPCMethod.GetAssetPrecision, params);
81
87
  };
88
+ WalletMethods.prototype.getAssets = function () {
89
+ return this.dataCall(types_1.RPCMethod.GetAssets);
90
+ };
91
+ WalletMethods.prototype.getAsset = function (params) {
92
+ return this.dataCall(types_1.RPCMethod.GetAsset, params);
93
+ };
82
94
  WalletMethods.prototype.getTransaction = function (hash) {
83
95
  return this.dataCall(types_1.RPCMethod.GetTransaction, { hash: hash });
84
96
  };
85
97
  WalletMethods.prototype.buildTransaction = function (params) {
86
98
  return this.dataCall(types_1.RPCMethod.BuildTransaction, params);
87
99
  };
100
+ WalletMethods.prototype.buildTransactionOffline = function (params) {
101
+ return this.dataCall(types_1.RPCMethod.BuildTransactionOffline, params);
102
+ };
103
+ WalletMethods.prototype.buildUnsignedTransaction = function (params) {
104
+ return this.dataCall(types_1.RPCMethod.BuildUnsignedTransaction, params);
105
+ };
106
+ WalletMethods.prototype.signUnsignedTransaction = function (params) {
107
+ return this.dataCall(types_1.RPCMethod.SignUnsignedTransaction, params);
108
+ };
109
+ WalletMethods.prototype.finalizeUnsignedTransaction = function (params) {
110
+ return this.dataCall(types_1.RPCMethod.FinalizeUnsignedTransaction, params);
111
+ };
112
+ WalletMethods.prototype.clearTxCache = function () {
113
+ return this.dataCall(types_1.RPCMethod.ClearTxCache);
114
+ };
88
115
  WalletMethods.prototype.listTransactions = function (params) {
89
116
  return this.dataCall(types_1.RPCMethod.GetTransaction, params);
90
117
  };
91
118
  WalletMethods.prototype.isOnline = function () {
92
119
  return this.dataCall(types_1.RPCMethod.IsOnline);
93
120
  };
121
+ WalletMethods.prototype.setOnlineMode = function (params) {
122
+ return this.dataCall(types_1.RPCMethod.SetOfflineMode, params);
123
+ };
124
+ WalletMethods.prototype.setOfflineMode = function () {
125
+ return this.dataCall(types_1.RPCMethod.SetOfflineMode);
126
+ };
94
127
  WalletMethods.prototype.signData = function (data) {
95
- return this.dataCall(types_1.RPCMethod.SignData, data);
128
+ return this.dataCall(types_1.RPCMethod.SignData, data.toObject());
96
129
  };
97
130
  WalletMethods.prototype.estimateFees = function (params) {
98
131
  return this.dataCall(types_1.RPCMethod.EstimateFees, params);
99
132
  };
100
- WalletMethods.prototype.setOnlineMode = function (params) {
101
- return this.dataCall(types_1.RPCMethod.SetOfflineMode, params);
133
+ WalletMethods.prototype.estimateExtraDataSize = function (params) {
134
+ return this.dataCall(types_1.RPCMethod.EstimateExtraDataSize, params);
102
135
  };
103
- WalletMethods.prototype.setOfflineMode = function () {
104
- return this.dataCall(types_1.RPCMethod.SetOfflineMode);
136
+ WalletMethods.prototype.networkInfo = function () {
137
+ return this.dataCall(types_1.RPCMethod.NetworkInfo);
138
+ };
139
+ WalletMethods.prototype.decryptExtraData = function (params) {
140
+ return this.dataCall(types_1.RPCMethod.DecryptExtraData, params);
141
+ };
142
+ WalletMethods.prototype.decryptCiphertext = function (params) {
143
+ return this.dataCall(types_1.RPCMethod.DecryptCiphertext, params);
144
+ };
145
+ WalletMethods.prototype.getMatchingKeys = function (params) {
146
+ return this.dataCall(types_1.RPCMethod.GetMatchingKeys, params);
147
+ };
148
+ WalletMethods.prototype.countMatchingEntries = function (params) {
149
+ return this.dataCall(types_1.RPCMethod.CountMatchingEntries, params);
150
+ };
151
+ WalletMethods.prototype.getValueFromKey = function (params) {
152
+ return this.dataCall(types_1.RPCMethod.GetValueFromKey, params);
153
+ };
154
+ WalletMethods.prototype.store = function (params) {
155
+ return this.dataCall(types_1.RPCMethod.Store, params);
156
+ };
157
+ WalletMethods.prototype["delete"] = function (params) {
158
+ return this.dataCall(types_1.RPCMethod.Delete, params);
159
+ };
160
+ WalletMethods.prototype.deleteTreeEntries = function (tree) {
161
+ return this.dataCall(types_1.RPCMethod.DeleteTreeEntries, { tree: tree });
162
+ };
163
+ WalletMethods.prototype.hasKey = function (params) {
164
+ return this.dataCall(types_1.RPCMethod.HasKey, params);
165
+ };
166
+ WalletMethods.prototype.queryDB = function (params) {
167
+ return this.dataCall(types_1.RPCMethod.QueryDB, params);
105
168
  };
106
169
  return WalletMethods;
107
170
  }());
@@ -114,6 +177,6 @@ var WS = /** @class */ (function (_super) {
114
177
  return _this;
115
178
  }
116
179
  return WS;
117
- }(websocket_1.WS));
180
+ }(websocket_1.WSRPC));
118
181
  exports.WS = WS;
119
182
  exports["default"] = WS;
@@ -16,7 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  exports.__esModule = true;
18
18
  exports.WS = void 0;
19
- var websocket_1 = require("../lib/websocket");
19
+ var websocket_1 = require("../rpc/websocket");
20
20
  var websocket_2 = require("../daemon/websocket");
21
21
  var websocket_3 = require("../wallet/websocket");
22
22
  var WS = /** @class */ (function (_super) {
@@ -30,9 +30,9 @@ var WS = /** @class */ (function (_super) {
30
30
  }
31
31
  WS.prototype.authorize = function (app) {
32
32
  var data = JSON.stringify(app);
33
- return this.call("", {}, data);
33
+ return this.rawCall(0, data);
34
34
  };
35
35
  return WS;
36
- }(websocket_1.WS));
36
+ }(websocket_1.WSRPC));
37
37
  exports.WS = WS;
38
38
  exports["default"] = WS;
@@ -0,0 +1,53 @@
1
+ import { decode, convertBits, encode } from "./bech32.js";
2
+ import { ValueReader } from "../data/value.js";
3
+ var PrefixAddress = "xel";
4
+ var TestnetPrefixAddress = "xet";
5
+ var ExtraDataLimit = 1024;
6
+ var ErrIntegratedDataLimit = "invalid data in integrated address, maximum size reached";
7
+ var ErrInvalidNetworkPrefix = "invalid network prefix (xel or xet)";
8
+ var Address = /** @class */ (function () {
9
+ function Address(data, hrp) {
10
+ this.isMainnet = hrp === PrefixAddress;
11
+ this.publicKey = data.splice(0, 32);
12
+ var addrType = data.splice(0, 1)[0];
13
+ switch (addrType) {
14
+ case 0:
15
+ this.isIntegrated = false;
16
+ break;
17
+ case 1:
18
+ this.isIntegrated = true;
19
+ var reader = new ValueReader(new Uint8Array(data));
20
+ this.extraData = reader.read();
21
+ break;
22
+ default:
23
+ throw "invalid address type";
24
+ }
25
+ }
26
+ Address.fromString = function (addr) {
27
+ var _a = decode(addr), hrp = _a.hrp, decoded = _a.decoded;
28
+ if (hrp !== PrefixAddress && hrp !== TestnetPrefixAddress) {
29
+ throw ErrInvalidNetworkPrefix;
30
+ }
31
+ var bits = convertBits(decoded, 5, 8, false);
32
+ return new Address(bits, hrp);
33
+ };
34
+ Address.isValid = function (addr) {
35
+ try {
36
+ Address.fromString(addr);
37
+ return true;
38
+ }
39
+ catch (_a) {
40
+ return false;
41
+ }
42
+ };
43
+ Address.prototype.format = function () {
44
+ var bits = convertBits(this.publicKey, 8, 5, true);
45
+ var hrp = PrefixAddress;
46
+ if (!this.isMainnet) {
47
+ hrp = TestnetPrefixAddress;
48
+ }
49
+ return encode(hrp, bits);
50
+ };
51
+ return Address;
52
+ }());
53
+ export default Address;
@@ -0,0 +1,161 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ var CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
11
+ var GENERATOR = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
12
+ var SEPARTOR = ":";
13
+ var ErrHrpMixCase = "mix case is not allowed in human readable part";
14
+ var ErrInvalidChecksum = "invalid checksum";
15
+ var ErrNonZeroPadding = "non zero padding";
16
+ var ErrIllegalZeroPadding = "illegal zero padding";
17
+ var ErrHrpEmpty = "human readable part is empty";
18
+ function ErrSeparatorInvalidPosition(pos) {
19
+ return "invalid separator position: ".concat(pos);
20
+ }
21
+ function ErrHrpInvalidCharacter(c) {
22
+ return "invalid character value in human readable part: ".concat(c);
23
+ }
24
+ function ErrInvalidIndex(index) {
25
+ return "invalid index ".concat(index);
26
+ }
27
+ function ErrInvalidValue(value, max) {
28
+ return "invalid value: ".concat(value, ", max is ").concat(max);
29
+ }
30
+ function ErrInvalidDataRange(value, from) {
31
+ return "invalid data range: ".concat(value, ", max is ").concat(from);
32
+ }
33
+ function polymod(values) {
34
+ var chk = 1;
35
+ values.forEach(function (value) {
36
+ var top = chk >> 25;
37
+ chk = ((chk & 0x1ffffff) << 5) ^ value;
38
+ GENERATOR.forEach(function (item, i) {
39
+ if (((top >> i) & 1) === 1) {
40
+ chk ^= item;
41
+ }
42
+ });
43
+ });
44
+ return chk;
45
+ }
46
+ function hrpExpand(hrp) {
47
+ var encoder = new TextEncoder();
48
+ var bytes = encoder.encode(hrp);
49
+ var result = [];
50
+ bytes.forEach(function (c) { return result.push(c >> 5); });
51
+ result.push(0);
52
+ bytes.forEach(function (c) { return result.push(c & 31); });
53
+ return result;
54
+ }
55
+ function verifyChecksum(hrp, data) {
56
+ var vec = hrpExpand(hrp);
57
+ vec = __spreadArray(__spreadArray([], vec, true), data, true);
58
+ return polymod(vec) === 1;
59
+ }
60
+ function createChecksum(hrp, data) {
61
+ var result = [0, 0, 0, 0, 0, 0];
62
+ var values = __spreadArray(__spreadArray(__spreadArray([], hrpExpand(hrp), true), data, true), result, true);
63
+ var pm = polymod(values) ^ 1;
64
+ for (var i = 0; i < 6; i++) {
65
+ result[i] = pm >> (5 * (5 - i)) & 31;
66
+ }
67
+ return result;
68
+ }
69
+ export function convertBits(data, from, to, pad) {
70
+ var result = [];
71
+ var acc = 0;
72
+ var bits = 0;
73
+ var maxValue = (1 << to) - 1;
74
+ data.forEach(function (value) {
75
+ if (value >> from !== 0) {
76
+ throw ErrInvalidDataRange(value, from);
77
+ }
78
+ acc = (acc << from) | value;
79
+ bits += from;
80
+ while (bits >= to) {
81
+ bits -= to;
82
+ result.push((acc >> bits) & maxValue);
83
+ }
84
+ });
85
+ if (pad) {
86
+ if (bits > 0) {
87
+ result.push((acc << (to - bits)) & maxValue);
88
+ }
89
+ }
90
+ else if (bits >= from) {
91
+ throw ErrIllegalZeroPadding;
92
+ }
93
+ else if (((acc << (to - bits)) & maxValue) !== 0) {
94
+ throw ErrNonZeroPadding;
95
+ }
96
+ return result;
97
+ }
98
+ export function decode(bech) {
99
+ if (bech.toUpperCase() !== bech && bech.toLowerCase() !== bech) {
100
+ throw ErrHrpMixCase;
101
+ }
102
+ var pos = bech.indexOf(SEPARTOR);
103
+ if (pos < 1 || pos + 7 > bech.length) {
104
+ throw ErrSeparatorInvalidPosition(pos);
105
+ }
106
+ var hrp = bech.substring(0, pos);
107
+ var encoder = new TextEncoder();
108
+ var hrpBytes = encoder.encode(hrp);
109
+ var decoded = [];
110
+ hrpBytes.forEach(function (value) {
111
+ if (value < 33 || value > 126) {
112
+ throw ErrHrpInvalidCharacter(value);
113
+ }
114
+ });
115
+ for (var i = pos + 1; i < bech.length; i++) {
116
+ if (i >= bech.length) {
117
+ throw ErrInvalidIndex(i);
118
+ }
119
+ var c = bech[i];
120
+ var index = CHARSET.indexOf(c);
121
+ if (index === -1) {
122
+ throw ErrHrpInvalidCharacter;
123
+ }
124
+ decoded.push(index);
125
+ }
126
+ if (!verifyChecksum(hrp, decoded)) {
127
+ throw ErrInvalidChecksum;
128
+ }
129
+ decoded.splice(decoded.length - 6, 6);
130
+ return { hrp: hrp, decoded: decoded };
131
+ }
132
+ export function encode(hrp, data) {
133
+ if (hrp.length === 0) {
134
+ throw ErrHrpEmpty;
135
+ }
136
+ var encoder = new TextEncoder();
137
+ var hrpBytes = encoder.encode(hrp);
138
+ hrpBytes.forEach(function (value) {
139
+ if (value < 33 || value > 126) {
140
+ throw ErrHrpInvalidCharacter(value);
141
+ }
142
+ });
143
+ if (hrp.toUpperCase() !== hrp && hrp.toLowerCase() !== hrp) {
144
+ throw ErrHrpMixCase;
145
+ }
146
+ hrp = hrp.toLowerCase();
147
+ var combined = __spreadArray(__spreadArray([], data, true), createChecksum(hrp, data), true);
148
+ var result = __spreadArray(__spreadArray([], Array.from(hrpBytes), true), [SEPARTOR.charCodeAt(0)], false);
149
+ combined.forEach(function (index) {
150
+ if (index > CHARSET.length) {
151
+ throw ErrInvalidValue(index, CHARSET.length);
152
+ }
153
+ var value = CHARSET.charCodeAt(index);
154
+ if (!value) {
155
+ throw ErrInvalidIndex(index);
156
+ }
157
+ result.push(value);
158
+ });
159
+ var decoder = new TextDecoder();
160
+ return decoder.decode(new Uint8Array(result));
161
+ }
@@ -16,6 +16,7 @@ export var LOCAL_WALLET_WS = "ws://".concat(LOCAL_WALLET_URL, "/json_rpc");
16
16
  export var LOCAL_XSWD_URL = "127.0.0.1:".concat(XSWD_PORT);
17
17
  export var LOCAL_XSWD_WS = "ws://".concat(LOCAL_XSWD_URL, "/xswd");
18
18
  export var XELIS_ASSET = "0000000000000000000000000000000000000000000000000000000000000000";
19
+ export var XELIS_DECIMALS = 8;
19
20
  export default {
20
21
  MAINNET_NODE_URL: MAINNET_NODE_URL,
21
22
  TESTNET_NODE_URL: TESTNET_NODE_URL,
@@ -33,5 +34,6 @@ export default {
33
34
  LOCAL_WALLET_WS: LOCAL_WALLET_WS,
34
35
  LOCAL_XSWD_URL: LOCAL_XSWD_URL,
35
36
  LOCAL_XSWD_WS: LOCAL_XSWD_WS,
36
- XELIS_ASSET: XELIS_ASSET
37
+ XELIS_ASSET: XELIS_ASSET,
38
+ XELIS_DECIMALS: XELIS_DECIMALS
37
39
  };