@cds.id/podoru-sdk 1.1.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 (154) hide show
  1. package/README.md +155 -0
  2. package/dist/cjs/client/PodoruClient.js +153 -0
  3. package/dist/cjs/client/PodoruClient.js.map +1 -0
  4. package/dist/cjs/client/WebSocketClient.js +193 -0
  5. package/dist/cjs/client/WebSocketClient.js.map +1 -0
  6. package/dist/cjs/client/index.js +8 -0
  7. package/dist/cjs/client/index.js.map +1 -0
  8. package/dist/cjs/errors/index.js +78 -0
  9. package/dist/cjs/errors/index.js.map +1 -0
  10. package/dist/cjs/index.js +33 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/transaction/Signer.js +82 -0
  13. package/dist/cjs/transaction/Signer.js.map +1 -0
  14. package/dist/cjs/transaction/TransactionBuilder.js +127 -0
  15. package/dist/cjs/transaction/TransactionBuilder.js.map +1 -0
  16. package/dist/cjs/transaction/index.js +9 -0
  17. package/dist/cjs/transaction/index.js.map +1 -0
  18. package/dist/cjs/types/api.js +3 -0
  19. package/dist/cjs/types/api.js.map +1 -0
  20. package/dist/cjs/types/chain.js +3 -0
  21. package/dist/cjs/types/chain.js.map +1 -0
  22. package/dist/cjs/types/events.js +3 -0
  23. package/dist/cjs/types/events.js.map +1 -0
  24. package/dist/cjs/types/index.js +3 -0
  25. package/dist/cjs/types/index.js.map +1 -0
  26. package/dist/cjs/types/node.js +3 -0
  27. package/dist/cjs/types/node.js.map +1 -0
  28. package/dist/cjs/types/state.js +3 -0
  29. package/dist/cjs/types/state.js.map +1 -0
  30. package/dist/cjs/types/transaction.js +3 -0
  31. package/dist/cjs/types/transaction.js.map +1 -0
  32. package/dist/cjs/utils/address.js +36 -0
  33. package/dist/cjs/utils/address.js.map +1 -0
  34. package/dist/cjs/utils/encoding.js +49 -0
  35. package/dist/cjs/utils/encoding.js.map +1 -0
  36. package/dist/cjs/utils/hash.js +28 -0
  37. package/dist/cjs/utils/hash.js.map +1 -0
  38. package/dist/cjs/utils/index.js +17 -0
  39. package/dist/cjs/utils/index.js.map +1 -0
  40. package/dist/esm/client/PodoruClient.d.ts +79 -0
  41. package/dist/esm/client/PodoruClient.d.ts.map +1 -0
  42. package/dist/esm/client/PodoruClient.js +149 -0
  43. package/dist/esm/client/PodoruClient.js.map +1 -0
  44. package/dist/esm/client/WebSocketClient.d.ts +89 -0
  45. package/dist/esm/client/WebSocketClient.d.ts.map +1 -0
  46. package/dist/esm/client/WebSocketClient.js +189 -0
  47. package/dist/esm/client/WebSocketClient.js.map +1 -0
  48. package/dist/esm/client/index.d.ts +5 -0
  49. package/dist/esm/client/index.d.ts.map +1 -0
  50. package/dist/esm/client/index.js +3 -0
  51. package/dist/esm/client/index.js.map +1 -0
  52. package/dist/esm/errors/index.d.ts +41 -0
  53. package/dist/esm/errors/index.d.ts.map +1 -0
  54. package/dist/esm/errors/index.js +69 -0
  55. package/dist/esm/errors/index.js.map +1 -0
  56. package/dist/esm/index.d.ts +8 -0
  57. package/dist/esm/index.d.ts.map +1 -0
  58. package/dist/esm/index.js +9 -0
  59. package/dist/esm/index.js.map +1 -0
  60. package/dist/esm/transaction/Signer.d.ts +48 -0
  61. package/dist/esm/transaction/Signer.d.ts.map +1 -0
  62. package/dist/esm/transaction/Signer.js +77 -0
  63. package/dist/esm/transaction/Signer.js.map +1 -0
  64. package/dist/esm/transaction/TransactionBuilder.d.ts +44 -0
  65. package/dist/esm/transaction/TransactionBuilder.d.ts.map +1 -0
  66. package/dist/esm/transaction/TransactionBuilder.js +123 -0
  67. package/dist/esm/transaction/TransactionBuilder.js.map +1 -0
  68. package/dist/esm/transaction/index.d.ts +4 -0
  69. package/dist/esm/transaction/index.d.ts.map +1 -0
  70. package/dist/esm/transaction/index.js +3 -0
  71. package/dist/esm/transaction/index.js.map +1 -0
  72. package/dist/esm/types/api.d.ts +16 -0
  73. package/dist/esm/types/api.d.ts.map +1 -0
  74. package/dist/esm/types/api.js +2 -0
  75. package/dist/esm/types/api.js.map +1 -0
  76. package/dist/esm/types/chain.d.ts +32 -0
  77. package/dist/esm/types/chain.d.ts.map +1 -0
  78. package/dist/esm/types/chain.js +2 -0
  79. package/dist/esm/types/chain.js.map +1 -0
  80. package/dist/esm/types/events.d.ts +58 -0
  81. package/dist/esm/types/events.d.ts.map +1 -0
  82. package/dist/esm/types/events.js +2 -0
  83. package/dist/esm/types/events.js.map +1 -0
  84. package/dist/esm/types/index.d.ts +7 -0
  85. package/dist/esm/types/index.d.ts.map +1 -0
  86. package/dist/esm/types/index.js +2 -0
  87. package/dist/esm/types/index.js.map +1 -0
  88. package/dist/esm/types/node.d.ts +32 -0
  89. package/dist/esm/types/node.d.ts.map +1 -0
  90. package/dist/esm/types/node.js +2 -0
  91. package/dist/esm/types/node.js.map +1 -0
  92. package/dist/esm/types/state.d.ts +23 -0
  93. package/dist/esm/types/state.d.ts.map +1 -0
  94. package/dist/esm/types/state.js +2 -0
  95. package/dist/esm/types/state.js.map +1 -0
  96. package/dist/esm/types/transaction.d.ts +39 -0
  97. package/dist/esm/types/transaction.d.ts.map +1 -0
  98. package/dist/esm/types/transaction.js +2 -0
  99. package/dist/esm/types/transaction.js.map +1 -0
  100. package/dist/esm/utils/address.d.ts +14 -0
  101. package/dist/esm/utils/address.d.ts.map +1 -0
  102. package/dist/esm/utils/address.js +31 -0
  103. package/dist/esm/utils/address.js.map +1 -0
  104. package/dist/esm/utils/encoding.d.ts +21 -0
  105. package/dist/esm/utils/encoding.d.ts.map +1 -0
  106. package/dist/esm/utils/encoding.js +42 -0
  107. package/dist/esm/utils/encoding.js.map +1 -0
  108. package/dist/esm/utils/hash.d.ts +9 -0
  109. package/dist/esm/utils/hash.d.ts.map +1 -0
  110. package/dist/esm/utils/hash.js +24 -0
  111. package/dist/esm/utils/hash.js.map +1 -0
  112. package/dist/esm/utils/index.d.ts +4 -0
  113. package/dist/esm/utils/index.d.ts.map +1 -0
  114. package/dist/esm/utils/index.js +4 -0
  115. package/dist/esm/utils/index.js.map +1 -0
  116. package/dist/types/client/PodoruClient.d.ts +79 -0
  117. package/dist/types/client/PodoruClient.d.ts.map +1 -0
  118. package/dist/types/client/WebSocketClient.d.ts +89 -0
  119. package/dist/types/client/WebSocketClient.d.ts.map +1 -0
  120. package/dist/types/client/index.d.ts +5 -0
  121. package/dist/types/client/index.d.ts.map +1 -0
  122. package/dist/types/errors/index.d.ts +41 -0
  123. package/dist/types/errors/index.d.ts.map +1 -0
  124. package/dist/types/index.d.ts +8 -0
  125. package/dist/types/index.d.ts.map +1 -0
  126. package/dist/types/transaction/Signer.d.ts +48 -0
  127. package/dist/types/transaction/Signer.d.ts.map +1 -0
  128. package/dist/types/transaction/TransactionBuilder.d.ts +44 -0
  129. package/dist/types/transaction/TransactionBuilder.d.ts.map +1 -0
  130. package/dist/types/transaction/index.d.ts +4 -0
  131. package/dist/types/transaction/index.d.ts.map +1 -0
  132. package/dist/types/types/api.d.ts +16 -0
  133. package/dist/types/types/api.d.ts.map +1 -0
  134. package/dist/types/types/chain.d.ts +32 -0
  135. package/dist/types/types/chain.d.ts.map +1 -0
  136. package/dist/types/types/events.d.ts +58 -0
  137. package/dist/types/types/events.d.ts.map +1 -0
  138. package/dist/types/types/index.d.ts +7 -0
  139. package/dist/types/types/index.d.ts.map +1 -0
  140. package/dist/types/types/node.d.ts +32 -0
  141. package/dist/types/types/node.d.ts.map +1 -0
  142. package/dist/types/types/state.d.ts +23 -0
  143. package/dist/types/types/state.d.ts.map +1 -0
  144. package/dist/types/types/transaction.d.ts +39 -0
  145. package/dist/types/types/transaction.d.ts.map +1 -0
  146. package/dist/types/utils/address.d.ts +14 -0
  147. package/dist/types/utils/address.d.ts.map +1 -0
  148. package/dist/types/utils/encoding.d.ts +21 -0
  149. package/dist/types/utils/encoding.d.ts.map +1 -0
  150. package/dist/types/utils/hash.d.ts +9 -0
  151. package/dist/types/utils/hash.d.ts.map +1 -0
  152. package/dist/types/utils/index.d.ts +4 -0
  153. package/dist/types/utils/index.d.ts.map +1 -0
  154. package/package.json +69 -0
