n8n-nodes-iota 1.0.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 (144) hide show
  1. package/LICENSE +46 -0
  2. package/README.md +407 -0
  3. package/dist/credentials/Chronicle.credentials.d.ts +23 -0
  4. package/dist/credentials/Chronicle.credentials.d.ts.map +1 -0
  5. package/dist/credentials/Chronicle.credentials.js +84 -0
  6. package/dist/credentials/Chronicle.credentials.js.map +1 -0
  7. package/dist/credentials/IotaNetwork.credentials.d.ts +22 -0
  8. package/dist/credentials/IotaNetwork.credentials.d.ts.map +1 -0
  9. package/dist/credentials/IotaNetwork.credentials.js +158 -0
  10. package/dist/credentials/IotaNetwork.credentials.js.map +1 -0
  11. package/dist/credentials/ShimmerEvm.credentials.d.ts +20 -0
  12. package/dist/credentials/ShimmerEvm.credentials.d.ts.map +1 -0
  13. package/dist/credentials/ShimmerEvm.credentials.js +145 -0
  14. package/dist/credentials/ShimmerEvm.credentials.js.map +1 -0
  15. package/dist/index.d.ts +13 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +29 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/nodes/Iota/Iota.node.d.ts +24 -0
  20. package/dist/nodes/Iota/Iota.node.d.ts.map +1 -0
  21. package/dist/nodes/Iota/Iota.node.js +1227 -0
  22. package/dist/nodes/Iota/Iota.node.js.map +1 -0
  23. package/dist/nodes/Iota/IotaTrigger.node.d.ts +19 -0
  24. package/dist/nodes/Iota/IotaTrigger.node.d.ts.map +1 -0
  25. package/dist/nodes/Iota/IotaTrigger.node.js +340 -0
  26. package/dist/nodes/Iota/IotaTrigger.node.js.map +1 -0
  27. package/dist/nodes/Iota/actions/alias/index.d.ts +3 -0
  28. package/dist/nodes/Iota/actions/alias/index.d.ts.map +1 -0
  29. package/dist/nodes/Iota/actions/alias/index.js +15 -0
  30. package/dist/nodes/Iota/actions/alias/index.js.map +1 -0
  31. package/dist/nodes/Iota/actions/block/index.d.ts +3 -0
  32. package/dist/nodes/Iota/actions/block/index.d.ts.map +1 -0
  33. package/dist/nodes/Iota/actions/block/index.js +15 -0
  34. package/dist/nodes/Iota/actions/block/index.js.map +1 -0
  35. package/dist/nodes/Iota/actions/identity/index.d.ts +3 -0
  36. package/dist/nodes/Iota/actions/identity/index.d.ts.map +1 -0
  37. package/dist/nodes/Iota/actions/identity/index.js +15 -0
  38. package/dist/nodes/Iota/actions/identity/index.js.map +1 -0
  39. package/dist/nodes/Iota/actions/indexer/index.d.ts +3 -0
  40. package/dist/nodes/Iota/actions/indexer/index.d.ts.map +1 -0
  41. package/dist/nodes/Iota/actions/indexer/index.js +15 -0
  42. package/dist/nodes/Iota/actions/indexer/index.js.map +1 -0
  43. package/dist/nodes/Iota/actions/nativeToken/index.d.ts +3 -0
  44. package/dist/nodes/Iota/actions/nativeToken/index.d.ts.map +1 -0
  45. package/dist/nodes/Iota/actions/nativeToken/index.js +15 -0
  46. package/dist/nodes/Iota/actions/nativeToken/index.js.map +1 -0
  47. package/dist/nodes/Iota/actions/nft/index.d.ts +3 -0
  48. package/dist/nodes/Iota/actions/nft/index.d.ts.map +1 -0
  49. package/dist/nodes/Iota/actions/nft/index.js +15 -0
  50. package/dist/nodes/Iota/actions/nft/index.js.map +1 -0
  51. package/dist/nodes/Iota/actions/node/index.d.ts +3 -0
  52. package/dist/nodes/Iota/actions/node/index.d.ts.map +1 -0
  53. package/dist/nodes/Iota/actions/node/index.js +15 -0
  54. package/dist/nodes/Iota/actions/node/index.js.map +1 -0
  55. package/dist/nodes/Iota/actions/output/index.d.ts +3 -0
  56. package/dist/nodes/Iota/actions/output/index.d.ts.map +1 -0
  57. package/dist/nodes/Iota/actions/output/index.js +15 -0
  58. package/dist/nodes/Iota/actions/output/index.js.map +1 -0
  59. package/dist/nodes/Iota/actions/participation/index.d.ts +3 -0
  60. package/dist/nodes/Iota/actions/participation/index.d.ts.map +1 -0
  61. package/dist/nodes/Iota/actions/participation/index.js +15 -0
  62. package/dist/nodes/Iota/actions/participation/index.js.map +1 -0
  63. package/dist/nodes/Iota/actions/shimmerEvm/index.d.ts +3 -0
  64. package/dist/nodes/Iota/actions/shimmerEvm/index.d.ts.map +1 -0
  65. package/dist/nodes/Iota/actions/shimmerEvm/index.js +246 -0
  66. package/dist/nodes/Iota/actions/shimmerEvm/index.js.map +1 -0
  67. package/dist/nodes/Iota/actions/streams/index.d.ts +3 -0
  68. package/dist/nodes/Iota/actions/streams/index.d.ts.map +1 -0
  69. package/dist/nodes/Iota/actions/streams/index.js +15 -0
  70. package/dist/nodes/Iota/actions/streams/index.js.map +1 -0
  71. package/dist/nodes/Iota/actions/stronghold/index.d.ts +3 -0
  72. package/dist/nodes/Iota/actions/stronghold/index.d.ts.map +1 -0
  73. package/dist/nodes/Iota/actions/stronghold/index.js +15 -0
  74. package/dist/nodes/Iota/actions/stronghold/index.js.map +1 -0
  75. package/dist/nodes/Iota/actions/transaction/index.d.ts +3 -0
  76. package/dist/nodes/Iota/actions/transaction/index.d.ts.map +1 -0
  77. package/dist/nodes/Iota/actions/transaction/index.js +15 -0
  78. package/dist/nodes/Iota/actions/transaction/index.js.map +1 -0
  79. package/dist/nodes/Iota/actions/utility/index.d.ts +3 -0
  80. package/dist/nodes/Iota/actions/utility/index.d.ts.map +1 -0
  81. package/dist/nodes/Iota/actions/utility/index.js +15 -0
  82. package/dist/nodes/Iota/actions/utility/index.js.map +1 -0
  83. package/dist/nodes/Iota/actions/wallet/index.d.ts +3 -0
  84. package/dist/nodes/Iota/actions/wallet/index.d.ts.map +1 -0
  85. package/dist/nodes/Iota/actions/wallet/index.js +222 -0
  86. package/dist/nodes/Iota/actions/wallet/index.js.map +1 -0
  87. package/dist/nodes/Iota/constants/networks.d.ts +48 -0
  88. package/dist/nodes/Iota/constants/networks.d.ts.map +1 -0
  89. package/dist/nodes/Iota/constants/networks.js +120 -0
  90. package/dist/nodes/Iota/constants/networks.js.map +1 -0
  91. package/dist/nodes/Iota/constants/protocols.d.ts +127 -0
  92. package/dist/nodes/Iota/constants/protocols.d.ts.map +1 -0
  93. package/dist/nodes/Iota/constants/protocols.js +147 -0
  94. package/dist/nodes/Iota/constants/protocols.js.map +1 -0
  95. package/dist/nodes/Iota/constants/schemas.d.ts +113 -0
  96. package/dist/nodes/Iota/constants/schemas.d.ts.map +1 -0
  97. package/dist/nodes/Iota/constants/schemas.js +104 -0
  98. package/dist/nodes/Iota/constants/schemas.js.map +1 -0
  99. package/dist/nodes/Iota/constants/units.d.ts +71 -0
  100. package/dist/nodes/Iota/constants/units.d.ts.map +1 -0
  101. package/dist/nodes/Iota/constants/units.js +143 -0
  102. package/dist/nodes/Iota/constants/units.js.map +1 -0
  103. package/dist/nodes/Iota/iota.svg +24 -0
  104. package/dist/nodes/Iota/transport/chronicleClient.d.ts +187 -0
  105. package/dist/nodes/Iota/transport/chronicleClient.d.ts.map +1 -0
  106. package/dist/nodes/Iota/transport/chronicleClient.js +314 -0
  107. package/dist/nodes/Iota/transport/chronicleClient.js.map +1 -0
  108. package/dist/nodes/Iota/transport/evmClient.d.ts +192 -0
  109. package/dist/nodes/Iota/transport/evmClient.d.ts.map +1 -0
  110. package/dist/nodes/Iota/transport/evmClient.js +293 -0
  111. package/dist/nodes/Iota/transport/evmClient.js.map +1 -0
  112. package/dist/nodes/Iota/transport/indexerClient.d.ts +179 -0
  113. package/dist/nodes/Iota/transport/indexerClient.d.ts.map +1 -0
  114. package/dist/nodes/Iota/transport/indexerClient.js +261 -0
  115. package/dist/nodes/Iota/transport/indexerClient.js.map +1 -0
  116. package/dist/nodes/Iota/transport/iotaClient.d.ts +336 -0
  117. package/dist/nodes/Iota/transport/iotaClient.d.ts.map +1 -0
  118. package/dist/nodes/Iota/transport/iotaClient.js +363 -0
  119. package/dist/nodes/Iota/transport/iotaClient.js.map +1 -0
  120. package/dist/nodes/Iota/transport/mqttClient.d.ts +172 -0
  121. package/dist/nodes/Iota/transport/mqttClient.d.ts.map +1 -0
  122. package/dist/nodes/Iota/transport/mqttClient.js +315 -0
  123. package/dist/nodes/Iota/transport/mqttClient.js.map +1 -0
  124. package/dist/nodes/Iota/utils/addressUtils.d.ts +84 -0
  125. package/dist/nodes/Iota/utils/addressUtils.d.ts.map +1 -0
  126. package/dist/nodes/Iota/utils/addressUtils.js +210 -0
  127. package/dist/nodes/Iota/utils/addressUtils.js.map +1 -0
  128. package/dist/nodes/Iota/utils/outputUtils.d.ts +139 -0
  129. package/dist/nodes/Iota/utils/outputUtils.d.ts.map +1 -0
  130. package/dist/nodes/Iota/utils/outputUtils.js +184 -0
  131. package/dist/nodes/Iota/utils/outputUtils.js.map +1 -0
  132. package/dist/nodes/Iota/utils/storageDeposit.d.ts +89 -0
  133. package/dist/nodes/Iota/utils/storageDeposit.d.ts.map +1 -0
  134. package/dist/nodes/Iota/utils/storageDeposit.js +216 -0
  135. package/dist/nodes/Iota/utils/storageDeposit.js.map +1 -0
  136. package/dist/nodes/Iota/utils/streamsUtils.d.ts +138 -0
  137. package/dist/nodes/Iota/utils/streamsUtils.d.ts.map +1 -0
  138. package/dist/nodes/Iota/utils/streamsUtils.js +192 -0
  139. package/dist/nodes/Iota/utils/streamsUtils.js.map +1 -0
  140. package/dist/nodes/Iota/utils/unitConverter.d.ts +80 -0
  141. package/dist/nodes/Iota/utils/unitConverter.d.ts.map +1 -0
  142. package/dist/nodes/Iota/utils/unitConverter.js +180 -0
  143. package/dist/nodes/Iota/utils/unitConverter.js.map +1 -0
  144. package/package.json +90 -0
