diff --git a/package.json b/package.json
index 4ea104b..2a116bb 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"@changesets/cli": "^2.27.0",
"@vitest/coverage-v8": "^3.2.4",
"lint-staged": "^16.4.0",
+ "tsup": "^8.5.1",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
},
diff --git a/packages/cli/LICENSE b/packages/cli/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/cli/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/cli/README.md b/packages/cli/README.md
new file mode 100644
index 0000000..54a1054
--- /dev/null
+++ b/packages/cli/README.md
@@ -0,0 +1,70 @@
+
@growae/reactive-cli
+
+
+ CLI for generating typed Sophia contract bindings from ACI
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+CLI for `@growae/reactive` that generates fully typed TypeScript code from Sophia contract ACI files. Supports watch mode for development. Also exports `defineConfig`, `aci()` plugin, and `compiler()` plugin for programmatic use.
+
+## Install
+
+```bash
+# npm
+npm install -D @growae/reactive-cli
+
+# yarn
+yarn add -D @growae/reactive-cli
+
+# pnpm
+pnpm add -D @growae/reactive-cli
+```
+
+## Usage
+
+### Scaffold a config
+
+```bash
+npx @growae/reactive-cli init
+```
+
+### Generate typed bindings
+
+```bash
+npx @growae/reactive-cli generate
+```
+
+### Watch mode
+
+```bash
+npx @growae/reactive-cli generate --watch
+```
+
+### Config file
+
+```ts
+// reactive.config.ts
+import { defineConfig } from '@growae/reactive-cli'
+
+export default defineConfig({
+ out: 'src/generated.ts',
+ contracts: [{ name: 'Token', aci: './contracts/Token.json' }],
+})
+```
+
+## Documentation
+
+Visit [reactive.growae.io/cli/getting-started](https://reactive.growae.io/cli/getting-started) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 0042e56..1de7142 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -3,22 +3,24 @@
"version": "0.0.2",
"type": "module",
"bin": {
- "reactive": "./dist/esm/cli.js"
+ "reactive": "./dist/cli.js",
+ "@growae/reactive-cli": "./dist/cli.js"
},
- "main": "dist/esm/cli.js",
- "types": "dist/types/cli.d.ts",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
"exports": {
".": {
- "types": "./dist/types/cli.d.ts",
- "default": "./dist/esm/cli.js"
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
},
"./package.json": "./package.json"
},
+ "files": ["dist"],
"scripts": {
- "build": "tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types",
+ "build": "tsup",
"clean": "rm -rf dist",
"check:types": "tsc --noEmit",
- "dev": "tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types --watch"
+ "dev": "tsup --watch"
},
"dependencies": {
"@growae/reactive": "workspace:*",
@@ -37,6 +39,7 @@
"access": "public"
},
"devDependencies": {
- "@types/node": "^25.5.0"
+ "@types/node": "^25.5.0",
+ "tsup": "^8.5.0"
}
}
diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts
index fdb228a..62aa7af 100644
--- a/packages/cli/src/cli.ts
+++ b/packages/cli/src/cli.ts
@@ -1,4 +1,3 @@
-#!/usr/bin/env node
import { cac } from 'cac'
import { generate } from './commands/generate'
diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts
new file mode 100644
index 0000000..4ce5e8e
--- /dev/null
+++ b/packages/cli/src/index.ts
@@ -0,0 +1,13 @@
+export { defineConfig } from './config'
+export type {
+ ReactiveConfig,
+ ContractConfig,
+ Plugin,
+ ResolvedContract,
+} from './config'
+
+export { aci } from './plugins/aci'
+export type { AciConfig } from './plugins/aci'
+
+export { compiler } from './plugins/compiler'
+export type { CompilerConfig } from './plugins/compiler'
diff --git a/packages/cli/src/version.ts b/packages/cli/src/version.ts
index 6af1fbc..c0eabc0 100644
--- a/packages/cli/src/version.ts
+++ b/packages/cli/src/version.ts
@@ -1 +1,5 @@
-export const version = '0.0.1'
+import { createRequire } from 'node:module'
+
+const require = createRequire(import.meta.url)
+const pkg = require('../package.json') as { version: string }
+export const version = pkg.version
diff --git a/packages/cli/tsconfig.build.json b/packages/cli/tsconfig.build.json
index 9ff460e..a8af20f 100644
--- a/packages/cli/tsconfig.build.json
+++ b/packages/cli/tsconfig.build.json
@@ -2,11 +2,7 @@
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"rootDir": "src",
- "outDir": "dist/esm",
- "declarationDir": "dist/types",
- "declaration": true,
- "declarationMap": true,
- "sourceMap": true,
+ "incremental": false,
"paths": {}
},
"include": ["src/**/*.ts"],
diff --git a/packages/cli/tsup.config.ts b/packages/cli/tsup.config.ts
new file mode 100644
index 0000000..1454c62
--- /dev/null
+++ b/packages/cli/tsup.config.ts
@@ -0,0 +1,22 @@
+import { defineConfig } from 'tsup'
+
+export default defineConfig([
+ {
+ entry: { cli: 'src/cli.ts' },
+ format: 'esm',
+ target: 'node18',
+ splitting: false,
+ clean: true,
+ banner: { js: '#!/usr/bin/env node' },
+ tsconfig: 'tsconfig.build.json',
+ },
+ {
+ entry: { index: 'src/index.ts' },
+ format: 'esm',
+ target: 'node18',
+ dts: true,
+ splitting: false,
+ clean: false,
+ tsconfig: 'tsconfig.build.json',
+ },
+])
diff --git a/packages/connectors/LICENSE b/packages/connectors/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/connectors/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/connectors/README.md b/packages/connectors/README.md
new file mode 100644
index 0000000..336484e
--- /dev/null
+++ b/packages/connectors/README.md
@@ -0,0 +1,64 @@
+
@growae/reactive-connectors
+
+
+ Wallet connectors for Aeternity
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+Wallet connectors for `@growae/reactive`. Includes `superhero()` (Superhero Wallet), `iframe()`, `webExtension()`, `ledger()`, `metamaskSnap()`, and `walletDetect()`, plus re-exports `mock()` and `memory()` from core.
+
+## Install
+
+```bash
+# npm
+npm install @growae/reactive-connectors @growae/reactive
+
+# yarn
+yarn add @growae/reactive-connectors @growae/reactive
+
+# pnpm
+pnpm add @growae/reactive-connectors @growae/reactive
+```
+
+## Usage
+
+```ts
+import { createConfig } from '@growae/reactive'
+import { testnet } from '@growae/reactive/networks'
+import {
+ superhero,
+ ledger,
+ walletDetect,
+} from '@growae/reactive-connectors'
+
+const config = createConfig({
+ networks: [testnet],
+ connectors: [
+ superhero(),
+ ledger(),
+ walletDetect(),
+ ],
+})
+```
+
+## Peer Dependencies
+
+- `@aeternity/aepp-sdk >=14`
+- Optional: `@ledgerhq/hw-transport >=6`
+
+## Documentation
+
+Visit [reactive.growae.io/core/getting-started](https://reactive.growae.io/core/getting-started) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/core/LICENSE b/packages/core/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/core/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/core/README.md b/packages/core/README.md
new file mode 100644
index 0000000..0005bcd
--- /dev/null
+++ b/packages/core/README.md
@@ -0,0 +1,61 @@
+
@growae/reactive
+
+
+ Core vanilla TypeScript toolkit for Aeternity blockchain interactions
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+Config-driven setup for Aeternity dApps. Provides actions (`spend`, `getBalance`, `signMessage`, `deployContract`, and more), network management, and a connector system. Use standalone or pair with a framework adapter.
+
+## Install
+
+```bash
+# npm
+npm install @growae/reactive
+
+# yarn
+yarn add @growae/reactive
+
+# pnpm
+pnpm add @growae/reactive
+```
+
+## Usage
+
+```ts
+import { createConfig } from '@growae/reactive'
+import { getBalance, spend } from '@growae/reactive/actions'
+import { testnet } from '@growae/reactive/networks'
+
+const config = createConfig({ networks: [testnet] })
+
+const balance = await getBalance(config, { address: 'ak_...' })
+
+await spend(config, {
+ recipient: 'ak_...',
+ amount: '1.0',
+})
+```
+
+## Dependencies
+
+- [`@aeternity/aepp-sdk`](https://www.npmjs.com/package/@aeternity/aepp-sdk)
+- [`zustand`](https://www.npmjs.com/package/zustand)
+- Optional peer: [`@tanstack/query-core`](https://www.npmjs.com/package/@tanstack/query-core)
+
+## Documentation
+
+Visit [reactive.growae.io/core/getting-started](https://reactive.growae.io/core/getting-started) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/create-reactive/LICENSE b/packages/create-reactive/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/create-reactive/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/create-reactive/README.md b/packages/create-reactive/README.md
new file mode 100644
index 0000000..0a61882
--- /dev/null
+++ b/packages/create-reactive/README.md
@@ -0,0 +1,49 @@
+
@growae/create-reactive
+
+
+ Scaffold a new Aeternity dApp project
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+Interactive project scaffolder for `@growae/reactive`. Creates a ready-to-run Aeternity dApp with your choice of framework and tooling.
+
+## Usage
+
+```bash
+# npm
+npm create @growae/reactive
+
+# yarn
+yarn create @growae/reactive
+
+# pnpm
+pnpm create @growae/reactive
+```
+
+## Templates
+
+| Template | Description |
+|---|---|
+| `vite-react` | React + Vite |
+| `vite-vue` | Vue + Vite |
+| `vite-solid` | Solid.js + Vite |
+| `vite-vanilla` | Vanilla TypeScript + Vite |
+| `next` | Next.js |
+| `nuxt` | Nuxt |
+
+## Documentation
+
+Visit [reactive.growae.io](https://reactive.growae.io) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/react/LICENSE b/packages/react/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/react/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/react/README.md b/packages/react/README.md
new file mode 100644
index 0000000..c9e5b86
--- /dev/null
+++ b/packages/react/README.md
@@ -0,0 +1,92 @@
+
+ )
+}
+```
+
+## Peer Dependencies
+
+- `react >=18`
+- `@tanstack/react-query >=5`
+
+## Documentation
+
+Visit [reactive.growae.io/react/getting-started](https://reactive.growae.io/react/getting-started) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/solid/LICENSE b/packages/solid/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/solid/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/solid/README.md b/packages/solid/README.md
new file mode 100644
index 0000000..473e30c
--- /dev/null
+++ b/packages/solid/README.md
@@ -0,0 +1,94 @@
+
@growae/reactive-solid
+
+
+ Solid.js primitives for building Aeternity dApps
+
+ )
+}
+```
+
+## Peer Dependencies
+
+- `solid-js >=1`
+- `@tanstack/solid-query >=5`
+
+## Documentation
+
+Visit [reactive.growae.io/solid/getting-started](https://reactive.growae.io/solid/getting-started) for the full documentation.
+
+## License
+
+[MIT](https://github.com/growae/reactive/blob/main/LICENSE)
diff --git a/packages/vue/LICENSE b/packages/vue/LICENSE
new file mode 100644
index 0000000..f85eafe
--- /dev/null
+++ b/packages/vue/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025-present Growae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/vue/README.md b/packages/vue/README.md
new file mode 100644
index 0000000..af13f2c
--- /dev/null
+++ b/packages/vue/README.md
@@ -0,0 +1,78 @@
+