xno-skills 0.3.2 → 0.4.0

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 (43) hide show
  1. package/README.md +71 -24
  2. package/assets/xno-skills-cli.png +0 -0
  3. package/dist/cjs/ed25519-blake2b.d.ts +4 -0
  4. package/dist/cjs/ed25519-blake2b.d.ts.map +1 -0
  5. package/dist/cjs/ed25519-blake2b.js +114 -0
  6. package/dist/cjs/ed25519-blake2b.js.map +1 -0
  7. package/dist/cjs/index.d.ts +3 -1
  8. package/dist/cjs/index.d.ts.map +1 -1
  9. package/dist/cjs/index.js +12 -1
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/mcp.js +252 -18
  12. package/dist/cjs/mcp.js.map +1 -1
  13. package/dist/cjs/rpc.d.ts +25 -0
  14. package/dist/cjs/rpc.d.ts.map +1 -1
  15. package/dist/cjs/rpc.js +56 -0
  16. package/dist/cjs/rpc.js.map +1 -1
  17. package/dist/cjs/state-block.d.ts +11 -0
  18. package/dist/cjs/state-block.d.ts.map +1 -0
  19. package/dist/cjs/state-block.js +64 -0
  20. package/dist/cjs/state-block.js.map +1 -0
  21. package/dist/cjs/version.d.ts +2 -2
  22. package/dist/cjs/version.js +1 -1
  23. package/dist/esm/ed25519-blake2b.d.ts +4 -0
  24. package/dist/esm/ed25519-blake2b.d.ts.map +1 -0
  25. package/dist/esm/ed25519-blake2b.js +109 -0
  26. package/dist/esm/ed25519-blake2b.js.map +1 -0
  27. package/dist/esm/index.d.ts +3 -1
  28. package/dist/esm/index.d.ts.map +1 -1
  29. package/dist/esm/index.js +3 -1
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/mcp.js +253 -19
  32. package/dist/esm/mcp.js.map +1 -1
  33. package/dist/esm/rpc.d.ts +25 -0
  34. package/dist/esm/rpc.d.ts.map +1 -1
  35. package/dist/esm/rpc.js +52 -0
  36. package/dist/esm/rpc.js.map +1 -1
  37. package/dist/esm/state-block.d.ts +11 -0
  38. package/dist/esm/state-block.d.ts.map +1 -0
  39. package/dist/esm/state-block.js +60 -0
  40. package/dist/esm/state-block.js.map +1 -0
  41. package/dist/esm/version.d.ts +2 -2
  42. package/dist/esm/version.js +1 -1
  43. package/package.json +4 -3
package/README.md CHANGED
@@ -4,7 +4,9 @@
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
6
6
 
7
- A TypeScript library for interacting with the Nano (XNO) cryptocurrency. Generate wallets, convert units, validate addresses, and more.
7
+ A TypeScript library, executable, and MCP server, for interacting with the Nano (XNO) cryptocurrency. Generate wallets, convert units, validate addresses, and more.
8
+
9
+ ![xno-skills CLI preview](assets/xno-skills-cli.png)
8
10
 
9
11
  ## AI Skills
10
12
 
@@ -33,7 +35,7 @@ To use it, add the following to your MCP client configuration:
33
35
  "mcpServers": {
34
36
  "xno": {
35
37
  "command": "npx",
36
- "args": ["-y", "-p", "xno-skills@^0.3.0", "xno-mcp"]
38
+ "args": ["-y", "-p", "xno-skills@latest", "xno-mcp"]
37
39
  }
38
40
  }
39
41
  }
@@ -42,7 +44,8 @@ To use it, add the following to your MCP client configuration:
42
44
  Exposed tools:
43
45
  - `purse_create` / `purse_list` / `purse_addresses`: Named “purses” (custody inside MCP; return addresses only).
44
46
  - `purse_balance` / `purse_probe_balances`: Balance/pending checks for purse accounts via RPC.
45
- - `config_get` / `config_set`: Store defaults (RPC URL, timeouts; optional purse persistence).
47
+ - `purse_receive` / `purse_send`: Receive pending blocks and send funds (sign + work + `process` via RPC).
48
+ - `config_get` / `config_set`: Store defaults (RPC URL, work URL, timeouts, default representative; optional purse persistence).
46
49
  - `generate_wallet`: Generate a wallet (default: BIP39 derivation).