package/LICENSE ADDED
@@ -0,0 +1,46 @@
1
+ Business Source License 1.1
2
+
3
+ License text copyright (c) 2017 MariaDB Corporation Ab.
4
+
5
+ Licensor:
6
+ Velocity BPA, LLC
7
+ https://velobpa.com
8
+
9
+ Licensed Work:
10
+ This repository and all source code, documentation, and associated artifacts
11
+ contained herein, including all n8n community nodes published by Velocity BPA.
12
+
13
+ Additional Use Grant:
14
+ You may use, modify, and run the Licensed Work free of charge for:
15
+ - Personal use
16
+ - Educational use
17
+ - Research use
18
+ - Internal business use, provided such use does not involve resale,
19
+ redistribution, or offering the Licensed Work as part of a commercial
20
+ product or service.
21
+
22
+ Commercial Use Restriction:
23
+ Commercial Use of the Licensed Work is prohibited without a valid
24
+ Commercial License issued by the Licensor.
25
+
26
+ Commercial Use includes, but is not limited to:
27
+ - Use of the Licensed Work within any Software-as-a-Service (SaaS),
28
+ Platform-as-a-Service (PaaS), or hosted application that is sold,
29
+ licensed, or monetized in any form
30
+ - Offering the Licensed Work as part of a managed services engagement
31
+ - Bundling or redistributing the Licensed Work with a paid product
32
+ - Reselling, sublicensing, or white-labeling the Licensed Work
33
+ - Embedding the Licensed Work into any commercial automation platform,
34
+ integration product, or solution offering
35
+
36
+ Change Date:
37
+ January 1, 2030
38
+
39
+ Change License:
40
+ Apache License, Version 2.0
41
+
42
+ For commercial licensing inquiries:
43
+ licensing@velobpa.com
44
+
45
+ Business Source License 1.1 full text:
46
+ https://mariadb.com/bsl11/
package/README.md ADDED
@@ -0,0 +1,407 @@
1
+ # n8n-nodes-iota
2
+
3
+ > [!IMPORTANT]
4
+ > **[Velocity BPA Licensing Notice]**
5
+ >
6
+ > This n8n node is licensed under the Business Source License 1.1 (BSL 1.1).
7
+ >
8
+ > Use of this node by for-profit organizations in production environments requires a commercial license from Velocity BPA.
9
+ >
10
+ > For licensing information, visit https://velobpa.com/licensing or contact licensing@velobpa.com.
11
+
12
+ A comprehensive n8n community node package for the IOTA/Shimmer blockchain ecosystem. This package provides feeless blockchain automation with support for native tokens, NFTs, DIDs, encrypted data streams, and ShimmerEVM smart contracts.
13
+
14
+ ![IOTA](https://img.shields.io/badge/IOTA-Stardust-0fc1b7?style=flat-square&logo=iota)
15
+ ![Shimmer](https://img.shields.io/badge/Shimmer-EVM-25f4ee?style=flat-square)
16
+ ![n8n](https://img.shields.io/badge/n8n-Community%20Node-ff6d5a?style=flat-square&logo=n8n)
17
+ ![License](https://img.shields.io/badge/License-BUSL%201.1-blue?style=flat-square)
18
+
19
+ ## Features
20
+
21
+ - **Feeless Transactions**: Send IOTA/SMR with zero fees
22
+ - **Native Tokens**: Create and manage L1 tokens via Foundries (IRC-30)
23
+ - **NFTs**: Mint, transfer, and manage L1 NFTs (IRC-27)
24
+ - **Decentralized Identity**: W3C DID standard with verifiable credentials
25
+ - **Encrypted Streams**: Machine-to-machine encrypted data channels
26
+ - **Alias Outputs**: Smart contract chain anchors and organizational accounts
27
+ - **ShimmerEVM**: EVM-compatible smart contract interactions
28
+ - **Real-time Events**: MQTT-based triggers for blockchain events
29
+ - **Multi-network**: IOTA Mainnet, Shimmer, Testnets, and Private Tangles
30
+
31
+ ## Supported Networks
32
+
33
+ | Network | HRP | Coin Type | Status |
34
+ |---------|-----|-----------|--------|
35
+ | IOTA Mainnet | `iota` | 4218 | ✅ Production |
36
+ | Shimmer Mainnet | `smr` | 4219 | ✅ Production |
37
+ | IOTA Testnet | `atoi` | 4218 | ✅ Testing |
38
+ | Shimmer Testnet | `rms` | 4219 | ✅ Testing |
39
+ | Private Tangle | Custom | Custom | ✅ Development |
40
+
41
+ ## Installation
42
+
43
+ ### Via npm (Recommended)
44
+
45
+ ```bash
46
+ npm install n8n-nodes-iota
47
+ ```
48
+
49
+ ### Manual Installation
50
+
51
+ 1. Navigate to your n8n custom nodes directory:
52
+ ```bash
53
+ cd ~/.n8n/custom
54
+ # Or for Docker: /home/node/.n8n/custom
55
+ ```
56
+
57
+ 2. Install the package:
58
+ ```bash
59
+ npm install n8n-nodes-iota
60
+ ```
61
+
62
+ 3. Restart n8n:
63
+ ```bash
64
+ n8n start
65
+ ```
66
+
67
+ ### From Source
68
+
69
+ ```bash
70
+ # Clone the repository
71
+ git clone https://github.com/Velocity-BPA/n8n-nodes-iota.git
72
+ cd n8n-nodes-iota
73
+
74
+ # Install dependencies
75
+ npm install
76
+
77
+ # Build the package
78
+ npm run build
79
+
80
+ # Link for local development
81
+ npm link
82
+ ```
83
+
84
+ ## Credentials
85
+
86
+ ### IOTA Network
87
+ Configure your IOTA/Shimmer network connection:
88
+ - **Network**: Select from predefined networks or custom
89
+ - **Node URL**: IOTA node REST API endpoint
90
+ - **Mnemonic**: 24-word BIP39 seed phrase (stored securely)
91
+ - **Stronghold Password**: Optional encryption for key management
92
+ - **MQTT URL**: For real-time event subscriptions
93
+
94
+ ### ShimmerEVM
95
+ For smart contract interactions:
96
+ - **RPC URL**: ShimmerEVM JSON-RPC endpoint
97
+ - **Private Key**: Ethereum-style private key
98
+ - **Chain ID**: 148 (mainnet) or 1073 (testnet)
99
+
100
+ ### Chronicle
101
+ For historical data queries:
102
+ - **API Endpoint**: Chronicle permanode URL
103
+ - **API Key**: Optional authentication
104
+
105
+ ## Resources & Operations
106
+
107
+ ### Wallet
108
+ | Operation | Description |
109
+ |-----------|-------------|
110
+ | Get Balance | Get total wallet balance |
111
+ | Generate Address | Create new receiving address |
112
+ | Get Transaction History | List past transactions |
113
+ | Sync Wallet | Synchronize with Tangle |
114
+ | Validate Address | Check Bech32 address validity |
115
+
116
+ ### Transaction
117
+ | Operation | Description |
118
+ |-----------|-------------|
119
+ | Send | Basic IOTA/SMR transfer |
120
+ | Send Multiple | Multi-recipient transaction |
121
+ | Get Transaction | Retrieve transaction details |
122
+ | Get Status | Check confirmation status |
123
+
124
+ ### Native Token (Foundry)
125
+ | Operation | Description |
126
+ |-----------|-------------|
127
+ | Create Foundry | Initialize token issuance |
128
+ | Mint Tokens | Create new tokens |
129
+ | Melt Tokens | Burn/destroy tokens |
130
+ | Send Tokens | Transfer native tokens |
131
+ | Get Token Info | IRC-30 metadata |
132
+
133
+ ### NFT
134
+ | Operation | Description |
135
+ |-----------|-------------|
136
+ | Mint NFT | Create new NFT (IRC-27) |
137
+ | Transfer NFT | Send NFT to address |
138
+ | Burn NFT | Destroy NFT permanently |
139
+ | Get NFT | Retrieve NFT details |
140
+ | Get Collection | List NFTs by issuer |
141
+
142
+ ### Identity (DID)
143
+ | Operation | Description |
144
+ |-----------|-------------|
145
+ | Create DID | New decentralized identity |
146
+ | Resolve DID | Fetch DID Document |
147
+ | Create Credential | Issue verifiable credential |
148
+ | Verify Credential | Validate VC signature |
149
+ | Revoke Credential | Mark credential as revoked |
150
+
151
+ ### Streams
152
+ | Operation | Description |
153
+ |-----------|-------------|
154
+ | Create Channel | Initialize encrypted channel |
155
+ | Publish Message | Send encrypted message |
156
+ | Subscribe | Request channel access |
157
+ | Read Messages | Decrypt and read messages |
158
+
159
+ ### ShimmerEVM
160
+ | Operation | Description |
161
+ |-----------|-------------|
162
+ | Get Balance | EVM account balance |
163
+ | Send Transaction | Transfer SMR on EVM |
164
+ | Call Contract | Read contract state |
165
+ | Execute Contract | Write to contract |
166
+ | Deploy Contract | Deploy new contract |
167
+
168
+ ## Trigger Events
169
+
170
+ The IOTA Trigger node monitors real-time blockchain events:
171
+
172
+ - **Funds Received**: New outputs at an address
173
+ - **Transaction Confirmed**: Transaction reaches finality
174
+ - **NFT Received**: NFT transferred to address
175
+ - **Alias State Changed**: Alias output updated
176
+ - **New Milestone**: Network milestone issued
177
+ - **Block Confirmed**: Block reaches finality
178
+
179
+ ## Usage Examples
180
+
181
+ ### Send IOTA Tokens
182
+ ```json
183
+ {
184
+ "resource": "transaction",
185
+ "operation": "send",
186
+ "recipientAddress": "iota1qp...",
187
+ "amount": "1000000",
188
+ "tag": "payment"
189
+ }
190
+ ```
191
+
192
+ ### Mint an NFT
193
+ ```json
194
+ {
195
+ "resource": "nft",
196
+ "operation": "mintNft",
197
+ "name": "My NFT",
198
+ "description": "A unique digital asset",
199
+ "uri": "ipfs://Qm...",
200
+ "mediaType": "image/png"
201
+ }
202
+ ```
203
+
204
+ ### Create a DID
205
+ ```json
206
+ {
207
+ "resource": "identity",
208
+ "operation": "createDidDocument",
209
+ "controller": "self"
210
+ }
211
+ ```
212
+
213
+ ### Monitor Address for Payments
214
+ Use the IOTA Trigger node:
215
+ 1. Event: "Funds Received"
216
+ 2. Address: Your Bech32 address
217
+ 3. Options: Set minimum amount filter
218
+
219
+ ## IOTA Concepts
220
+
221
+ ### The Tangle
222
+ IOTA uses a Directed Acyclic Graph (DAG) called the Tangle instead of a traditional blockchain. This enables:
223
+ - **Feeless transactions**: No gas fees
224
+ - **Parallel processing**: High throughput
225
+ - **Decentralization**: No miners needed
226
+
227
+ ### Stardust Protocol
228
+ Current IOTA protocol version featuring:
229
+ - **UTXO Model**: Unspent Transaction Outputs
230
+ - **Native Tokens**: L1 token issuance via Foundries
231
+ - **NFTs**: L1 native non-fungible tokens
232
+ - **Alias Outputs**: Organizational accounts
233
+ - **Storage Deposit**: Rent to prevent ledger bloat
234
+
235
+ ### Storage Deposit
236
+ Outputs require a minimum deposit (rent) based on data size:
237
+ - Prevents ledger bloat
238
+ - Returned when output is consumed
239
+ - Calculated per virtual byte
240
+
241
+ ### Unlock Conditions
242
+ Outputs can have conditions that control spending:
243
+ - **Timelock**: Locked until timestamp
244
+ - **Expiration**: Reverts after timestamp
245
+ - **Storage Deposit Return**: Requires deposit return
246
+ - **State Controller**: Alias state changes
247
+ - **Governor**: Alias governance changes
248
+
249
+ ## Local Testing
250
+
251
+ ### Using Docker
252
+
253
+ ```bash
254
+ # Pull n8n Docker image
255
+ docker pull n8nio/n8n
256
+
257
+ # Run with custom nodes mounted
258
+ docker run -it --rm \
259
+ --name n8n \
260
+ -p 5678:5678 \
261
+ -v ~/.n8n:/home/node/.n8n \
262
+ -v $(pwd):/home/node/.n8n/custom/n8n-nodes-iota \
263
+ n8nio/n8n
264
+ ```
265
+
266
+ ### Using npx
267
+
268
+ ```bash
269
+ # Start n8n with custom extensions path
270
+ N8N_CUSTOM_EXTENSIONS="./dist" npx n8n start
271
+ ```
272
+
273
+ ## Build from Source
274
+
275
+ ```bash
276
+ # Install dependencies
277
+ npm install
278
+
279
+ # Build TypeScript
280
+ npm run build
281
+
282
+ # Run linter
283
+ npm run lint
284
+
285
+ # Format code
286
+ npm run format
287
+
288
+ # Create distributable package
289
+ npm pack
290
+ ```
291
+
292
+ ## Project Structure
293
+
294
+ ```
295
+ n8n-nodes-iota/
296
+ ├── credentials/
297
+ │ ├── IotaNetwork.credentials.ts
298
+ │ ├── ShimmerEvm.credentials.ts
299
+ │ └── Chronicle.credentials.ts
300
+ ├── nodes/
301
+ │ └── Iota/
302
+ │ ├── Iota.node.ts
303
+ │ ├── IotaTrigger.node.ts
304
+ │ ├── iota.svg
305
+ │ ├── actions/
306
+ │ │ ├── wallet/
307
+ │ │ ├── transaction/
308
+ │ │ ├── output/
309
+ │ │ ├── nativeToken/
310
+ │ │ ├── nft/
311
+ │ │ ├── alias/
312
+ │ │ ├── streams/
313
+ │ │ ├── identity/
314
+ │ │ ├── stronghold/
315
+ │ │ ├── indexer/
316
+ │ │ ├── participation/
317
+ │ │ ├── shimmerEvm/
318
+ │ │ ├── node/
319
+ │ │ ├── block/
320
+ │ │ └── utility/
321
+ │ ├── transport/
322
+ │ │ ├── iotaClient.ts
323
+ │ │ ├── mqttClient.ts
324
+ │ │ ├── indexerClient.ts
325
+ │ │ ├── evmClient.ts
326
+ │ │ └── chronicleClient.ts
327
+ │ ├── constants/
328
+ │ │ ├── networks.ts
329
+ │ │ ├── protocols.ts
330
+ │ │ ├── schemas.ts
331
+ │ │ └── units.ts
332
+ │ └── utils/
333
+ │ ├── addressUtils.ts
334
+ │ ├── outputUtils.ts
335
+ │ ├── storageDeposit.ts
336
+ │ ├── streamsUtils.ts
337
+ │ └── unitConverter.ts
338
+ ├── package.json
339
+ ├── tsconfig.json
340
+ ├── gulpfile.js
341
+ ├── index.ts
342
+ ├── README.md
343
+ └── LICENSE
344
+ ```
345
+
346
+ ## Dependencies
347
+
348
+ | Package | Version | Purpose |
349
+ |---------|---------|---------|
350
+ | @iota/sdk | ^1.1.4 | IOTA SDK for Tangle interactions |
351
+ | ethers | ^6.9.0 | ShimmerEVM smart contracts |
352
+ | mqtt | ^5.3.0 | Real-time event subscriptions |
353
+ | axios | ^1.6.2 | REST API client |
354
+
355
+ ## Security
356
+
357
+ - **Never share your mnemonic** - 24-word seed phrase must be kept secret
358
+ - **Use Stronghold** - Secure encrypted storage for keys
359
+ - **Validate addresses** - Always verify Bech32 format and network HRP
360
+ - **Test on testnet first** - Use IOTA/Shimmer testnets before mainnet
361
+
362
+ ## Contributing
363
+
364
+ 1. Fork the repository
365
+ 2. Create a feature branch: `git checkout -b feature/amazing-feature`
366
+ 3. Commit changes: `git commit -m 'Add amazing feature'`
367
+ 4. Push to branch: `git push origin feature/amazing-feature`
368
+ 5. Open a Pull Request
369
+
370
+ ## Resources
371
+
372
+ - [IOTA Documentation](https://wiki.iota.org/)
373
+ - [Shimmer Documentation](https://wiki.shimmer.network/)
374
+ - [n8n Documentation](https://docs.n8n.io/)
375
+ - [IOTA SDK GitHub](https://github.com/iotaledger/iota-sdk)
376
+ - [IRC-27 NFT Standard](https://github.com/iotaledger/tips/blob/main/tips/TIP-0027/tip-0027.md)
377
+ - [IRC-30 Token Standard](https://github.com/iotaledger/tips/blob/main/tips/TIP-0030/tip-0030.md)
378
+
379
+ ## Author
380
+
381
+ **Velocity BPA, LLC**
382
+ - Website: [velobpa.com](https://velobpa.com)
383
+ - Licensing: [licensing@velobpa.com](mailto:licensing@velobpa.com)
384
+
385
+ ## Licensing
386
+
387
+ This n8n community node is licensed under the **Business Source License 1.1**.
388
+
389
+ ### Free Use
390
+ Permitted for personal, educational, research, and internal business use.
391
+
392
+ ### Commercial Use
393
+ Use of this node within any SaaS, PaaS, hosted platform, managed service,
394
+ or paid automation offering requires a commercial license.
395
+
396
+ For licensing inquiries: **licensing@velobpa.com**
397
+
398
+ See also:
399
+ - [LICENSE](LICENSE)
400
+ - [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md)
401
+ - [LICENSING_FAQ.md](LICENSING_FAQ.md)
402
+
403
+ ## Acknowledgments
404
+
405
+ - [IOTA Foundation](https://www.iota.org/) for the revolutionary DLT
406
+ - [n8n](https://n8n.io/) for the amazing workflow automation platform
407
+ - The IOTA community for continuous innovation
@@ -0,0 +1,23 @@
1
+ import { ICredentialType, INodeProperties, ICredentialTestRequest } from 'n8n-workflow';
2
+ /**
3
+ * Chronicle Credentials
4
+ *
5
+ * Chronicle is IOTA's permanode solution that stores
6
+ * the complete history of the Tangle. Unlike regular nodes
7
+ * that may prune old data, Chronicle maintains all historical
8
+ * transactions and outputs for querying.
9
+ *
10
+ * Use cases:
11
+ * - Historical transaction queries
12
+ * - Output history tracking
13
+ * - Analytics and reporting
14
+ * - Audit trails
15
+ */
16
+ export declare class Chronicle implements ICredentialType {
17
+ name: string;
18
+ displayName: string;
19
+ documentationUrl: string;
20
+ properties: INodeProperties[];
21
+ test: ICredentialTestRequest;
22
+ }
23
+ //# sourceMappingURL=Chronicle.credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chronicle.credentials.d.ts","sourceRoot":"","sources":["../../credentials/Chronicle.credentials.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAU,YAAW,eAAe;IAChD,IAAI,SAAe;IACnB,WAAW,SAA2B;IACtC,gBAAgB,SAAsC;IACtD,UAAU,EAAE,eAAe,EAAE,CAyC3B;IAEF,IAAI,EAAE,sBAAsB,CAS1B;CACF"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Chronicle = void 0;
10
+ /**
11
+ * Chronicle Credentials
12
+ *
13
+ * Chronicle is IOTA's permanode solution that stores
14
+ * the complete history of the Tangle. Unlike regular nodes
15
+ * that may prune old data, Chronicle maintains all historical
16
+ * transactions and outputs for querying.
17
+ *
18
+ * Use cases:
19
+ * - Historical transaction queries
20
+ * - Output history tracking
21
+ * - Analytics and reporting
22
+ * - Audit trails
23
+ */
24
+ class Chronicle {
25
+ constructor() {
26
+ this.name = 'chronicle';
27
+ this.displayName = 'Chronicle (Permanode)';
28
+ this.documentationUrl = 'https://wiki.iota.org/chronicle/';
29
+ this.properties = [
30
+ {
31
+ displayName: 'Chronicle Endpoint',
32
+ name: 'chronicleUrl',
33
+ type: 'string',
34
+ default: 'https://chronicle.testnet.shimmer.network',
35
+ placeholder: 'https://chronicle.testnet.shimmer.network',
36
+ required: true,
37
+ description: 'URL of the Chronicle permanode API',
38
+ },
39
+ {
40
+ displayName: 'API Key',
41
+ name: 'apiKey',
42
+ type: 'string',
43
+ typeOptions: {
44
+ password: true,
45
+ },
46
+ default: '',
47
+ description: 'API key for Chronicle access (if required by the provider)',
48
+ },
49
+ {
50
+ displayName: 'Request Timeout (ms)',
51
+ name: 'timeout',
52
+ type: 'number',
53
+ default: 30000,
54
+ description: 'Request timeout in milliseconds (historical queries can be slow)',
55
+ },
56
+ {
57
+ displayName: 'Max Results Per Query',
58
+ name: 'maxResults',
59
+ type: 'number',
60
+ default: 1000,
61
+ description: 'Maximum number of results to return per query',
62
+ },
63
+ {
64
+ displayName: 'Include Metadata',
65
+ name: 'includeMetadata',
66
+ type: 'boolean',
67
+ default: true,
68
+ description: 'Include additional metadata in query results',
69
+ },
70
+ ];
71
+ this.test = {
72
+ request: {
73
+ baseURL: '={{$credentials.chronicleUrl}}',
74
+ url: '/api/core/v2/info',
75
+ method: 'GET',
76
+ headers: {
77
+ 'Authorization': '={{$credentials.apiKey ? "Bearer " + $credentials.apiKey : ""}}',
78
+ },
79
+ },
80
+ };
81
+ }
82
+ }
83
+ exports.Chronicle = Chronicle;
84
+ //# sourceMappingURL=Chronicle.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chronicle.credentials.js","sourceRoot":"","sources":["../../credentials/Chronicle.credentials.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAQH;;;;;;;;;;;;;GAaG;AACH,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,uBAAuB,CAAC;QACtC,qBAAgB,GAAG,kCAAkC,CAAC;QACtD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,2CAA2C;gBACpD,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,oCAAoC;aACjD;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4DAA4D;aACzE;YACD;gBACC,WAAW,EAAE,sBAAsB;gBACnC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,kEAAkE;aAC/E;YACD;gBACC,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,+CAA+C;aAC5D;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,8CAA8C;aAC3D;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,gCAAgC;gBACzC,GAAG,EAAE,mBAAmB;gBACxB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACR,eAAe,EAAE,iEAAiE;iBAClF;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAzDD,8BAyDC"}
@@ -0,0 +1,22 @@
1
+ import { ICredentialType, INodeProperties, ICredentialTestRequest } from 'n8n-workflow';
2
+ /**
3
+ * IOTA Network Credentials
4
+ *
5
+ * Supports multiple IOTA/Shimmer networks:
6
+ * - IOTA Mainnet: Production network for IOTA token
7
+ * - Shimmer Mainnet: Canary network with EVM support
8
+ * - IOTA Testnet: Testing network for IOTA
9
+ * - Shimmer Testnet: Public testnet with faucet
10
+ * - Private Tangle: Custom network deployments
11
+ *
12
+ * The Tangle is a DAG (Directed Acyclic Graph) structure,
13
+ * not a traditional blockchain. Transactions are feeless.
14
+ */
15
+ export declare class IotaNetwork implements ICredentialType {
16
+ name: string;
17
+ displayName: string;
18
+ documentationUrl: string;
19
+ properties: INodeProperties[];
20
+ test: ICredentialTestRequest;
21
+ }
22
+ //# sourceMappingURL=IotaNetwork.credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IotaNetwork.credentials.d.ts","sourceRoot":"","sources":["../../credentials/IotaNetwork.credentials.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,YAAW,eAAe;IAClD,IAAI,SAAiB;IACrB,WAAW,SAAkB;IAC7B,gBAAgB,SAA4B;IAC5C,UAAU,EAAE,eAAe,EAAE,CAsH3B;IAGF,IAAI,EAAE,sBAAsB,CAM1B;CACF"}