{"_id":"@arcanahq/core","_rev":"2-c74b9867ace8c7581eaf124d0d99b46f","name":"@arcanahq/core","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@arcanahq/core","version":"1.0.0","keywords":["contract","engine","assemblyscript","wasm","typescript","utility","library"],"author":"","license":"MIT","_id":"@arcanahq/core@1.0.0","maintainers":[{"name":"tapone","email":"johnny@empyrealsdk.com"}],"dist":{"shasum":"a23e9c91a9aa4874d8e3e4a45e6bd3fad0f36172","tarball":"https://registry.npmjs.org/@arcanahq/core/-/core-1.0.0.tgz","fileCount":350,"integrity":"sha512-c5JGCvxovp370/QeczHds7pchwU1ra9C6QIgReYBbjHu0VC9/tak7wICUgBpNx5pgL1anZ+G9VBNj1bU1wPhMg==","signatures":[{"sig":"MEUCIQD8gZr0RhGXzBVsUKCDTMWQvdrGi2F1hEs7dOMli6V+iQIgHyomgNV5IlcoR2CpD7DN/CGOiKtEB+o8iMwoLoEJ4dY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687924},"main":"src/index.ts","type":"module","types":"src/index.ts","exports":{".":"./src/index.ts","./tests/runner":"./tests/runner.js","./assembly/index":"./assembly/index.ts","./assembly/core/args":"./assembly/core/args.ts","./assembly/core/views":"./assembly/core/views.ts","./assembly/core/context":"./assembly/core/context.ts","./assembly/core/program":"./assembly/core/program.ts","./assembly/core/registry":"./assembly/core/registry.ts","./assembly/core/response":"./assembly/core/response.ts","./assembly/core/decorators":{"types":"./assembly/core/decorators.d.ts","default":"./assembly/core/decorators.ts"},"./assembly/primitives/random":"./assembly/primitives/random.ts","./assembly/primitives/result":"./assembly/primitives/result.ts","./assembly/core/entrypoint_v2":"./assembly/core/entrypoint_v2.ts","./transform/decorator-transform":"./transform/decorator-transform.mjs","./assembly/primitives/borsh_decode":"./assembly/primitives/borsh_decode.ts"},"gitHead":"c9e8a602e25807fbcc843c2419f89a89a93bdc25","scripts":{"test":"npx cross-env NODE_OPTIONS='--import tsx' npx as-test --config ./as-test.config.js --testFiles assembly/__tests__/index.spec.ts assembly/__tests__/random.spec.ts assembly/__tests__/msgpack_codegen.spec.ts","build":"asc assembly/index.ts --target release --exportRuntime --disableWarning AS235"},"_npmUser":{"name":"tapone","email":"johnny@empyrealsdk.com"},"_npmVersion":"11.6.2","description":"Core utility library for AssemblyScript and TypeScript contract engines","directories":{},"_nodeVersion":"25.2.1","dependencies":{"assemblyscript":"^0.27.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","warpo":"^2.2.2","cross-env":"^7.0.3","typescript":"^5.3.3","@assemblyscript/loader":"^0.28.9","assemblyscript-unittest-framework":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1782368351007_0.916818320016032","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arcanahq/core","version":"1.0.1","description":"Core utility library for AssemblyScript and TypeScript contract engines","type":"module","publishConfig":{"access":"public"},"main":"assembly/index.ts","types":"assembly/index.ts","exports":{".":"./assembly/index.ts","./assembly/index":"./assembly/index.ts","./assembly/core/context":"./assembly/core/context.ts","./assembly/core/args":"./assembly/core/args.ts","./assembly/core/program":"./assembly/core/program.ts","./assembly/core/decorators":{"types":"./assembly/core/decorators.d.ts","default":"./assembly/core/decorators.ts"},"./assembly/core/response":"./assembly/core/response.ts","./assembly/core/registry":"./assembly/core/registry.ts","./assembly/core/views":"./assembly/core/views.ts","./assembly/primitives/random":"./assembly/primitives/random.ts","./assembly/primitives/borsh_decode":"./assembly/primitives/borsh_decode.ts","./assembly/primitives/result":"./assembly/primitives/result.ts","./transform/decorator-transform":"./transform/decorator-transform.mjs","./tests/runner":"./tests/runner.js"},"scripts":{"build":"asc assembly/index.ts --target release --exportRuntime --disableWarning AS235","test":"npx cross-env NODE_OPTIONS='--import tsx' npx as-test --config ./as-test.config.js --testFiles assembly/__tests__/index.spec.ts assembly/__tests__/random.spec.ts assembly/__tests__/msgpack_codegen.spec.ts"},"keywords":["contract","engine","assemblyscript","wasm","typescript","utility","library"],"author":"","license":"MIT","devDependencies":{"@assemblyscript/loader":"^0.28.9","assemblyscript-unittest-framework":"^2.1.0","cross-env":"^7.0.3","tsx":"^4.7.0","typescript":"^5.3.3","warpo":"^2.2.2"},"dependencies":{"assemblyscript":"^0.27.0"},"gitHead":"d6717a1f77ea48b9ac16d75b57d6e727f6b8dd21","_id":"@arcanahq/core@1.0.1","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-8XjDRVg4SkRJkr6gLoPd3JB3zJ/UJ56RQdY596tdz5ziGy4GJEkhSDZN9l+0scIONToqZ+iPLyDZCpoM+/BvXQ==","shasum":"ce95bdbcfd0e195d62ae1bafe1ccb33300023c62","tarball":"https://registry.npmjs.org/@arcanahq/core/-/core-1.0.1.tgz","fileCount":363,"unpackedSize":7384777,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIENwXawZ00CHWEv3gSVDe0t0WXG1q2owrB/QSF4GcgAlAiA0caN65fdFebtwUX6j8NComqVSgyQf9BLCbycLMhRFgg=="}]},"_npmUser":{"name":"tapone","email":"johnny@empyrealsdk.com"},"directories":{},"maintainers":[{"name":"tapone","email":"johnny@empyrealsdk.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.0.1_1782369155504_0.7151304793316795"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T06:19:10.814Z","modified":"2026-06-25T06:32:35.810Z","1.0.0":"2026-06-25T06:19:11.157Z","1.0.1":"2026-06-25T06:32:35.686Z"},"license":"MIT","keywords":["contract","engine","assemblyscript","wasm","typescript","utility","library"],"description":"Core utility library for AssemblyScript and TypeScript contract engines","maintainers":[{"name":"tapone","email":"johnny@empyrealsdk.com"}],"readme":"# @arcanahq/core\n\nCore framework for writing **Arcana state-machine contracts** in\n[AssemblyScript](https://www.assemblyscript.org/). It provides the runtime\nprimitives, decorators, and helpers that compile a program down to the\nMessagePack-first WASM ABI the Arcana runtime expects.\n\n- **Decorators** — `@constructor`, `@action`, `@view` for declaring entrypoints\n- **State & views** — `ProgramState` / `ProgramStateView` base classes with\n  MessagePack (de)serialization\n- **Responses** — `ContractResponse`, `ViewResponse`, events, and effects\n  (bank transfers, scoped storage, assertions, tables, …)\n- **Primitives** — deterministic random (`RandomSeed`), `BigInt`, u256/amount\n  conversions, Borsh/MessagePack codecs\n- **Game helpers** — turn management, player auth, status transitions, timers\n\n> Card-game utilities (deck, blackjack, poker) live in a separate package,\n> [`@arcanahq/cardgames`](../cardgames), which builds on this one.\n\n## Installation\n\nThis is an AssemblyScript **source** package — it ships `.ts` source that is\ncompiled by your program's `asc` build, not a prebuilt `.wasm`.\n\n```json\n{\n  \"dependencies\": {\n    \"@arcanahq/core\": \"file:../packages/core\"\n  }\n}\n```\n\nOnce published to npm:\n\n```bash\nnpm install @arcanahq/core\n```\n\n## Usage\n\nA minimal program declares typed entrypoints with decorators and returns a\n`ContractResponse`:\n\n```typescript\nimport { ContractContext } from \"@arcanahq/core/assembly/core/context\";\nimport { action, view, constructor } from \"@arcanahq/core/assembly/core/decorators\";\nimport { ContractResponse, ViewResponse } from \"@arcanahq/core/assembly/core/response\";\nimport { CounterState } from \"./types\";\nimport { InitializeArgs, AmountArgs } from \"./schema\";\n\n@constructor\nexport function initialize(\n  context: ContractContext,\n  args: InitializeArgs,\n): ContractResponse<CounterState> {\n  return ContractResponse.withState(new CounterState(args.initialValue));\n}\n\n@action\nexport function increment(\n  context: ContractContext,\n  state: CounterState,\n  args: AmountArgs,\n): ContractResponse<CounterState> {\n  state.value += args.amount;\n  return ContractResponse.withState(state);\n}\n\n@view\nexport function value(\n  context: ContractContext,\n  state: CounterState,\n): ViewResponse<CounterStateView> {\n  return ViewResponse.withView(CounterStateView.from(state));\n}\n```\n\nThe package root re-exports the full surface, so you can also import the\nruntime helpers you need directly:\n\n```typescript\nimport {\n  ProgramState,\n  ContractStatus,\n  Environment,\n  RandomSeed,\n  getRandomIntInRange,\n} from \"@arcanahq/core/assembly/index\";\n```\n\n## Subpath exports\n\n| Import | Contents |\n|--------|----------|\n| `@arcanahq/core/assembly/index` | Everything (barrel export) |\n| `@arcanahq/core/assembly/core/context` | `ContractContext` |\n| `@arcanahq/core/assembly/core/decorators` | `@constructor`, `@action`, `@view`, … |\n| `@arcanahq/core/assembly/core/response` | `ContractResponse`, `ViewResponse`, events, effects |\n| `@arcanahq/core/assembly/core/state` | `ProgramState`, `ContractStatus`, `Environment` |\n| `@arcanahq/core/assembly/core/views` | `ProgramStateView`, `ContractContextView` |\n| `@arcanahq/core/assembly/primitives/random` | `RandomSeed`, `getRandomIntInRange`, … |\n| `@arcanahq/core/assembly/primitives/result` | Event/effect builders |\n\n## Building & testing\n\n```bash\nnpm install\nnpm run build   # asc compile of assembly/index.ts\nnpm test        # AssemblyScript unit tests (as-test)\n```\n\n## Documentation\n\n- [`docs/U256_HANDLING.md`](./docs/U256_HANDLING.md) — handling u256 amounts\n  from on-chain contracts in AssemblyScript engines.\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":"README.md"}