47
50
  - `derive_address`: Derive an address (supports `bip39` + `legacy`, with `auto` preference).
48
51
  - `probe_mnemonic`: Probe both derivations via RPC (helps resolve 24-word ambiguity).
@@ -59,31 +62,71 @@ npm install xno-skills
59
62
 
60
63
  See `RELEASING.md`.
61
64
 
62
- ## Quick Start
65
+ ## MCP Client Setup (Codex, Claude, OpenCode, Gemini, VS Code)
63
66
 
64
- ```typescript
65
- import {
66
- generateMnemonic,
67
- deriveAddressBIP44,
68
- validateAddress,
69
- nanoToRaw,
70
- rawToNano
71
- } from 'xno-skills';
72
-
73
- // Generate a new BIP39 wallet + first account (index 0)
74
- const mnemonic = generateMnemonic(24);
75
- const { address, privateKey, publicKey } = deriveAddressBIP44(mnemonic, 0);
67
+ All examples run the MCP server via `npx` (swap `@latest` for a pinned version if you prefer).
68
+
69
+ ### Codex
70
+
71
+ ```bash
72
+ codex mcp add xno -- npx -y -p xno-skills@latest xno-mcp
73
+ ```
74
+
75
+ ### Claude Desktop (`claude_desktop_config.json`)
76
+
77
+ Add via Claude Desktop: Settings -> Developer -> Edit Config.
78
+
79
+ ```json
80
+ {
81
+ "mcpServers": {
82
+ "xno": {
83
+ "command": "npx",
84
+ "args": ["-y", "-p", "xno-skills@latest", "xno-mcp"]
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### OpenCode (`opencode.jsonc`)
91
+
92
+ ```jsonc
93
+ {
94
+ "$schema": "https://opencode.ai/config.json",
95
+ "mcp": {
96
+ "xno": {
97
+ "type": "local",
98
+ "command": ["npx", "-y", "-p", "xno-skills@latest", "xno-mcp"],
99
+ "enabled": true
100
+ }
101
+ }
102
+ }
103
+ ```
76
104
 
77
- console.log('Address:', address);
78
- // nano_1abc123...
105
+ ### Gemini CLI (`settings.json`)
106
+
107
+ ```json
108
+ {
109
+ "mcpServers": {
110
+ "xno": {
111
+ "command": "npx",
112
+ "args": ["-y", "-p", "xno-skills@latest", "xno-mcp"]
113
+ }
114
+ }
115
+ }
116
+ ```
79
117
 
80
- // Validate an address
81
- const result = validateAddress(address);
82
- console.log(result.valid); // true
118
+ ### VS Code (`.vscode/mcp.json`)
83
119
 
84
- // Convert units
85
- const raw = nanoToRaw('1.5'); // "1500000000000000000000000000000"
86
- const nano = rawToNano(raw); // "1.5"
120
+ ```json
121
+ {
122
+ "servers": {
123
+ "xno": {
124
+ "type": "stdio",
125
+ "command": "npx",
126
+ "args": ["-y", "-p", "xno-skills@latest", "xno-mcp"]
127
+ }
128
+ }
129
+ }
87
130
  ```
88
131
 
89
132
  ## CLI Usage
@@ -564,6 +607,10 @@ npm run build:esm
564
607
  npm run build:cjs
565
608
  ```
566
609
 
610
+ ## Releasing
611
+
612
+ See `RELEASING.md`.
613
+
567
614
  ## License
568
615
 
569
616
  MIT
Binary file
@@ -0,0 +1,4 @@
1
+ export declare function nanoGetPublicKeyFromPrivateKey(privateKeyHex: string): string;
2
+ export declare function nanoSignBlake2b(message32: Uint8Array, privateKeyHex: string): string;
3
+ export declare function nanoVerifyBlake2b(message32: Uint8Array, signatureHex: string, publicKeyHex: string): boolean;
4
+ //# sourceMappingURL=ed25519-blake2b.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed25519-blake2b.d.ts","sourceRoot":"","sources":["../../src/ed25519-blake2b.ts"],"names":[],"mappings":"AA+DA,wBAAgB,8BAA8B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAoBpF;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAyB5G"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nanoGetPublicKeyFromPrivateKey = nanoGetPublicKeyFromPrivateKey;
4
+ exports.nanoSignBlake2b = nanoSignBlake2b;
5
+ exports.nanoVerifyBlake2b = nanoVerifyBlake2b;
6
+ const blake2b_js_1 = require("@noble/hashes/blake2b.js");
7
+ const utils_js_1 = require("@noble/hashes/utils.js");
8
+ const ed25519_js_1 = require("@noble/curves/ed25519.js");
9
+ const ED25519_ORDER = BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed');
10
+ function bytesToBigIntLE(bytes) {
11
+ let n = 0n;
12
+ for (let i = 0; i < bytes.length; i++) {
13
+ n += BigInt(bytes[i]) << BigInt(8 * i);
14
+ }
15
+ return n;
16
+ }
17
+ function bigIntToBytesLE(n, length) {
18
+ if (n < 0n)
19
+ throw new Error('Negative bigint not supported');
20
+ const out = new Uint8Array(length);
21
+ let x = n;
22
+ for (let i = 0; i < length; i++) {
23
+ out[i] = Number(x & 0xffn);
24
+ x >>= 8n;
25
+ }
26
+ if (x !== 0n)
27
+ throw new Error(`Bigint does not fit in ${length} bytes`);
28
+ return out;
29
+ }
30
+ function modL(n) {
31
+ const x = n % ED25519_ORDER;
32
+ return x < 0n ? x + ED25519_ORDER : x;
33
+ }
34
+ function hash512(...parts) {
35
+ let len = 0;
36
+ for (const p of parts)
37
+ len += p.length;
38
+ const msg = new Uint8Array(len);
39
+ let o = 0;
40
+ for (const p of parts) {
41
+ msg.set(p, o);
42
+ o += p.length;
43
+ }
44
+ return (0, blake2b_js_1.blake2b)(msg, { dkLen: 64 });
45
+ }
46
+ function expandSecretKey(privateKey32) {
47
+ if (privateKey32.length !== 32)
48
+ throw new Error('Private key must be 32 bytes');
49
+ const h = (0, blake2b_js_1.blake2b)(privateKey32, { dkLen: 64 });
50
+ const aBytes = new Uint8Array(h.slice(0, 32));
51
+ aBytes[0] &= 248;
52
+ aBytes[31] &= 127;
53
+ aBytes[31] |= 64;
54
+ let scalar = bytesToBigIntLE(aBytes);
55
+ if (scalar === 0n || scalar >= ED25519_ORDER) {
56
+ scalar = scalar % ED25519_ORDER;
57
+ if (scalar === 0n)
58
+ scalar = 1n;
59
+ }
60
+ const prefix = new Uint8Array(h.slice(32, 64));
61
+ const publicKey = ed25519_js_1.ed25519.Point.BASE.multiply(scalar).toBytes();
62
+ return { scalar, prefix, publicKey };
63
+ }
64
+ function nanoGetPublicKeyFromPrivateKey(privateKeyHex) {
65
+ const sk = (0, utils_js_1.hexToBytes)(privateKeyHex);
66
+ if (sk.length !== 32)
67
+ throw new Error('Private key must be 32 bytes (64 hex characters)');
68
+ const { publicKey } = expandSecretKey(sk);
69
+ return (0, utils_js_1.bytesToHex)(publicKey);
70
+ }
71
+ function nanoSignBlake2b(message32, privateKeyHex) {
72
+ if (!(message32 instanceof Uint8Array) || message32.length !== 32) {
73
+ throw new Error('Message must be a 32-byte digest (block hash)');
74
+ }
75
+ const sk = (0, utils_js_1.hexToBytes)(privateKeyHex);
76
+ if (sk.length !== 32)
77
+ throw new Error('Private key must be 32 bytes (64 hex characters)');
78
+ const { scalar: a, prefix, publicKey: A } = expandSecretKey(sk);
79
+ const r = modL(bytesToBigIntLE(hash512(prefix, message32)));
80
+ const R = ed25519_js_1.ed25519.Point.BASE.multiply(r).toBytes();
81
+ const k = modL(bytesToBigIntLE(hash512(R, A, message32)));
82
+ const S = modL(r + k * a);
83
+ const sig = new Uint8Array(64);
84
+ sig.set(R, 0);
85
+ sig.set(bigIntToBytesLE(S, 32), 32);
86
+ return (0, utils_js_1.bytesToHex)(sig);
87
+ }
88
+ function nanoVerifyBlake2b(message32, signatureHex, publicKeyHex) {
89
+ try {
90
+ if (!(message32 instanceof Uint8Array) || message32.length !== 32)
91
+ return false;
92
+ const sig = (0, utils_js_1.hexToBytes)(signatureHex);
93
+ if (sig.length !== 64)
94
+ return false;
95
+ const pk = (0, utils_js_1.hexToBytes)(publicKeyHex);
96
+ if (pk.length !== 32)
97
+ return false;
98
+ const Rbytes = sig.slice(0, 32);
99
+ const Sbytes = sig.slice(32, 64);
100
+ const S = bytesToBigIntLE(Sbytes);
101
+ if (S >= ED25519_ORDER)
102
+ return false;
103
+ const R = ed25519_js_1.ed25519.Point.fromHex((0, utils_js_1.bytesToHex)(Rbytes));
104
+ const A = ed25519_js_1.ed25519.Point.fromHex((0, utils_js_1.bytesToHex)(pk));
105
+ const k = modL(bytesToBigIntLE(hash512(Rbytes, pk, message32)));
106
+ const SB = ed25519_js_1.ed25519.Point.BASE.multiply(S);
107
+ const RpluskA = R.add(A.multiply(k));
108
+ return SB.equals(RpluskA);
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ }
114
+ //# sourceMappingURL=ed25519-blake2b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed25519-blake2b.js","sourceRoot":"","sources":["../../src/ed25519-blake2b.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,7 @@ export { deriveAddressBIP44, derivePrivateKeyBIP44, derivePublicKeyBIP44, public
7
7
  export { validateAddress, type ValidateAddressResult } from './validate';
8
8
  export { nanoToRaw, rawToNano, formatNano, knanoToRaw, mnanoToRaw } from './convert';
9
9
  export { generateAsciiQr } from './qr';
10
- export { nanoRpcCall, rpcAccountBalance, rpcAccountsBalances, rpcAccountsFrontiers, type AccountBalanceResponse, type AccountsBalancesResponse, type AccountsFrontiersResponse, type RpcCallOptions, } from './rpc';
10
+ export { nanoGetPublicKeyFromPrivateKey, nanoSignBlake2b, nanoVerifyBlake2b } from './ed25519-blake2b';
11
+ export { hashNanoStateBlock, hashNanoStateBlockHex, type StateBlockHashInput } from './state-block';
12
+ export { nanoRpcCall, rpcAccountBalance, rpcAccountsBalances, rpcAccountsFrontiers, rpcAccountInfo, rpcReceivable, rpcWorkGenerate, rpcProcess, type AccountBalanceResponse, type AccountsBalancesResponse, type AccountsFrontiersResponse, type AccountInfoResponse, type WorkGenerateResponse, type ProcessResponse, type ReceivableItem, type RpcCallOptions, } from './rpc';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1G,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,GACpB,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1G,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,8BAA8B,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,OAAO,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rpcAccountsFrontiers = exports.rpcAccountsBalances = exports.rpcAccountBalance = exports.nanoRpcCall = exports.generateAsciiQr = exports.mnanoToRaw = exports.knanoToRaw = exports.formatNano = exports.rawToNano = exports.nanoToRaw = exports.validateAddress = exports.mnemonicToBIP39Seed = exports.validateMnemonicBIP44 = exports.publicKeyToAddressBIP44 = exports.derivePublicKeyBIP44 = exports.derivePrivateKeyBIP44 = exports.deriveAddressBIP44 = exports.publicKeyToNanoAddress = exports.decodeNanoAddress = exports.publicKeyToAddress = exports.derivePublicKeyLegacy = exports.derivePrivateKeyLegacy = exports.deriveAddressLegacy = exports.validateMnemonic = exports.mnemonicToSeed = exports.seedToMnemonic = exports.generateMnemonic = exports.generateSeed = exports.blake2b256Hex = exports.blake2b512 = exports.blake2b256 = exports.base32Decode = exports.base32Encode = void 0;
3
+ exports.rpcProcess = exports.rpcWorkGenerate = exports.rpcReceivable = exports.rpcAccountInfo = exports.rpcAccountsFrontiers = exports.rpcAccountsBalances = exports.rpcAccountBalance = exports.nanoRpcCall = exports.hashNanoStateBlockHex = exports.hashNanoStateBlock = exports.nanoVerifyBlake2b = exports.nanoSignBlake2b = exports.nanoGetPublicKeyFromPrivateKey = exports.generateAsciiQr = exports.mnanoToRaw = exports.knanoToRaw = exports.formatNano = exports.rawToNano = exports.nanoToRaw = exports.validateAddress = exports.mnemonicToBIP39Seed = exports.validateMnemonicBIP44 = exports.publicKeyToAddressBIP44 = exports.derivePublicKeyBIP44 = exports.derivePrivateKeyBIP44 = exports.deriveAddressBIP44 = exports.publicKeyToNanoAddress = exports.decodeNanoAddress = exports.publicKeyToAddress = exports.derivePublicKeyLegacy = exports.derivePrivateKeyLegacy = exports.deriveAddressLegacy = exports.validateMnemonic = exports.mnemonicToSeed = exports.seedToMnemonic = exports.generateMnemonic = exports.generateSeed = exports.blake2b256Hex = exports.blake2b512 = exports.blake2b256 = exports.base32Decode = exports.base32Encode = void 0;
4
4
  // xno core package
5
5
  var base32_1 = require("./base32");
6
6
  Object.defineProperty(exports, "base32Encode", { enumerable: true, get: function () { return base32_1.base32Encode; } });
@@ -40,9 +40,20 @@ Object.defineProperty(exports, "knanoToRaw", { enumerable: true, get: function (
40
40
  Object.defineProperty(exports, "mnanoToRaw", { enumerable: true, get: function () { return convert_1.mnanoToRaw; } });
41
41
  var qr_1 = require("./qr");
42
42
  Object.defineProperty(exports, "generateAsciiQr", { enumerable: true, get: function () { return qr_1.generateAsciiQr; } });
43
+ var ed25519_blake2b_1 = require("./ed25519-blake2b");
44
+ Object.defineProperty(exports, "nanoGetPublicKeyFromPrivateKey", { enumerable: true, get: function () { return ed25519_blake2b_1.nanoGetPublicKeyFromPrivateKey; } });
45
+ Object.defineProperty(exports, "nanoSignBlake2b", { enumerable: true, get: function () { return ed25519_blake2b_1.nanoSignBlake2b; } });
46
+ Object.defineProperty(exports, "nanoVerifyBlake2b", { enumerable: true, get: function () { return ed25519_blake2b_1.nanoVerifyBlake2b; } });
47
+ var state_block_1 = require("./state-block");
48
+ Object.defineProperty(exports, "hashNanoStateBlock", { enumerable: true, get: function () { return state_block_1.hashNanoStateBlock; } });
49
+ Object.defineProperty(exports, "hashNanoStateBlockHex", { enumerable: true, get: function () { return state_block_1.hashNanoStateBlockHex; } });
43
50
  var rpc_1 = require("./rpc");
44
51
  Object.defineProperty(exports, "nanoRpcCall", { enumerable: true, get: function () { return rpc_1.nanoRpcCall; } });
45
52
  Object.defineProperty(exports, "rpcAccountBalance", { enumerable: true, get: function () { return rpc_1.rpcAccountBalance; } });
46
53
  Object.defineProperty(exports, "rpcAccountsBalances", { enumerable: true, get: function () { return rpc_1.rpcAccountsBalances; } });
47
54
  Object.defineProperty(exports, "rpcAccountsFrontiers", { enumerable: true, get: function () { return rpc_1.rpcAccountsFrontiers; } });
55
+ Object.defineProperty(exports, "rpcAccountInfo", { enumerable: true, get: function () { return rpc_1.rpcAccountInfo; } });
56
+ Object.defineProperty(exports, "rpcReceivable", { enumerable: true, get: function () { return rpc_1.rpcReceivable; } });
57
+ Object.defineProperty(exports, "rpcWorkGenerate", { enumerable: true, get: function () { return rpc_1.rpcWorkGenerate; } });
58
+ Object.defineProperty(exports, "rpcProcess", { enumerable: true, get: function () { return rpc_1.rpcProcess; } });
48
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,mCAAsD;AAA7C,sGAAA,YAAY,OAAA;AAAE,sGAAA,YAAY,OAAA;AACnC,qCAAkE;AAAzD,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,wGAAA,aAAa,OAAA;AAC9C,+BAA0G;AAAjG,oGAAA,YAAY,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AACzF,mDAM0B;AALxB,qHAAA,mBAAmB,OAAA;AACnB,wHAAA,sBAAsB,OAAA;AACtB,uHAAA,qBAAqB,OAAA;AACrB,oHAAA,kBAAkB,OAAA;AAGpB,+CAAmG;AAA1F,iHAAA,iBAAiB,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAClD,iDAQyB;AAPvB,mHAAA,kBAAkB,OAAA;AAClB,sHAAA,qBAAqB,OAAA;AACrB,qHAAA,oBAAoB,OAAA;AACpB,wHAAA,uBAAuB,OAAA;AACvB,sHAAA,qBAAqB,OAAA;AACrB,oHAAA,mBAAmB,OAAA;AAGrB,uCAAyE;AAAhE,2GAAA,eAAe,OAAA;AACxB,qCAAqF;AAA5E,oGAAA,SAAS,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AACjE,2BAAuC;AAA9B,qGAAA,eAAe,OAAA;AACxB,6BASe;AARb,kGAAA,WAAW,OAAA;AACX,wGAAA,iBAAiB,OAAA;AACjB,0GAAA,mBAAmB,OAAA;AACnB,2GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,mCAAsD;AAA7C,sGAAA,YAAY,OAAA;AAAE,sGAAA,YAAY,OAAA;AACnC,qCAAkE;AAAzD,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,wGAAA,aAAa,OAAA;AAC9C,+BAA0G;AAAjG,oGAAA,YAAY,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,sGAAA,cAAc,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AACzF,mDAM0B;AALxB,qHAAA,mBAAmB,OAAA;AACnB,wHAAA,sBAAsB,OAAA;AACtB,uHAAA,qBAAqB,OAAA;AACrB,oHAAA,kBAAkB,OAAA;AAGpB,+CAAmG;AAA1F,iHAAA,iBAAiB,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAClD,iDAQyB;AAPvB,mHAAA,kBAAkB,OAAA;AAClB,sHAAA,qBAAqB,OAAA;AACrB,qHAAA,oBAAoB,OAAA;AACpB,wHAAA,uBAAuB,OAAA;AACvB,sHAAA,qBAAqB,OAAA;AACrB,oHAAA,mBAAmB,OAAA;AAGrB,uCAAyE;AAAhE,2GAAA,eAAe,OAAA;AACxB,qCAAqF;AAA5E,oGAAA,SAAS,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,qGAAA,UAAU,OAAA;AACjE,2BAAuC;AAA9B,qGAAA,eAAe,OAAA;AACxB,qDAAuG;AAA9F,iIAAA,8BAA8B,OAAA;AAAE,kHAAA,eAAe,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAC3E,6CAAoG;AAA3F,iHAAA,kBAAkB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAClD,6BAiBe;AAhBb,kGAAA,WAAW,OAAA;AACX,wGAAA,iBAAiB,OAAA;AACjB,0GAAA,mBAAmB,OAAA;AACnB,2GAAA,oBAAoB,OAAA;AACpB,qGAAA,cAAc,OAAA;AACd,oGAAA,aAAa,OAAA;AACb,sGAAA,eAAe,OAAA;AACf,iGAAA,UAAU,OAAA"}