package/README.md ADDED
@@ -0,0 +1,155 @@
1
+ # Podoru SDK
2
+
3
+ TypeScript SDK for interacting with Podoru Chain.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @podoru/sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { PodoruClient, TransactionBuilder, WalletSigner } from '@podoru/sdk';
15
+
16
+ // Initialize client
17
+ const client = new PodoruClient({
18
+ baseUrl: 'http://localhost:8545'
19
+ });
20
+
21
+ // Read chain info
22
+ const chainInfo = await client.getChainInfo();
23
+ console.log('Height:', chainInfo.height);
24
+
25
+ // Read state
26
+ const value = await client.getState('chain:name');
27
+ console.log('Chain name:', value);
28
+ ```
29
+
30
+ ## Submitting Transactions
31
+
32
+ ```typescript
33
+ import { PodoruClient, TransactionBuilder, WalletSigner } from '@podoru/sdk';
34
+
35
+ const client = new PodoruClient({
36
+ baseUrl: 'http://localhost:8545'
37
+ });
38
+
39
+ // Create a signer from private key
40
+ const signer = new WalletSigner('0x...');
41
+
42
+ // Or create a random signer (for testing)
43
+ // const signer = WalletSigner.createRandom();
44
+
45
+ // Build and sign a transaction
46
+ const tx = await new TransactionBuilder(signer.address)
47
+ .set('user:alice:name', 'Alice')
48
+ .set('user:alice:email', 'alice@example.com')
49
+ .buildAndSign(signer);
50
+
51
+ // Submit the transaction
52
+ const result = await client.submitTransaction(tx);
53
+ console.log('Transaction hash:', result.transaction_hash);
54
+ ```
55
+
56
+ ## Real-time Events
57
+
58
+ ```typescript
59
+ import { WebSocketClient } from '@podoru/sdk';
60
+
61
+ const ws = new WebSocketClient({
62
+ url: 'ws://localhost:8545/api/v1/ws'
63
+ });
64
+
65
+ await ws.connect();
66
+ ws.subscribe(['new_block', 'new_transaction']);
67
+
68
+ ws.onBlock((event) => {
69
+ console.log('New block:', event.height, event.hash);
70
+ });
71
+
72
+ ws.onTransaction((event) => {
73
+ console.log('New transaction:', event.hash);
74
+ });
75
+ ```
76
+
77
+ ## API Reference
78
+
79
+ ### PodoruClient
80
+
81
+ REST API client for Podoru Chain.
82
+
83
+ #### Chain Methods
84
+ - `getChainInfo()` - Get blockchain metadata
85
+ - `getBlockByHash(hash)` - Get block by hash
86
+ - `getBlockByHeight(height)` - Get block by height
87
+ - `getLatestBlock()` - Get latest block
88
+
89
+ #### Transaction Methods
90
+ - `getTransaction(hash)` - Get transaction by hash
91
+ - `submitTransaction(tx)` - Submit a signed transaction
92
+
93
+ #### State Methods
94
+ - `getState(key)` - Get a single state value
95
+ - `batchGetState(keys)` - Get multiple state values
96
+ - `queryByPrefix(prefix, limit?)` - Query state by prefix
97
+
98
+ #### Node Methods
99
+ - `getNodeInfo()` - Get node information
100
+ - `getPeers()` - Get connected peers
101
+ - `getHealth()` - Health check
102
+
103
+ #### Mempool Methods
104
+ - `getMempool()` - Get pending transactions
105
+
106
+ ### TransactionBuilder
107
+
108
+ Builder for creating transactions.
109
+
110
+ ```typescript
111
+ const tx = await new TransactionBuilder(address)
112
+ .set('key1', 'value1') // Add SET operation
113
+ .delete('key2') // Add DELETE operation
114
+ .withNonce(12345) // Custom nonce (optional)
115
+ .withTimestamp(timestamp) // Custom timestamp (optional)
116
+ .buildAndSign(signer); // Sign and build
117
+ ```
118
+
119
+ ### WalletSigner
120
+
121
+ ECDSA signer using secp256k1 (Ethereum-compatible).
122
+
123
+ ```typescript
124
+ // From private key
125
+ const signer = new WalletSigner('0x...');
126
+
127
+ // From mnemonic
128
+ const signer = WalletSigner.fromMnemonic('word1 word2 ...');
129
+
130
+ // Random (for testing)
131
+ const signer = WalletSigner.createRandom();
132
+ ```
133
+
134
+ ### WebSocketClient
135
+
136
+ Real-time event subscription client.
137
+
138
+ ```typescript
139
+ const ws = new WebSocketClient({ url: 'ws://localhost:8545/api/v1/ws' });
140
+
141
+ await ws.connect();
142
+ ws.subscribe(['new_block', 'new_transaction']);
143
+
144
+ ws.onBlock(callback);
145
+ ws.onTransaction(callback);
146
+ ws.onChainUpdate(callback);
147
+ ws.onMempoolUpdate(callback);
148
+ ws.onConnect(callback);
149
+ ws.onDisconnect(callback);
150
+ ws.onError(callback);
151
+ ```
152
+
153
+ ## License
154
+
155
+ MIT
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PodoruClient = void 0;
4
+ const index_js_1 = require("../errors/index.js");
5
+ /**
6
+ * REST API client for Podoru Chain
7
+ */
8
+ class PodoruClient {
9
+ baseUrl;
10
+ timeout;
11
+ headers;
12
+ constructor(config) {
13
+ this.baseUrl = config.baseUrl.replace(/\/$/, ''); // Remove trailing slash
14
+ this.timeout = config.timeout ?? 30000;
15
+ this.headers = config.headers ?? {};
16
+ }
17
+ /**
18
+ * Internal fetch helper with error handling
19
+ */
20
+ async fetch(path, options) {
21
+ const controller = new AbortController();
22
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
23
+ try {
24
+ const response = await fetch(`${this.baseUrl}${path}`, {
25
+ ...options,
26
+ signal: controller.signal,
27
+ headers: {
28
+ 'Content-Type': 'application/json',
29
+ ...this.headers,
30
+ ...options?.headers,
31
+ },
32
+ });
33
+ clearTimeout(timeoutId);
34
+ if (!response.ok) {
35
+ const errorText = await response.text();
36
+ throw new index_js_1.ApiError(`API Error: ${response.status} - ${errorText}`, response.status);
37
+ }
38
+ const json = (await response.json());
39
+ // Unwrap the {success: true, data: ...} response format
40
+ if (json.success === false) {
41
+ throw new index_js_1.ApiError(json.error || 'Unknown error', 400, json);
42
+ }
43
+ if (json.success && json.data !== undefined) {
44
+ return json.data;
45
+ }
46
+ return json;
47
+ }
48
+ catch (error) {
49
+ clearTimeout(timeoutId);
50
+ if (error instanceof index_js_1.ApiError) {
51
+ throw error;
52
+ }
53
+ if (error instanceof Error && error.name === 'AbortError') {
54
+ throw new index_js_1.ApiError('Request timeout', 408);
55
+ }
56
+ throw new index_js_1.ApiError(`Network error: ${error instanceof Error ? error.message : 'unknown'}`, 0);
57
+ }
58
+ }
59
+ // ===== Chain Endpoints =====
60
+ /**
61
+ * Get blockchain information
62
+ */
63
+ async getChainInfo() {
64
+ return this.fetch('/api/v1/chain/info');
65
+ }
66
+ /**
67
+ * Get block by hash
68
+ */
69
+ async getBlockByHash(hash) {
70
+ return this.fetch(`/api/v1/block/${hash}`);
71
+ }
72
+ /**
73
+ * Get block by height
74
+ */
75
+ async getBlockByHeight(height) {
76
+ return this.fetch(`/api/v1/block/height/${height}`);
77
+ }
78
+ /**
79
+ * Get the latest block
80
+ */
81
+ async getLatestBlock() {
82
+ return this.fetch('/api/v1/block/latest');
83
+ }
84
+ // ===== Transaction Endpoints =====
85
+ /**
86
+ * Get transaction by hash
87
+ */
88
+ async getTransaction(hash) {
89
+ return this.fetch(`/api/v1/transaction/${hash}`);
90
+ }
91
+ /**
92
+ * Submit a signed transaction
93
+ */
94
+ async submitTransaction(tx) {
95
+ return this.fetch('/api/v1/transaction', {
96
+ method: 'POST',
97
+ body: JSON.stringify({ transaction: tx }),
98
+ });
99
+ }
100
+ // ===== State Endpoints =====
101
+ /**
102
+ * Get a single state value
103
+ */
104
+ async getState(key) {
105
+ return this.fetch(`/api/v1/state/${encodeURIComponent(key)}`);
106
+ }
107
+ /**
108
+ * Get multiple state values in a batch
109
+ */
110
+ async batchGetState(keys) {
111
+ return this.fetch('/api/v1/state/batch', {
112
+ method: 'POST',
113
+ body: JSON.stringify({ keys }),
114
+ });
115
+ }
116
+ /**
117
+ * Query state by key prefix
118
+ */
119
+ async queryByPrefix(prefix, limit) {
120
+ return this.fetch('/api/v1/state/query/prefix', {
121
+ method: 'POST',
122
+ body: JSON.stringify({ prefix, limit: limit ?? 100 }),
123
+ });
124
+ }
125
+ // ===== Node Endpoints =====
126
+ /**
127
+ * Get node information
128
+ */
129
+ async getNodeInfo() {
130
+ return this.fetch('/api/v1/node/info');
131
+ }
132
+ /**
133
+ * Get connected peers
134
+ */
135
+ async getPeers() {
136
+ return this.fetch('/api/v1/node/peers');
137
+ }
138
+ /**
139
+ * Health check
140
+ */
141
+ async getHealth() {
142
+ return this.fetch('/api/v1/node/health');
143
+ }
144
+ // ===== Mempool Endpoints =====
145
+ /**
146
+ * Get mempool information and pending transactions
147
+ */
148
+ async getMempool() {
149
+ return this.fetch('/api/v1/mempool');
150
+ }
151
+ }
152
+ exports.PodoruClient = PodoruClient;
153
+ //# sourceMappingURL=PodoruClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodoruClient.js","sourceRoot":"","sources":["../../../src/client/PodoruClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketClient = void 0;
4
+ const index_js_1 = require("../errors/index.js");
5
+ /**
6
+ * WebSocket client for real-time Podoru Chain events
7
+ */
8
+ class WebSocketClient {
9
+ url;
10
+ reconnectInterval;
11
+ maxReconnectAttempts;
12
+ ws = null;
13
+ reconnectAttempts = 0;
14
+ subscriptions = new Set();
15
+ listeners = new Map();
16
+ shouldReconnect = true;
17
+ constructor(config) {
18
+ this.url = config.url;
19
+ this.reconnectInterval = config.reconnectInterval ?? 3000;
20
+ this.maxReconnectAttempts = config.maxReconnectAttempts ?? Infinity;
21
+ }
22
+ /**
23
+ * Check if connected
24
+ */
25
+ get isConnected() {
26
+ return this.ws?.readyState === WebSocket.OPEN;
27
+ }
28
+ /**
29
+ * Connect to the WebSocket server
30
+ */
31
+ connect() {
32
+ return new Promise((resolve, reject) => {
33
+ if (this.ws?.readyState === WebSocket.OPEN) {
34
+ resolve();
35
+ return;
36
+ }
37
+ try {
38
+ this.ws = new WebSocket(this.url);
39
+ this.ws.onopen = () => {
40
+ this.reconnectAttempts = 0;
41
+ // Resubscribe to events after reconnection
42
+ if (this.subscriptions.size > 0) {
43
+ this.sendSubscription(Array.from(this.subscriptions));
44
+ }
45
+ this.emit('connect', undefined);
46
+ resolve();
47
+ };
48
+ this.ws.onmessage = (event) => {
49
+ try {
50
+ const data = JSON.parse(event.data);
51
+ this.emit(data.type, data);
52
+ }
53
+ catch {
54
+ // Ignore parse errors
55
+ }
56
+ };
57
+ this.ws.onerror = () => {
58
+ const error = new index_js_1.WebSocketError('WebSocket error');
59
+ this.emit('error', error);
60
+ };
61
+ this.ws.onclose = (event) => {
62
+ this.emit('disconnect', event);
63
+ if (this.shouldReconnect && this.reconnectAttempts < this.maxReconnectAttempts) {
64
+ this.reconnectAttempts++;
65
+ setTimeout(() => this.connect(), this.reconnectInterval);
66
+ }
67
+ };
68
+ }
69
+ catch (error) {
70
+ reject(new index_js_1.WebSocketError(`Failed to connect: ${error instanceof Error ? error.message : 'unknown'}`));
71
+ }
72
+ });
73
+ }
74
+ /**
75
+ * Disconnect from the WebSocket server
76
+ */
77
+ disconnect() {
78
+ this.shouldReconnect = false;
79
+ if (this.ws) {
80
+ this.ws.close();
81
+ this.ws = null;
82
+ }
83
+ }
84
+ /**
85
+ * Subscribe to event types
86
+ */
87
+ subscribe(events) {
88
+ events.forEach((event) => this.subscriptions.add(event));
89
+ if (this.isConnected) {
90
+ this.sendSubscription(events);
91
+ }
92
+ }
93
+ /**
94
+ * Unsubscribe from event types
95
+ */
96
+ unsubscribe(events) {
97
+ events.forEach((event) => this.subscriptions.delete(event));
98
+ if (this.isConnected) {
99
+ this.sendUnsubscription(events);
100
+ }
101
+ }
102
+ sendSubscription(events) {
103
+ if (this.ws && this.isConnected) {
104
+ this.ws.send(JSON.stringify({ action: 'subscribe', events }));
105
+ }
106
+ }
107
+ sendUnsubscription(events) {
108
+ if (this.ws && this.isConnected) {
109
+ this.ws.send(JSON.stringify({ action: 'unsubscribe', events }));
110
+ }
111
+ }
112
+ /**
113
+ * Register event listener
114
+ */
115
+ on(event, callback) {
116
+ if (!this.listeners.has(event)) {
117
+ this.listeners.set(event, new Set());
118
+ }
119
+ this.listeners.get(event).add(callback);
120
+ // Return unsubscribe function
121
+ return () => {
122
+ this.listeners.get(event)?.delete(callback);
123
+ };
124
+ }
125
+ /**
126
+ * Listen for new block events
127
+ */
128
+ onBlock(callback) {
129
+ return this.on('new_block', (event) => callback(event.data));
130
+ }
131
+ /**
132
+ * Listen for new transaction events
133
+ */
134
+ onTransaction(callback) {
135
+ return this.on('new_transaction', (event) => callback(event.data));
136
+ }
137
+ /**
138
+ * Listen for chain update events
139
+ */
140
+ onChainUpdate(callback) {
141
+ return this.on('chain_update', (event) => callback(event.data));
142
+ }
143
+ /**
144
+ * Listen for mempool update events
145
+ */
146
+ onMempoolUpdate(callback) {
147
+ return this.on('mempool_update', (event) => callback(event.data));
148
+ }
149
+ /**
150
+ * Listen for connection events
151
+ */
152
+ onConnect(callback) {
153
+ if (!this.listeners.has('connect')) {
154
+ this.listeners.set('connect', new Set());
155
+ }
156
+ this.listeners.get('connect').add(callback);
157
+ return () => {
158
+ this.listeners.get('connect')?.delete(callback);
159
+ };
160
+ }
161
+ /**
162
+ * Listen for disconnect events
163
+ */
164
+ onDisconnect(callback) {
165
+ if (!this.listeners.has('disconnect')) {
166
+ this.listeners.set('disconnect', new Set());
167
+ }
168
+ this.listeners.get('disconnect').add(callback);
169
+ return () => {
170
+ this.listeners.get('disconnect')?.delete(callback);
171
+ };
172
+ }
173
+ /**
174
+ * Listen for error events
175
+ */
176
+ onError(callback) {
177
+ if (!this.listeners.has('error')) {
178
+ this.listeners.set('error', new Set());
179
+ }
180
+ this.listeners.get('error').add(callback);
181
+ return () => {
182
+ this.listeners.get('error')?.delete(callback);
183
+ };
184
+ }
185
+ emit(event, data) {
186
+ const callbacks = this.listeners.get(event);
187
+ if (callbacks) {
188
+ callbacks.forEach((callback) => callback(data));
189
+ }
190
+ }
191
+ }
192
+ exports.WebSocketClient = WebSocketClient;
193
+ //# sourceMappingURL=WebSocketClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketClient.js","sourceRoot":"","sources":["../../../src/client/WebSocketClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketClient = exports.PodoruClient = void 0;
4
+ var PodoruClient_js_1 = require("./PodoruClient.js");
5
+ Object.defineProperty(exports, "PodoruClient", { enumerable: true, get: function () { return PodoruClient_js_1.PodoruClient; } });
6
+ var WebSocketClient_js_1 = require("./WebSocketClient.js");
7
+ Object.defineProperty(exports, "WebSocketClient", { enumerable: true, get: function () { return WebSocketClient_js_1.WebSocketClient; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAGrB,2DAAuD;AAA9C,qHAAA,eAAe,OAAA"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketError = exports.ValidationError = exports.SigningError = exports.TransactionError = exports.ApiError = exports.PodoruError = void 0;
4
+ /**
5
+ * Base error class for Podoru SDK
6
+ */
7
+ class PodoruError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'PodoruError';
11
+ Object.setPrototypeOf(this, PodoruError.prototype);
12
+ }
13
+ }
14
+ exports.PodoruError = PodoruError;
15
+ /**
16
+ * Error from API requests
17
+ */
18
+ class ApiError extends PodoruError {
19
+ statusCode;
20
+ response;
21
+ constructor(message, statusCode, response) {
22
+ super(message);
23
+ this.name = 'ApiError';
24
+ this.statusCode = statusCode;
25
+ this.response = response;
26
+ Object.setPrototypeOf(this, ApiError.prototype);
27
+ }
28
+ }
29
+ exports.ApiError = ApiError;
30
+ /**
31
+ * Error during transaction processing
32
+ */
33
+ class TransactionError extends PodoruError {
34
+ transactionHash;
35
+ constructor(message, transactionHash) {
36
+ super(message);
37
+ this.name = 'TransactionError';
38
+ this.transactionHash = transactionHash;
39
+ Object.setPrototypeOf(this, TransactionError.prototype);
40
+ }
41
+ }
42
+ exports.TransactionError = TransactionError;
43
+ /**
44
+ * Error during transaction signing
45
+ */
46
+ class SigningError extends PodoruError {
47
+ constructor(message) {
48
+ super(message);
49
+ this.name = 'SigningError';
50
+ Object.setPrototypeOf(this, SigningError.prototype);
51
+ }
52
+ }
53
+ exports.SigningError = SigningError;
54
+ /**
55
+ * Validation error for invalid inputs
56
+ */
57
+ class ValidationError extends PodoruError {
58
+ constructor(message) {
59
+ super(message);
60
+ this.name = 'ValidationError';
61
+ Object.setPrototypeOf(this, ValidationError.prototype);
62
+ }
63
+ }
64
+ exports.ValidationError = ValidationError;
65
+ /**
66
+ * WebSocket connection error
67
+ */
68
+ class WebSocketError extends PodoruError {
69
+ code;
70
+ constructor(message, code) {
71
+ super(message);
72
+ this.name = 'WebSocketError';
73
+ this.code = code;
74
+ Object.setPrototypeOf(this, WebSocketError.prototype);
75
+ }
76
+ }
77
+ exports.WebSocketError = WebSocketError;
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AAND,kCAMC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,WAAW;IAC9B,UAAU,CAAS;IACnB,QAAQ,CAAW;IAE5B,YAAY,OAAe,EAAE,UAAkB,EAAE,QAAkB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;CACF;AAXD,4BAWC;AAED;;GAEG;AACH,MAAa,gBAAiB,SAAQ,WAAW;IACtC,eAAe,CAAU;IAElC,YAAY,OAAe,EAAE,eAAwB;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF;AATD,4CASC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,WAAW;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAND,oCAMC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAND,0CAMC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,WAAW;IACpC,IAAI,CAAU;IAEvB,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AATD,wCASC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addressEquals = exports.normalizeAddress = exports.isValidAddress = exports.sha256Hex = exports.sha256 = exports.bytesToHex = exports.hexToBytes = exports.base64DecodeBytes = exports.base64Decode = exports.base64Encode = exports.WebSocketError = exports.ValidationError = exports.SigningError = exports.TransactionError = exports.ApiError = exports.PodoruError = exports.serializeSignature = exports.WalletSigner = exports.TransactionBuilder = exports.WebSocketClient = exports.PodoruClient = void 0;
4
+ // Client exports
5
+ var index_js_1 = require("./client/index.js");
6
+ Object.defineProperty(exports, "PodoruClient", { enumerable: true, get: function () { return index_js_1.PodoruClient; } });
7
+ Object.defineProperty(exports, "WebSocketClient", { enumerable: true, get: function () { return index_js_1.WebSocketClient; } });
8
+ // Transaction exports
9
+ var index_js_2 = require("./transaction/index.js");
10
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return index_js_2.TransactionBuilder; } });
11
+ Object.defineProperty(exports, "WalletSigner", { enumerable: true, get: function () { return index_js_2.WalletSigner; } });
12
+ Object.defineProperty(exports, "serializeSignature", { enumerable: true, get: function () { return index_js_2.serializeSignature; } });
13
+ // Error exports
14
+ var index_js_3 = require("./errors/index.js");
15
+ Object.defineProperty(exports, "PodoruError", { enumerable: true, get: function () { return index_js_3.PodoruError; } });
16
+ Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return index_js_3.ApiError; } });
17
+ Object.defineProperty(exports, "TransactionError", { enumerable: true, get: function () { return index_js_3.TransactionError; } });
18
+ Object.defineProperty(exports, "SigningError", { enumerable: true, get: function () { return index_js_3.SigningError; } });
19
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return index_js_3.ValidationError; } });
20
+ Object.defineProperty(exports, "WebSocketError", { enumerable: true, get: function () { return index_js_3.WebSocketError; } });
21
+ // Utility exports
22
+ var index_js_4 = require("./utils/index.js");
23
+ Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return index_js_4.base64Encode; } });
24
+ Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return index_js_4.base64Decode; } });
25
+ Object.defineProperty(exports, "base64DecodeBytes", { enumerable: true, get: function () { return index_js_4.base64DecodeBytes; } });
26
+ Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return index_js_4.hexToBytes; } });
27
+ Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return index_js_4.bytesToHex; } });
28
+ Object.defineProperty(exports, "sha256", { enumerable: true, get: function () { return index_js_4.sha256; } });
29
+ Object.defineProperty(exports, "sha256Hex", { enumerable: true, get: function () { return index_js_4.sha256Hex; } });
30
+ Object.defineProperty(exports, "isValidAddress", { enumerable: true, get: function () { return index_js_4.isValidAddress; } });
31
+ Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return index_js_4.normalizeAddress; } });
32
+ Object.defineProperty(exports, "addressEquals", { enumerable: true, get: function () { return index_js_4.addressEquals; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,8CAAkE;AAAzD,wGAAA,YAAY,OAAA;AAAE,2GAAA,eAAe,OAAA;AAGtC,sBAAsB;AACtB,mDAA8F;AAArF,8GAAA,kBAAkB,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAG7D,gBAAgB;AAChB,8CAO2B;AANzB,uGAAA,WAAW,OAAA;AACX,oGAAA,QAAQ,OAAA;AACR,4GAAA,gBAAgB,OAAA;AAChB,wGAAA,YAAY,OAAA;AACZ,2GAAA,eAAe,OAAA;AACf,0GAAA,cAAc,OAAA;AAGhB,kBAAkB;AAClB,6CAW0B;AAVxB,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,6GAAA,iBAAiB,OAAA;AACjB,sGAAA,UAAU,OAAA;AACV,sGAAA,UAAU,OAAA;AACV,kGAAA,MAAM,OAAA;AACN,qGAAA,SAAS,OAAA;AACT,0GAAA,cAAc,OAAA;AACd,4GAAA,gBAAgB,OAAA;AAChB,yGAAA,aAAa,OAAA"}