iwa 0.0.0__py3-none-any.whl → 0.0.1a2__py3-none-any.whl

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 (191) hide show
  1. conftest.py +22 -0
  2. iwa/__init__.py +1 -0
  3. iwa/__main__.py +6 -0
  4. iwa/core/__init__.py +1 -0
  5. iwa/core/chain/__init__.py +68 -0
  6. iwa/core/chain/errors.py +47 -0
  7. iwa/core/chain/interface.py +514 -0
  8. iwa/core/chain/manager.py +38 -0
  9. iwa/core/chain/models.py +128 -0
  10. iwa/core/chain/rate_limiter.py +193 -0
  11. iwa/core/cli.py +210 -0
  12. iwa/core/constants.py +28 -0
  13. iwa/core/contracts/__init__.py +1 -0
  14. iwa/core/contracts/contract.py +297 -0
  15. iwa/core/contracts/erc20.py +79 -0
  16. iwa/core/contracts/multisend.py +71 -0
  17. iwa/core/db.py +317 -0
  18. iwa/core/keys.py +361 -0
  19. iwa/core/mnemonic.py +385 -0
  20. iwa/core/models.py +344 -0
  21. iwa/core/monitor.py +209 -0
  22. iwa/core/plugins.py +45 -0
  23. iwa/core/pricing.py +91 -0
  24. iwa/core/services/__init__.py +17 -0
  25. iwa/core/services/account.py +57 -0
  26. iwa/core/services/balance.py +113 -0
  27. iwa/core/services/plugin.py +88 -0
  28. iwa/core/services/safe.py +392 -0
  29. iwa/core/services/transaction.py +172 -0
  30. iwa/core/services/transfer/__init__.py +166 -0
  31. iwa/core/services/transfer/base.py +260 -0
  32. iwa/core/services/transfer/erc20.py +247 -0
  33. iwa/core/services/transfer/multisend.py +386 -0
  34. iwa/core/services/transfer/native.py +262 -0
  35. iwa/core/services/transfer/swap.py +326 -0
  36. iwa/core/settings.py +95 -0
  37. iwa/core/tables.py +60 -0
  38. iwa/core/test.py +27 -0
  39. iwa/core/tests/test_wallet.py +255 -0
  40. iwa/core/types.py +59 -0
  41. iwa/core/ui.py +99 -0
  42. iwa/core/utils.py +59 -0
  43. iwa/core/wallet.py +380 -0
  44. iwa/plugins/__init__.py +1 -0
  45. iwa/plugins/gnosis/__init__.py +5 -0
  46. iwa/plugins/gnosis/cow/__init__.py +6 -0
  47. iwa/plugins/gnosis/cow/quotes.py +148 -0
  48. iwa/plugins/gnosis/cow/swap.py +403 -0
  49. iwa/plugins/gnosis/cow/types.py +20 -0
  50. iwa/plugins/gnosis/cow_utils.py +44 -0
  51. iwa/plugins/gnosis/plugin.py +68 -0
  52. iwa/plugins/gnosis/safe.py +157 -0
  53. iwa/plugins/gnosis/tests/test_cow.py +227 -0
  54. iwa/plugins/gnosis/tests/test_safe.py +100 -0
  55. iwa/plugins/olas/__init__.py +5 -0
  56. iwa/plugins/olas/constants.py +106 -0
  57. iwa/plugins/olas/contracts/activity_checker.py +93 -0
  58. iwa/plugins/olas/contracts/base.py +10 -0
  59. iwa/plugins/olas/contracts/mech.py +49 -0
  60. iwa/plugins/olas/contracts/mech_marketplace.py +43 -0
  61. iwa/plugins/olas/contracts/service.py +215 -0
  62. iwa/plugins/olas/contracts/staking.py +403 -0
  63. iwa/plugins/olas/importer.py +736 -0
  64. iwa/plugins/olas/mech_reference.py +135 -0
  65. iwa/plugins/olas/models.py +110 -0
  66. iwa/plugins/olas/plugin.py +243 -0
  67. iwa/plugins/olas/scripts/test_full_mech_flow.py +259 -0
  68. iwa/plugins/olas/scripts/test_simple_lifecycle.py +74 -0
  69. iwa/plugins/olas/service_manager/__init__.py +60 -0
  70. iwa/plugins/olas/service_manager/base.py +113 -0
  71. iwa/plugins/olas/service_manager/drain.py +336 -0
  72. iwa/plugins/olas/service_manager/lifecycle.py +839 -0
  73. iwa/plugins/olas/service_manager/mech.py +322 -0
  74. iwa/plugins/olas/service_manager/staking.py +530 -0
  75. iwa/plugins/olas/tests/conftest.py +30 -0
  76. iwa/plugins/olas/tests/test_importer.py +128 -0
  77. iwa/plugins/olas/tests/test_importer_error_handling.py +349 -0
  78. iwa/plugins/olas/tests/test_mech_contracts.py +85 -0
  79. iwa/plugins/olas/tests/test_olas_contracts.py +249 -0
  80. iwa/plugins/olas/tests/test_olas_integration.py +561 -0
  81. iwa/plugins/olas/tests/test_olas_models.py +144 -0
  82. iwa/plugins/olas/tests/test_olas_view.py +258 -0
  83. iwa/plugins/olas/tests/test_olas_view_actions.py +137 -0
  84. iwa/plugins/olas/tests/test_olas_view_modals.py +120 -0
  85. iwa/plugins/olas/tests/test_plugin.py +70 -0
  86. iwa/plugins/olas/tests/test_plugin_full.py +212 -0
  87. iwa/plugins/olas/tests/test_service_lifecycle.py +150 -0
  88. iwa/plugins/olas/tests/test_service_manager.py +1065 -0
  89. iwa/plugins/olas/tests/test_service_manager_errors.py +208 -0
  90. iwa/plugins/olas/tests/test_service_manager_flows.py +497 -0
  91. iwa/plugins/olas/tests/test_service_manager_mech.py +135 -0
  92. iwa/plugins/olas/tests/test_service_manager_rewards.py +360 -0
  93. iwa/plugins/olas/tests/test_service_manager_validation.py +145 -0
  94. iwa/plugins/olas/tests/test_service_staking.py +342 -0
  95. iwa/plugins/olas/tests/test_staking_integration.py +269 -0
  96. iwa/plugins/olas/tests/test_staking_validation.py +109 -0
  97. iwa/plugins/olas/tui/__init__.py +1 -0
  98. iwa/plugins/olas/tui/olas_view.py +952 -0
  99. iwa/tools/check_profile.py +67 -0
  100. iwa/tools/release.py +111 -0
  101. iwa/tools/reset_env.py +111 -0
  102. iwa/tools/reset_tenderly.py +362 -0
  103. iwa/tools/restore_backup.py +82 -0
  104. iwa/tui/__init__.py +1 -0
  105. iwa/tui/app.py +174 -0
  106. iwa/tui/modals/__init__.py +5 -0
  107. iwa/tui/modals/base.py +406 -0
  108. iwa/tui/rpc.py +63 -0
  109. iwa/tui/screens/__init__.py +1 -0
  110. iwa/tui/screens/wallets.py +749 -0
  111. iwa/tui/tests/test_app.py +125 -0
  112. iwa/tui/tests/test_rpc.py +139 -0
  113. iwa/tui/tests/test_wallets_refactor.py +30 -0
  114. iwa/tui/tests/test_widgets.py +123 -0
  115. iwa/tui/widgets/__init__.py +5 -0
  116. iwa/tui/widgets/base.py +100 -0
  117. iwa/tui/workers.py +42 -0
  118. iwa/web/dependencies.py +76 -0
  119. iwa/web/models.py +76 -0
  120. iwa/web/routers/accounts.py +115 -0
  121. iwa/web/routers/olas/__init__.py +24 -0
  122. iwa/web/routers/olas/admin.py +169 -0
  123. iwa/web/routers/olas/funding.py +135 -0
  124. iwa/web/routers/olas/general.py +29 -0
  125. iwa/web/routers/olas/services.py +378 -0
  126. iwa/web/routers/olas/staking.py +341 -0
  127. iwa/web/routers/state.py +65 -0
  128. iwa/web/routers/swap.py +617 -0
  129. iwa/web/routers/transactions.py +153 -0
  130. iwa/web/server.py +155 -0
  131. iwa/web/tests/test_web_endpoints.py +713 -0
  132. iwa/web/tests/test_web_olas.py +430 -0
  133. iwa/web/tests/test_web_swap.py +103 -0
  134. iwa-0.0.1a2.dist-info/METADATA +234 -0
  135. iwa-0.0.1a2.dist-info/RECORD +186 -0
  136. iwa-0.0.1a2.dist-info/entry_points.txt +2 -0
  137. iwa-0.0.1a2.dist-info/licenses/LICENSE +21 -0
  138. iwa-0.0.1a2.dist-info/top_level.txt +4 -0
  139. tests/legacy_cow.py +248 -0
  140. tests/legacy_safe.py +93 -0
  141. tests/legacy_transaction_retry_logic.py +51 -0
  142. tests/legacy_tui.py +440 -0
  143. tests/legacy_wallets_screen.py +554 -0
  144. tests/legacy_web.py +243 -0
  145. tests/test_account_service.py +120 -0
  146. tests/test_balance_service.py +186 -0
  147. tests/test_chain.py +490 -0
  148. tests/test_chain_interface.py +210 -0
  149. tests/test_cli.py +139 -0
  150. tests/test_contract.py +195 -0
  151. tests/test_db.py +180 -0
  152. tests/test_drain_coverage.py +174 -0
  153. tests/test_erc20.py +95 -0
  154. tests/test_gnosis_plugin.py +111 -0
  155. tests/test_keys.py +449 -0
  156. tests/test_legacy_wallet.py +1285 -0
  157. tests/test_main.py +13 -0
  158. tests/test_mnemonic.py +217 -0
  159. tests/test_modals.py +109 -0
  160. tests/test_models.py +213 -0
  161. tests/test_monitor.py +202 -0
  162. tests/test_multisend.py +84 -0
  163. tests/test_plugin_service.py +119 -0
  164. tests/test_pricing.py +143 -0
  165. tests/test_rate_limiter.py +199 -0
  166. tests/test_reset_tenderly.py +202 -0
  167. tests/test_rpc_view.py +73 -0
  168. tests/test_safe_coverage.py +139 -0
  169. tests/test_safe_service.py +168 -0
  170. tests/test_service_manager_integration.py +61 -0
  171. tests/test_service_manager_structure.py +31 -0
  172. tests/test_service_transaction.py +176 -0
  173. tests/test_staking_router.py +71 -0
  174. tests/test_staking_simple.py +31 -0
  175. tests/test_tables.py +76 -0
  176. tests/test_transaction_service.py +161 -0
  177. tests/test_transfer_multisend.py +179 -0
  178. tests/test_transfer_native.py +220 -0
  179. tests/test_transfer_security.py +93 -0
  180. tests/test_transfer_structure.py +37 -0
  181. tests/test_transfer_swap_unit.py +155 -0
  182. tests/test_ui_coverage.py +66 -0
  183. tests/test_utils.py +53 -0
  184. tests/test_workers.py +91 -0
  185. tools/verify_drain.py +183 -0
  186. __init__.py +0 -2
  187. hello.py +0 -6
  188. iwa-0.0.0.dist-info/METADATA +0 -10
  189. iwa-0.0.0.dist-info/RECORD +0 -6
  190. iwa-0.0.0.dist-info/top_level.txt +0 -2
  191. {iwa-0.0.0.dist-info → iwa-0.0.1a2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,234 @@
1
+ Metadata-Version: 2.4
2
+ Name: iwa
3
+ Version: 0.0.1a2
4
+ Summary: Add your description here
5
+ Requires-Python: <4.0,>=3.12
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: bip-utils>=2.9.3
9
+ Requires-Dist: cryptography>=46.0.2
10
+ Requires-Dist: eth-account>=0.13.7
11
+ Requires-Dist: loguru>=0.7.3
12
+ Requires-Dist: pydantic>=2.12.0
13
+ Requires-Dist: pydantic-settings>=2.11.0
14
+ Requires-Dist: rich>=14.2.0
15
+ Requires-Dist: tomli>=2.3.0
16
+ Requires-Dist: tomli-w>=1.2.0
17
+ Requires-Dist: typer>=0.19.2
18
+ Requires-Dist: web3>=7.13.0
19
+ Requires-Dist: pyyaml<7.0.0,>=6.0.3
20
+ Requires-Dist: safe-eth-py>=7.14.0
21
+ Requires-Dist: twine>=6.2.0
22
+ Requires-Dist: cowdao-cowpy>=1.0.1
23
+ Requires-Dist: pytest>=9.0.1
24
+ Requires-Dist: textual>=0.47.1
25
+ Requires-Dist: pyperclip>=1.8.2
26
+ Requires-Dist: peewee>=3.17.0
27
+ Requires-Dist: fastapi>=0.115.0
28
+ Requires-Dist: uvicorn>=0.32.0
29
+ Requires-Dist: jinja2>=3.1.4
30
+ Requires-Dist: cbor2==5.8.0
31
+ Requires-Dist: slowapi>=0.1.9
32
+ Requires-Dist: nest-asyncio>=1.6.0
33
+ Requires-Dist: aiohttp>=3.13.3
34
+ Requires-Dist: pynacl>=1.6.2
35
+ Requires-Dist: urllib3>=2.6.3
36
+ Dynamic: license-file
37
+
38
+ # Iwa
39
+
40
+ [![PyPI version](https://badge.fury.io/py/iwa.svg)](https://badge.fury.io/py/iwa)
41
+ [![Docker Pulls](https://img.shields.io/docker/pulls/dvilela/iwa.svg)](https://hub.docker.com/r/dvilela/iwa)
42
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
43
+ [![Tests](https://img.shields.io/badge/tests-672%20passed-brightgreen.svg)]()
44
+ [![Coverage](https://img.shields.io/badge/coverage-86%25-brightgreen.svg)]()
45
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
46
+
47
+ *Iwa (岩), meaning "rock" in Japanese, symbolizes the unshakeable stability and immutable foundation required for secure financial infrastructure.*
48
+
49
+ </br>
50
+ <p align="center">
51
+ <img width="40%" src="https://raw.githubusercontent.com/dvilelaf/iwa/master/images/iwa.png">
52
+ </p>
53
+ </br>
54
+
55
+ Iwa is a Python framework designed for managing crypto wallets and interacting with smart contracts and crypto protocols in a secure, modular, and extensible way. It's ideal for building autonomous agents and applications that require blockchain interactions.
56
+
57
+ ## Features
58
+
59
+ - **Secure Key Storage**: Private keys are encrypted with AES-256-GCM and stored safely. They are never exposed to the application layer; signing happens internally via the `KeyStorage` class.
60
+
61
+ - **Modularity (Plugins)**: Protocols and features are implemented as plugins, loaded dynamically. Currently supports Gnosis (Safe, CowSwap) and Olas (Registry, Services, Staking).
62
+
63
+ - **Multi-Chain Support**: Native support for Gnosis Chain, Ethereum, and Base, with easy extensibility for others.
64
+
65
+ - **Robust Transaction Management**:
66
+ - **RPC Rotation**: Automatically switches RPC providers if one fails or is rate-limited.
67
+ - **Rate Limiting**: Token bucket algorithm with automatic backoff.
68
+ - **Retry Logic**: Automatic retries with exponential backoff for transient failures.
69
+
70
+ - **CLI & TUI Integration**: Interact with your wallet via a unified CLI or a beautiful Terminal User Interface built with Textual.
71
+
72
+ - **Web API**: RESTful API built with FastAPI for web-based integrations.
73
+
74
+ - **Modern Tooling**: Managed with `uv`, `Justfile` for automation, and ready for Docker deployment.
75
+
76
+ ## Architecture
77
+
78
+ ```
79
+ iwa/
80
+ ├── core/ # Core wallet functionality
81
+ │ ├── keys.py # KeyStorage - Encrypted key management
82
+ │ ├── wallet.py # Wallet - High-level interface
83
+ │ ├── chain.py # ChainInterface - Blockchain interaction with rate limiting
84
+ │ ├── services/ # Service layer (accounts, balances, transactions)
85
+ │ └── contracts/ # Contract abstractions (ERC20, Safe)
86
+ ├── plugins/ # Protocol integrations
87
+ │ ├── gnosis/ # Safe multisig and CowSwap DEX
88
+ │ └── olas/ # Olas Registry, Services, Staking
89
+ ├── tui/ # Terminal User Interface (Textual)
90
+ └── web/ # Web API (FastAPI)
91
+ ```
92
+
93
+ ### Key Components
94
+
95
+ | Component | Description |
96
+ |-----------|-------------|
97
+ | `KeyStorage` | Encrypts/decrypts private keys, provides internal signing |
98
+ | `Wallet` | Main high-level interface for user interactions |
99
+ | `ChainInterface` | Manages Web3 connections with rate limiting and RPC rotation |
100
+ | `TransactionService` | Handles transaction signing and sending with retry logic |
101
+ | `PluginService` | Dynamically loads and manages protocol plugins |
102
+
103
+ ## Setup & Usage
104
+
105
+ ### Prerequisites
106
+
107
+ - Python 3.12+
108
+ - [uv](https://github.com/astral-sh/uv) package manager
109
+
110
+ ### Installation
111
+
112
+ ```bash
113
+ # Install from PyPI
114
+ pip install iwa
115
+
116
+ # Or using uv (recommended for tools)
117
+ uv tool install iwa
118
+
119
+ # Or from source
120
+ git clone https://github.com/dvilelaf/iwa.git
121
+ cd iwa
122
+ just install
123
+ ```
124
+
125
+ ### Configuration
126
+
127
+ Create a `secrets.env` file with your configuration:
128
+
129
+ ```bash
130
+ WALLET_PASSWORD=your_secure_password
131
+ GNOSIS_RPC=https://rpc.gnosis.io,https://gnosis.drpc.org
132
+ ETHEREUM_RPC=https://mainnet.infura.io/v3/YOUR_KEY
133
+ BASE_RPC=https://mainnet.base.org
134
+
135
+ # Optional
136
+ GNOSISSCAN_API_KEY=your_api_key
137
+ COINGECKO_API_KEY=your_api_key
138
+ ```
139
+
140
+ ### Running
141
+
142
+ ```bash
143
+ # Launch TUI
144
+ just tui
145
+
146
+ # Launch Web UI
147
+ just web
148
+
149
+ # Use CLI
150
+ iwa wallet list --chain gnosis
151
+ iwa wallet balance <address> --chain gnosis
152
+ ```
153
+
154
+ ### Running Tests
155
+
156
+ ```bash
157
+ just test
158
+ ```
159
+
160
+ ### Security Checks
161
+
162
+ ```bash
163
+ just security # Runs gitleaks, bandit, and pip-audit
164
+ ```
165
+
166
+ ### Docker
167
+
168
+ ```bash
169
+ # Pull from Docker Hub
170
+ docker pull dvilelaf/iwa:latest
171
+
172
+ # Build locally
173
+ just docker-build
174
+ just docker-run
175
+ ```
176
+
177
+ ## Plugins
178
+
179
+ Plugins are located in `src/iwa/plugins`. Currently supported:
180
+
181
+ ### Gnosis Plugin
182
+ - **Safe**: Create and manage Safe multisig wallets
183
+ - **CowSwap**: Token swaps via CoW Protocol with MEV protection, Max balance support, and auto-refreshing UI
184
+
185
+ ### Olas Plugin
186
+ - **Registry**: Interact with Olas service registry
187
+ - **Services**: Create, deploy, and manage Olas services
188
+ - **Staking**: Stake/unstake services and claim rewards
189
+
190
+ ## Transaction Flow
191
+
192
+ 1. **Preparation**: A high-level method prepares a raw transaction dictionary
193
+ 2. **Delegation**: The transaction is passed to `TransactionService`
194
+ 3. **Signing**: `KeyStorage` decrypts the key in memory, signs, and wipes the key
195
+ 4. **Sending**: The signed transaction is sent via `ChainInterface`
196
+ 5. **Recovery**: Automatic RPC rotation and gas bumping on failures
197
+ 6. **Receipt**: Transaction receipt is returned upon success
198
+
199
+ ## Documentation
200
+
201
+ Full documentation is available in the `docs/` directory:
202
+
203
+ ```bash
204
+ # Serve docs locally
205
+ just docs-serve
206
+
207
+ # Build static docs
208
+ just docs-build
209
+ ```
210
+
211
+ ## Development
212
+
213
+ ```bash
214
+ # Format code
215
+ just format
216
+
217
+ # Lint code
218
+ just check
219
+
220
+ # Type check
221
+ just types
222
+ ```
223
+
224
+ ## Contributing
225
+
226
+ 1. Fork the repository
227
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
228
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
229
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
230
+ 5. Open a Pull Request
231
+
232
+ ## License
233
+
234
+ This project is licensed under the MIT License - see the LICENSE file for details.
@@ -0,0 +1,186 @@
1
+ conftest.py,sha256=rsm8Mz8_KAmrbtXYDF8IgxtKpQiHbWNTovK-bbNhQ0Q,491
2
+ iwa/__init__.py,sha256=vu12UytYNREtMRvIWp6AfV1GgUe53XWwCMhYyqKAPgo,19
3
+ iwa/__main__.py,sha256=eJU5Uxeu9Y7shWg5dt5Mcq0pMC4wFVNWjeYGKSf4Apw,88
4
+ iwa/core/__init__.py,sha256=GJv4LJOXeZ3hgGvbt5I6omkoFkP2A9qhHjpDlOep9ik,24
5
+ iwa/core/cli.py,sha256=RnB7njOssfLr7rNgM9BnXtCbxvCAZpqsFO0nMs8quyQ,6505
6
+ iwa/core/constants.py,sha256=PwLIGbbbbNXMGxi1kxQ3BdPh16ZFVkYdkaOwPRc83-8,976
7
+ iwa/core/db.py,sha256=WI-mP0tQAmwFPeEi9w7RCa_Mcf_zBfd_7JcbHJwU1aU,10377
8
+ iwa/core/keys.py,sha256=AJ_KPHej4xth_1GOEs5KQ8f9hwnUw55bh4xUQEfHbA0,13478
9
+ iwa/core/mnemonic.py,sha256=57fifqhcMFlW_OlMymfHo_GMIBrpL8EiY3XDmGjRh-Q,13124
10
+ iwa/core/models.py,sha256=fgPG1K8AMRVRMzoPO1M1suI-ULPFxHLHqI-2Fmt5-dA,12172
11
+ iwa/core/monitor.py,sha256=OmhKVMkfhvtxig3wDUL6iGwBIClTx0YUqMncCao4SqI,7953
12
+ iwa/core/plugins.py,sha256=FLvOG4S397fKi0aTH1fWBEtexn4yvGv_QzGWqFrhSKE,1102
13
+ iwa/core/pricing.py,sha256=ntInFt-am8FL3K92YGAMOkk4iqCXSBkGteWRJuVIGpU,3217
14
+ iwa/core/settings.py,sha256=RCB8iFNN8BVa3BXNWQWDy3VmX754snq_CQTCVScM0Sw,3412
15
+ iwa/core/tables.py,sha256=y7Cg67PAGHYVMVyAjbo_CQ9t2iz7UXE-OTuUHRyFRTo,2021
16
+ iwa/core/test.py,sha256=gey0dql5eajo1itOhgkSrgfyGWue2eSfpr0xzX3vc38,643
17
+ iwa/core/types.py,sha256=EfDfIwLajTNK-BP9K17QLOIsGCs8legplKI_bUD_NjM,1992
18
+ iwa/core/ui.py,sha256=DglmrI7XhUmOpLn9Nog9Cej4r-VT0JGFkuSNBx-XorQ,3131
19
+ iwa/core/utils.py,sha256=a-AKdeEYunwSXil1miDqKmIEyidwKpYK783A8-nVWZY,2020
20
+ iwa/core/wallet.py,sha256=bethpfJzTrn1F3LuAqBwdJkqZWGf0BmdH-qnWE09j6I,12850
21
+ iwa/core/chain/__init__.py,sha256=XJMmn0ed-_aVkY2iEMKpuTxPgIKBd41dexSVmEZTa-o,1604
22
+ iwa/core/chain/errors.py,sha256=9SEbhxZ-qASPkzt-DoI51qq0GRJVqRgqgL720gO7a64,1275
23
+ iwa/core/chain/interface.py,sha256=Y9ghPmJbKEsigfE1mAvicq0yOV8bNdtKwtZpQxNt2DY,20518
24
+ iwa/core/chain/manager.py,sha256=cFEzh6pK5OyVhjhpeMAqhc9RnRDQR1DjIGiGKp-FXBI,1159
25
+ iwa/core/chain/models.py,sha256=10odmRJk7x7cd8ti-uSYoBw6OL2jK5WADZY3_uXHQn4,4043
26
+ iwa/core/chain/rate_limiter.py,sha256=mxmZ5SczRXDe2FGmD0rgvQBl_oENTpK7avM5AUeE2_8,6224
27
+ iwa/core/contracts/__init__.py,sha256=P5GFY_pnuI02teqVY2U0t98bn1_SSPAbcAzRMpCdTi4,34
28
+ iwa/core/contracts/contract.py,sha256=Wd4MnNfUzZERF2ZLY-9WW56EeUixI4-9EElkqvrQyuk,10672
29
+ iwa/core/contracts/erc20.py,sha256=VqriOdUXej0ilTgpukpm1FUF_9sSrVMAPuEpIvyZ2SQ,2646
30
+ iwa/core/contracts/multisend.py,sha256=tSdBCWe7LSdBoKZ7z2QebmRFK4M2ln7H3kmJBeEb4Ho,2431
31
+ iwa/core/services/__init__.py,sha256=ab5pYzmu3LrZLTO5N-plx6Rp4R0hBEnbbzsgz84zWGM,498
32
+ iwa/core/services/account.py,sha256=01MoEvl6FJlMnMB4fGwsPtnGa4kgA-d5hJeKu_ACg7Y,1982
33
+ iwa/core/services/balance.py,sha256=mPE12CuOFfCaJXaQXWOcQM1O03ZF3ghpy_-oOjNk_GE,4104
34
+ iwa/core/services/plugin.py,sha256=GNNlbtELyHl7MNVChrypF76GYphxXduxDog4kx1MLi8,3277
35
+ iwa/core/services/safe.py,sha256=prso55kJZ7tQgt_BBquqR_UrPyvvmCYuH2J1aRtdESE,14591
36
+ iwa/core/services/transaction.py,sha256=RsZmkTLAZbmH9oimuJ9qXes23e5Z9mf1WnMxyNiYMCM,6928
37
+ iwa/core/services/transfer/__init__.py,sha256=ZJfshFxJRsp8rkOqfVvd1cqEzIJ9tqBJh8pc0l90GLk,5576
38
+ iwa/core/services/transfer/base.py,sha256=sohz-Ss2i-pGYGl4x9bD93cnYKcSvsXaXyvyRawvgQs,9043
39
+ iwa/core/services/transfer/erc20.py,sha256=0GvlfETgdJg15azs1apH1gI6Vm3gAv22o1saNbIfiAY,8685
40
+ iwa/core/services/transfer/multisend.py,sha256=MuOTjzUQoYg1eSixXKhJGBmB1c0ymLelvk4puHm_VGE,15194
41
+ iwa/core/services/transfer/native.py,sha256=Z0v41OMbbcTjwdYLDwMO-8G81UMPYDdQ3y8BdbsJimM,9350
42
+ iwa/core/services/transfer/swap.py,sha256=exOJdzwkZaGbrFWfmQT_2JMcZUxnkiehXca8TH-vlF0,12269
43
+ iwa/core/tests/test_wallet.py,sha256=N8_gO7KkV5nqk_KcHqW_xOwNNKpDuXHeFgnala3bB84,9361
44
+ iwa/plugins/__init__.py,sha256=zy-DjOZn8GSgIETN2X_GAb9O6yk71t6ZRzeUgoZ52KA,23
45
+ iwa/plugins/gnosis/__init__.py,sha256=dpx0mE84eV-g5iZaH5nKivZJnoKWyRFX5rhdjowBwuU,114
46
+ iwa/plugins/gnosis/cow_utils.py,sha256=iSvbfgTr2bCqRsUznKCWqmoTnyuX-WZX4oh0E-l3XBU,2263
47
+ iwa/plugins/gnosis/plugin.py,sha256=AgkgOGYfnrcjWrPUiAvySMj6ITnss0SFXiEi6Z6fnMs,1885
48
+ iwa/plugins/gnosis/safe.py,sha256=PCTWkavgQZbVR-j9lfzpfgSwMlzFliz42_L7M8RlO7M,5508
49
+ iwa/plugins/gnosis/cow/__init__.py,sha256=lZN5QpIYWL67rE8r7z7zS9dlr8OqFrYeD9T4-RwUghU,224
50
+ iwa/plugins/gnosis/cow/quotes.py,sha256=u2xFKgL7QTKqCkSPMv1RHaXvZ6WzID4haaZDMVS42Bs,5177
51
+ iwa/plugins/gnosis/cow/swap.py,sha256=XZdvJbTbh54hxer7cKkum7lNQ-03gddMK95K3MenaFE,15209
52
+ iwa/plugins/gnosis/cow/types.py,sha256=-9VRiFhAkmN1iIJ95Pg7zLFSeXtkkW00sl13usxi3o8,470
53
+ iwa/plugins/gnosis/tests/test_cow.py,sha256=iVy5ockMIcPZWsX4WGXU91DhBsYEZ5NOxtFzAQ2sK3o,8440
54
+ iwa/plugins/gnosis/tests/test_safe.py,sha256=nJLwGBrkBZ5ENSLbZWIKLi7T2X1JOaJv6H3fXNqGRao,3085
55
+ iwa/plugins/olas/__init__.py,sha256=_NhBczzM61fhGYwGhnWfEeL8Jywyy_730GASe2BxzeQ,106
56
+ iwa/plugins/olas/constants.py,sha256=XhrzE1werp3puO1fpByDlzo0KQ_G78ucj3RrppiqknI,5833
57
+ iwa/plugins/olas/importer.py,sha256=f8KlZ9dGcNbpg8uoTYbO9sDvbluZoslhpWFLqPjPnLA,26717
58
+ iwa/plugins/olas/mech_reference.py,sha256=CaSCpQnQL4F7wOG6Ox6Zdoy-uNEQ78YBwVLILQZKL8Q,5782
59
+ iwa/plugins/olas/models.py,sha256=xC5hYakX53pBT6zZteM9cyiC7t6XRLLpobjQmDYueOo,3520
60
+ iwa/plugins/olas/plugin.py,sha256=0GMiFu4HdtA7nvgMhVSprqf61l7WA-wdylMLbqPuENs,9234
61
+ iwa/plugins/olas/contracts/activity_checker.py,sha256=UDbCgFOyuEhHf1qoUwCUdLc8oK8ksuAYE-ZgKrMBnwg,3415
62
+ iwa/plugins/olas/contracts/base.py,sha256=y73aQbDq6l4zUpz_eQAg4MsLkTAEqjjupXlcvxjfgCI,240
63
+ iwa/plugins/olas/contracts/mech.py,sha256=BxEBzWcCV_Qh5Gwb84QUJ6CcCN8-vmdDlxRVLETSnzY,1455
64
+ iwa/plugins/olas/contracts/mech_marketplace.py,sha256=hMADl5MQGvT2wLRKu4vHGe4RrAZVq8Y2M_EvXWWz528,1554
65
+ iwa/plugins/olas/contracts/service.py,sha256=OHXi4TBaVlRRZJA15XKnTMN8huGDWRZWU1TOZf589_E,6731
66
+ iwa/plugins/olas/contracts/staking.py,sha256=pxT62Cal1kkDfZdhbPk2YxyM2Xbf8-oFa40lL0Y8HBk,14520
67
+ iwa/plugins/olas/scripts/test_full_mech_flow.py,sha256=id9IxC06FOKwexgwsG5nbsTB2rQLlIq5a5soMvK0IgY,9021
68
+ iwa/plugins/olas/scripts/test_simple_lifecycle.py,sha256=8T50tOZx3afeECSfCNAb0rAHNtYOsBaeXlMwKXElCk8,2099
69
+ iwa/plugins/olas/service_manager/__init__.py,sha256=GXiThMEY3nPgHUl1i-DLrF4h96z9jPxxI8Jepo2E1PM,1926
70
+ iwa/plugins/olas/service_manager/base.py,sha256=V4o71ZYUSc_GzM-RWocaAGsrqI-fa5V7CcyloVpcjwE,4666
71
+ iwa/plugins/olas/service_manager/drain.py,sha256=IS7YYKuQdkULcNdxfHVzjcq95pXKdpajolzLL78u4jc,12430
72
+ iwa/plugins/olas/service_manager/lifecycle.py,sha256=-WG1ZQmC5F3vrqkMPX9iS_gcCmO_bSqAUHA3C6P8bpo,34161
73
+ iwa/plugins/olas/service_manager/mech.py,sha256=jIdDzJlz-iNNrC-SErYmcbmKiEk6-zaYIGvzeQx12C4,12217
74
+ iwa/plugins/olas/service_manager/staking.py,sha256=nZHB_dQ-jdMs2RtSrsmeIeaww9dQeVDqwlItiP7cp2Y,20772
75
+ iwa/plugins/olas/tests/conftest.py,sha256=4vM7EI00SrTGyeP0hNzsGSQHEj2-iznVgzlNh2_OGfo,739
76
+ iwa/plugins/olas/tests/test_importer.py,sha256=i9LKov7kNRECB3hmRnhKBwcfx3uxtjWe4BB77bOOpeo,4282
77
+ iwa/plugins/olas/tests/test_importer_error_handling.py,sha256=X37TrvJ6-3-NuJ2megm0Cnx3KJdA1wke563pRf_EPJk,12084
78
+ iwa/plugins/olas/tests/test_mech_contracts.py,sha256=wvxuigPafF-ySIHVBdWVei3AO418iPh7cSVdAlUGm_s,3566
79
+ iwa/plugins/olas/tests/test_olas_contracts.py,sha256=V409KPeGQl6wYV8unyiZ381TGahFcPNZxj1zJ40VbAM,10627
80
+ iwa/plugins/olas/tests/test_olas_integration.py,sha256=uIA9NB1iaOSTOaPgY5gRvrFxFLeq6Z93239yi2qzj1g,20488
81
+ iwa/plugins/olas/tests/test_olas_models.py,sha256=5scX-wvRLGH3G44S2okq_tyQ9Rk7Pd0Ak1zNCZ2HtI4,4957
82
+ iwa/plugins/olas/tests/test_olas_view.py,sha256=kh3crsriyoRiZC6l8vzGllocvQnYmqziv-csbmXih0E,10489
83
+ iwa/plugins/olas/tests/test_olas_view_actions.py,sha256=jAxr9bjFNAaxGf1btIrxdMaHgJ0PWX9aDwVU-oPGMpk,5109
84
+ iwa/plugins/olas/tests/test_olas_view_modals.py,sha256=8j0PNFjKqFC5V1kBdVFWNLMvqGt49H6fLSYGxn02c8o,5562
85
+ iwa/plugins/olas/tests/test_plugin.py,sha256=UIEgW_VMivqJllOAd3mmTltM0DF_ZBK79ecpIiBricI,2429
86
+ iwa/plugins/olas/tests/test_plugin_full.py,sha256=iPEde7dmA6XpjkLVwFHbAQb6chgmx8rDqxIxFNH8drk,8230
87
+ iwa/plugins/olas/tests/test_service_lifecycle.py,sha256=dhIDzgcXh1VV-S6VGXtNqtdxxIdXY1F1hRcPL6RBxno,5649
88
+ iwa/plugins/olas/tests/test_service_manager.py,sha256=dsnj1DfSYptIZkiPaLHGM9utbX9XOAy0axuzu-3kofg,41818
89
+ iwa/plugins/olas/tests/test_service_manager_errors.py,sha256=BtN-89gwaFpy3RJIDt98U0TT0lksg9NHvoSpSBHSXag,8229
90
+ iwa/plugins/olas/tests/test_service_manager_flows.py,sha256=HsAD1axnfow1iTiRBqR7DT6sa3U-q8ApOlYN4Cd87Ao,20142
91
+ iwa/plugins/olas/tests/test_service_manager_mech.py,sha256=qG6qu5IPRNypXUsblU2OEkuiuwDJ0TH8RXZbibmTFcQ,4937
92
+ iwa/plugins/olas/tests/test_service_manager_rewards.py,sha256=hIVckGl5rEr-KHGNUxxVopal0Tpw4EZharBt0MbaCVA,11798
93
+ iwa/plugins/olas/tests/test_service_manager_validation.py,sha256=dagFvq8eQk3HKYpajp_2uJ4AUi_74kIAMfTiN4qAZ58,5263
94
+ iwa/plugins/olas/tests/test_service_staking.py,sha256=XkC8H_qVumOQ1i4_vidEdXqkK5stInd2tgT50l0SRMk,12201
95
+ iwa/plugins/olas/tests/test_staking_integration.py,sha256=QNIIpnD9zSY74jsBQig8Ds_qFHRGufVVsY0WymOLYjs,9424
96
+ iwa/plugins/olas/tests/test_staking_validation.py,sha256=J7DgDdIiVTkKv_7obtSHQ2lgfUGPmUwuPjTUkiT4cbs,4198
97
+ iwa/plugins/olas/tui/__init__.py,sha256=5ZRsbC7J3z1xfkZRiwr4bLEklf78rNVjdswe2p7SlS8,28
98
+ iwa/plugins/olas/tui/olas_view.py,sha256=qcPxhurDPJjHWln6R64ZVAJ2h82IXzw48unhRvQVZqQ,36448
99
+ iwa/tools/check_profile.py,sha256=vRhgpkk1jVbKFOoKVI6Qz9BY8ihgC7KJ9p6hRGxjvn4,2143
100
+ iwa/tools/release.py,sha256=VzCLW0vesXn6tXjU-cNEcpCRt14bg8xZw4mbXW20nwk,3956
101
+ iwa/tools/reset_env.py,sha256=6d3fFZZuwU3k58tiMPohCDiGF_fX8Tfe--HvB0tgsHU,3139
102
+ iwa/tools/reset_tenderly.py,sha256=uQmwprQYiC8R2lfFuMvgwwCSqChAdBFqaebVMH7zYwA,11218
103
+ iwa/tools/restore_backup.py,sha256=_LJbmKv9SlekLUQFdjI3aHCvAc6uePobJe3bQEFyatk,2455
104
+ iwa/tui/__init__.py,sha256=XYIZNQNy-fZC1NHHM0sd9qUO0vE1slml-cm0CpQ4NLY,27
105
+ iwa/tui/app.py,sha256=XDQ4nAPGBwhrEmdL_e3V8oYSOho8pY7jsd3C_wk92UU,4163
106
+ iwa/tui/rpc.py,sha256=4q2zcBu7XXDU9c66UYtfbXiNdQyS_uLa9xOs3UmPOO0,2131
107
+ iwa/tui/workers.py,sha256=lvzbIS375_H1rj7-9d-w0PKnkDJ4lW_13aWzZRaX9fY,1192
108
+ iwa/tui/modals/__init__.py,sha256=OyrjWjaPqQAllZcUJ-Ac_e1PtTouJy8m1eGo132p-EA,130
109
+ iwa/tui/modals/base.py,sha256=q9dEV6We_SPxbMRh711amFDwAOBywD00Qg0jcqvh5LE,12060
110
+ iwa/tui/screens/__init__.py,sha256=j0brLsuVd9M8hM5LHH05E7manY3ZVj24yf7nFyGryp4,31
111
+ iwa/tui/screens/wallets.py,sha256=F_1feKuml3rUUHSfdT2XmgBIViGHNrdQeUcgpFUb0Ys,30821
112
+ iwa/tui/tests/test_app.py,sha256=F0tJthsyWzwNbHcGtiyDQtKDPn3m9N1qt2vMGiXrQTQ,3868
113
+ iwa/tui/tests/test_rpc.py,sha256=chH9b6GunfymaYdqz3GVQ_LQui4zihyBkrCG6xOUY1Q,4326
114
+ iwa/tui/tests/test_wallets_refactor.py,sha256=71G3HLbhTtgDy3ffVbYv0MFYRgdYd-NWGBdvdzW4M9c,998
115
+ iwa/tui/tests/test_widgets.py,sha256=C9UgIGeWRaQ459JygFEQx-7hOi9mWrSUDDIMZH1ge50,3994
116
+ iwa/tui/widgets/__init__.py,sha256=UzD6nJbwv9hOtkWl9I7faXm1a-rcu4xFRxrf4KBwwY4,161
117
+ iwa/tui/widgets/base.py,sha256=G844GU61qSS6AgY5NxmOVHTghbgHlyTfo8hhE2VUrqQ,3379
118
+ iwa/web/dependencies.py,sha256=6UHoJnzCGs81UAoxGEIHV05YrX5WVAm7Nfn9AN4a9Qg,2136
119
+ iwa/web/models.py,sha256=MSD9WPy_Nz_amWgoo2KSDTn4ZLv_AV0o0amuNtSf-68,3035
120
+ iwa/web/server.py,sha256=_7kDO-1J9znIGcOzdUuCBEePoAfjdubAmp6mxX7k2g8,5100
121
+ iwa/web/routers/accounts.py,sha256=j6xFkKGeLkjpUG48vW8ZFsWzLxl-Vi5et7rcTsOJkiI,3942
122
+ iwa/web/routers/state.py,sha256=DBUYqwiwKKPQazb93L793e3eO3LP_XGNTfEnb3hDj2I,2141
123
+ iwa/web/routers/swap.py,sha256=mU9StUZpJPvD8De412nmwlCYHRnGR4ISVl1YKF3gIb8,22656
124
+ iwa/web/routers/transactions.py,sha256=ZDKaqCTt1ZylzxyfFQHxFPwzD-j9H0jUByYFSWvggBA,5654
125
+ iwa/web/routers/olas/__init__.py,sha256=Jo6Dm1e8fHafCD800fbxsxeFz3tvuEEKXEf5-9tj5Qg,947
126
+ iwa/web/routers/olas/admin.py,sha256=ZFUTsA7k2xI16kSQ6OybN3jtJQQxh71Y5-Dc2s31rRI,5812
127
+ iwa/web/routers/olas/funding.py,sha256=Jko_uZynE9cahf7ObjHfR54_9jNeU2m2hOJ8PUxegvI,4859
128
+ iwa/web/routers/olas/general.py,sha256=gsL-bkOWTHLxw65Bt3T61123QUZpjxwbNkrx5Qo7s5E,830
129
+ iwa/web/routers/olas/services.py,sha256=5W4Cvj5HQjxmEokPfVpaV1v_YKwOcm6SQfyXsgwpBZo,14766
130
+ iwa/web/routers/olas/staking.py,sha256=9FH-yNUuG2KJxaI6HYn3d6fY5QvXd8UPCx01mDFYSgQ,12090
131
+ iwa/web/tests/test_web_endpoints.py,sha256=BW-SYyOQQZhrLwob5Fa9VPs0NRQcOY7FzbQd7wr5AEQ,23931
132
+ iwa/web/tests/test_web_olas.py,sha256=oN__4nUT_H_j-_ALEqSp-si5xMbY0Bcxhvhuhxsg4Q8,16292
133
+ iwa/web/tests/test_web_swap.py,sha256=7A4gBJFL01kIXPtW1E1J17SCsVc_0DmUn-R8kKrnnVA,2974
134
+ iwa-0.0.1a2.dist-info/licenses/LICENSE,sha256=eIubm_IlBHPYRQlLNZKbBNKhJUUP3JH0A2miZUhAVfI,1078
135
+ tests/legacy_cow.py,sha256=oOkZvIxL70ReEoD9oHQbOD5GpjIr6AGNHcOCgfPlerU,8389
136
+ tests/legacy_safe.py,sha256=AssM2g13E74dNGODu_H0Q0y412lgqsrYnEzI97nm_Ts,2972
137
+ tests/legacy_transaction_retry_logic.py,sha256=D9RqZ7DBu61Xr2djBAodU2p9UE939LL-DnQXswX5iQk,1497
138
+ tests/legacy_tui.py,sha256=qu5-_C0H9dumElLFEWB71ACOgcA6bxbipgmWCBB12DM,15676
139
+ tests/legacy_wallets_screen.py,sha256=9hZnX-VhKgwH9w8MxbNdboRyNxLDhOakLKJECsw_vhc,19262
140
+ tests/legacy_web.py,sha256=q2ERIriaDHT3Q8axG2N3ucO7f2VSvV_WkuPR00DVko4,8577
141
+ tests/test_account_service.py,sha256=g_AIVT2jhlvUtbFTaCd-d15x4CmXJQaV66tlAgnaXwY,3745
142
+ tests/test_balance_service.py,sha256=86iEkPd2M1-UFy3qOxV1EguQOEYbboy2-2mAyS3ctGs,6549
143
+ tests/test_chain.py,sha256=A8lfca3YCMU0uVnmN79_y8ITlWp4S4xHk0tTxZDkiu8,16987
144
+ tests/test_chain_interface.py,sha256=Wu0q0sREtmYBp7YvWrBIrrSTtqeQj18oJp2VmMUEMec,8312
145
+ tests/test_cli.py,sha256=WW6EDeHLws5-BqFNOy11pH_D5lttuyspD5hrDCFpR0Q,3968
146
+ tests/test_contract.py,sha256=_vdEj12Wo-dMiV087RXvceudxRg1suoHTXoLif_SA7c,7597
147
+ tests/test_db.py,sha256=dmbrupj0qlUeiiycZ2mzMFjf7HrDa6tcqMPY8zpiKIk,5710
148
+ tests/test_drain_coverage.py,sha256=jtN5tIXzSTlS2IjwLS60azyMYsjFDlSTUa98JM1bMic,6786
149
+ tests/test_erc20.py,sha256=kNEw1afpm5EbXRNXkjpkBNZIy7Af1nqGlztKH5IWAwU,3074
150
+ tests/test_gnosis_plugin.py,sha256=XMoHBCTrnVBq9bXYPzMUIrhr95caucMVRxooCjKrzjg,3454
151
+ tests/test_keys.py,sha256=M5HgbpUCw8ghD3_Uar2PkDMdOkrFVXk17H899HXfw2M,15829
152
+ tests/test_legacy_wallet.py,sha256=8u83TTJv2zmdfBaLXIhsrbBREqm7EA1KH6J6ZjTyzuc,49604
153
+ tests/test_main.py,sha256=y2xr7HjCt4rHsxm8y6n24FKCteSHPyxC3DFuMcUgX1Y,475
154
+ tests/test_mnemonic.py,sha256=szTNSJMi4AFAZzcoPfvFNBMXCYH93GzVWObR5-5K08g,7379
155
+ tests/test_modals.py,sha256=R_lXa7wnnGewAP5jJvVZDyQyY1FbE98IeO2B7y3x86c,2945
156
+ tests/test_models.py,sha256=1bEfPiDVgEdtwFEzwecSPAHjCF8kjOPSMeQExJ7eCJ4,7107
157
+ tests/test_monitor.py,sha256=P_hF61VMlCX2rh9yu_a6aKhlgXOAcCMGOZRntjcqrd0,7255
158
+ tests/test_multisend.py,sha256=IvXpwnC5xSDRCyCDGcMdO3L-eQegvdjAzHZB0FoVFUI,2685
159
+ tests/test_plugin_service.py,sha256=ZEe37kV_sv4Eb04032O1hZIoo9yf5gJo83ks7Grzrng,3767
160
+ tests/test_pricing.py,sha256=Yo6r1CGflbkITZ41g1Eg1H29bni-ktAsVWKHvucC3VA,4695
161
+ tests/test_rate_limiter.py,sha256=DOIlrBP2AtVFHCpznIoFn2FjFc33emG7M_FffLh4MGE,7314
162
+ tests/test_reset_tenderly.py,sha256=GVoqbDT3n4_GnlKF5Lx-8ew15jT8I2hIPdTulQDb6dI,7215
163
+ tests/test_rpc_view.py,sha256=sgZ53KEHl8VGb7WKYa0VI7Cdxbf8JH1SdroHYbWHjfQ,2031
164
+ tests/test_safe_coverage.py,sha256=9fNqte7bzxtdFjMn-fj1PQR87IjWuaMhllaww_E-USs,5099
165
+ tests/test_safe_service.py,sha256=u3PkOk8ChlWjTEKfoNCrDebbzKpFVvZ_N11Q1Yj7bFs,5904
166
+ tests/test_service_manager_integration.py,sha256=I_BLUzEKrVTyg_8jqsUK0oFD3aQVPCRJ7z0gY8P-j04,2354
167
+ tests/test_service_manager_structure.py,sha256=zK506ucCXCBHcjPYKrKEuK1bgq0xsbawyL8Y-wahXf8,868
168
+ tests/test_service_transaction.py,sha256=Jzb6oADMrlxNdgVvr3urpYz5NCRNO6h6bUTUQDKeTxQ,6224
169
+ tests/test_staking_router.py,sha256=zLlfL9tLCxj8KVT-ZH06-nN37BAjjaEHe3c3TniColQ,2337
170
+ tests/test_staking_simple.py,sha256=NHyZ1pcVQEJGFiGseC5m6Y9Y6FJGnRIFJUwhd1hAV9g,1138
171
+ tests/test_tables.py,sha256=1KQHgxuizoOrRxpubDdnzk9iaU5Lwyp3bcWP_hZD5uU,2686
172
+ tests/test_transaction_service.py,sha256=NhTuzZnmIbMRbiO1lXutzFNhjdyGDb4QNXbm9U4D7yM,5154
173
+ tests/test_transfer_multisend.py,sha256=PErjNqNwN66TMh4oVa307re64Ucccg1LkXqB0KlkmsI,6677
174
+ tests/test_transfer_native.py,sha256=cDbb4poV_veIw6eHpokrHe9yUndOjA6rQhrHd_IY3HQ,7445
175
+ tests/test_transfer_security.py,sha256=gdpC6ybdXQbQgILbAQ0GqjWdwn9AJRNR3B_7TYg0NxI,3617
176
+ tests/test_transfer_structure.py,sha256=Q2rHB8QotipbvPuwL5hbgwcQG-DE-1RFXgoyuFyxpPQ,1172
177
+ tests/test_transfer_swap_unit.py,sha256=v_tld2oF2jFf_qdrCxIPQFlAymQqHT2dcw2Z05qWm3I,4998
178
+ tests/test_ui_coverage.py,sha256=N-7uhPlKOXCKyS32VjwG3JQRnAS1PoAJxR-InaOZtCQ,2423
179
+ tests/test_utils.py,sha256=vkP49rYNI8BRzLpWR3WnKdDr8upeZjZcs7Rx0pjbQMo,1292
180
+ tests/test_workers.py,sha256=MInwdkFY5LdmFB3o1odIaSD7AQZb3263hNafO1De5PE,2793
181
+ tools/verify_drain.py,sha256=55C3Z7mvKr522ASv-4YMfP1X4tWJaq-q5jXYxNIQ2cw,6882
182
+ iwa-0.0.1a2.dist-info/METADATA,sha256=95d5F7i94Mugod5DFyevNc_1-nzjiw0MKcLx3EqLd3c,7110
183
+ iwa-0.0.1a2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
184
+ iwa-0.0.1a2.dist-info/entry_points.txt,sha256=m4BdkrLpu13oRaedcFWhBDwwDosy_tum7NboAJqIwfc,45
185
+ iwa-0.0.1a2.dist-info/top_level.txt,sha256=dv1_pfdxeIecM4tOc2ECj1aiCTQMDDYD9Y1UCOMmWlI,25
186
+ iwa-0.0.1a2.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ iwa = iwa.core.cli:iwa_cli
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 Iwa Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ conftest
2
+ iwa
3
+ tests
4
+ tools