diff --git a/.gitignore b/.gitignore
index 228c46e..63bc0d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,6 @@ web/public/assets/placeholder/pixel-state.png
**/**/*.log
**/**/*.sqlite
contracts/out
-contracts/manifests
contracts/target
.aider*
+db/
diff --git a/README.md b/README.md
index 1f71716..6f7dd7b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,15 @@
-# PixeLAW Core
+
+
+[](https://github.com/pixelaw/core/actions/workflows/ci-contracts.yml)
+
+
+
+
+
+
+[](https://t.co/jKDjNbFdZ5)
+
+
A game built on top of Dojo. See live example at .
This repository includes core components and systems. For more details, please check [PixeLAW Book](https://pixelaw.github.io/book/index.html).
diff --git a/contracts/.vscode/tasks.json b/contracts/.vscode/tasks.json
new file mode 100644
index 0000000..001c2f5
--- /dev/null
+++ b/contracts/.vscode/tasks.json
@@ -0,0 +1,43 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Start Katana",
+ "type": "shell",
+ "command": "katana --disable-fee --allowed-origins '*' --db-dir db/katana",
+ "isBackground": true,
+ "problemMatcher": [],
+ "presentation": {
+ "panel": "dedicated",
+ "showReuseMessage": false,
+ "clear": false
+ }
+ },
+ {
+ "label": "Start Torii",
+ "type": "shell",
+ "command": "torii --world 0x263ae44e5414519a5c5a135cccaf3d9d7ee196d37e8de47a178da91f3de9b34 --database db/torii --allowed-origins '*'",
+ "isBackground": true,
+ "problemMatcher": [],
+ "presentation": {
+ "panel": "dedicated",
+ "showReuseMessage": false,
+ "clear": false
+ }
+ },
+ {
+ "label": "Start Katana and Torii",
+ "dependsOrder": "parallel",
+ "dependsOn": ["Start Katana", "Start Torii"],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "panel": "shared",
+ "showReuseMessage": false,
+ "clear": false
+ }
+ }
+ ]
+}
diff --git a/contracts/README.md b/contracts/README.md
index 958c069..f0aab4b 100644
--- a/contracts/README.md
+++ b/contracts/README.md
@@ -1,10 +1,8 @@
-# PixeLAW Contracts
+# Pixelaw Contracts
Contracts written in Cairo using Dojo to showcase a Pixel World with app interoperability. Its interoperability is made possible with core actions. Apps are any other contracts that are deployed to the Pixel World.
-## Development
-
-### Prerequisites
+## Prerequisites
- [asdf](https://asdf-vm.com/)
- [scarb](https://docs.swmansion.com/scarb/)
@@ -25,10 +23,72 @@ asdf install dojo 1.0.0-alpha.11
```
asdf plugin add scarb
-asdf install scarb 2.7.0-rc.4
+asdf install scarb 2.7.0
+```
+
+And after moving into contracts directory, the versions for these libs are set in the `.tool-versions` file.
+
+## Running Locally
+
+**If you use vscode,**
+
+#### 1. Run the katana and torii
+just open this repo and press `⌘` + `⇧` + `B`
+
+#### 2. Migrate contracts
+
+```bash
+sozo build --manifest-path Scarb_deploy.toml
+sozo migrate apply --manifest-path Scarb_deploy.toml
+scarb --manifest-path Scarb_deploy.toml run init_auth
```
-And after moving into contracts directory, the versions for these libs are set in the .tool-versions file.
+**Otherwise,**
+
+#### 1.Terminal one (Make sure this is running)
+
+```bash
+# Run Katana
+katana --disable-fee --allowed-origins "*" --db-dir db/katana
+```
+
+#### 2. Terminal two
+
+```bash
+# Build the example
+sozo build
+
+# Migrate the example
+sozo migrate apply
+
+# Initialize the pixelaw app
+scarb run init
+
+# Start Torii
+torii --world 0x263ae44e5414519a5c5a135cccaf3d9d7ee196d37e8de47a178da91f3de9b34 --allowed-origins "*" --database db/torii
+```
+
+## How to Deploy to Starknet
+
+### Sepolia
+
+1. Build
+
+```zsh
+sozo build --manifest-path Scarb_deploy.toml --profile sepolia
+```
+
+2. Migrate
+
+```zsh
+sozo migrate plan --account-address $YOUR_ACCOUNT_ADDRESS --private-key $YOUR_PRIVATE_KEY --profile sepolia --manifest-path Scarb_deploy.toml
+```
+
+3. Deploy
+
+```zsh
+sozo migrate apply --account-address $YOUR_ACCOUNT_ADDRESS --private-key $YOUR_PRIVATE_KEY --profile sepolia --manifest-path Scarb_deploy.toml
+```
## Default Apps
@@ -127,25 +187,3 @@ The App is also tracking score for each Player.
- UI then calls the functions with only the hash value
- Reveal
- there will be 2 params: "rv_NAME" (the actual param) and "rs_NAME" (the used salt)
-
-## How to Deploy to Starknet
-
-### Sepolia
-
-1. Build
-
-```zsh
-sozo build --manifest-path Scarb_deploy.toml --profile sepolia
-```
-
-2. Migrate
-
-```zsh
-sozo migrate plan --account-address $YOUR_ACCOUNT_ADDRESS --private-key $YOUR_PRIVATE_KEY --profile sepolia --manifest-path Scarb_deploy.toml
-```
-
-3. Deploy
-
-```zsh
-sozo migrate apply --account-address $YOUR_ACCOUNT_ADDRESS --private-key $YOUR_PRIVATE_KEY --profile sepolia --manifest-path Scarb_deploy.toml
-```
diff --git a/contracts/Scarb.toml b/contracts/Scarb.toml
index 16fdc93..50a2855 100644
--- a/contracts/Scarb.toml
+++ b/contracts/Scarb.toml
@@ -11,12 +11,15 @@ sierra-replace-ids = true
[dependencies]
dojo = { git = "https://github.com/dojoengine/dojo", tag = "v1.0.0-alpha.11" }
-[lib]
+[tool.fmt]
+sort-module-level-items = true
+
+# [lib]
+[[target.dojo]]
[profile.dev-pop]
[profile.slot]
-[scripts]
-init_auth = "./scripts/init_auth.sh"
+[profile.sepolia]
diff --git a/contracts/Scarb_deploy.toml b/contracts/Scarb_deploy.toml
index 7dabaa3..8aaca53 100644
--- a/contracts/Scarb_deploy.toml
+++ b/contracts/Scarb_deploy.toml
@@ -1,7 +1,7 @@
[package]
cairo-version = "=2.7.0"
name = "pixelaw"
-version = "0.3.40"
+version = "0.3.50"
homepage = "https://github.com/pixelaw/core"
edition = "2024_07"
@@ -11,6 +11,9 @@ sierra-replace-ids = true
[dependencies]
dojo = { git = "https://github.com/dojoengine/dojo", tag = "v1.0.0-alpha.11" }
+[tool.fmt]
+sort-module-level-items = true
+
[[target.dojo]]
build-external-contracts = []
@@ -19,3 +22,9 @@ build-external-contracts = []
[profile.slot]
[profile.sepolia]
+
+[scripts]
+init = "./scripts/init.sh"
+paint = "./scripts/paint.sh"
+paint_json = "./scripts/paint_json.sh"
+populate = "./scripts/populate.sh"
diff --git a/contracts/dojo_slot.toml b/contracts/dojo_slot.toml
index 4637002..0d7a151 100644
--- a/contracts/dojo_slot.toml
+++ b/contracts/dojo_slot.toml
@@ -13,6 +13,6 @@ mappings = {}
[env]
rpc_url = "https://api.cartridge.gg/x/pixelaw-dev/katana/"
-account_address = "0x5233cfca86bfa18af0bdef2fd09ac4c1d7c8da71303eb7fc9997fc6d0914d0d"
-private_key = "0xf0e37335d0c020789dd02c0460d99637ac23bd2df3d1d25002fd15621542d"
-world_address = "0x99b8dbc71926673405f5dfff9e4900ee4d9249798cc5e7ac6f3c3a07907399"
+account_address = "0x75aab901b406698604a33f1c81c6487b8de3b2d7ad2456cf01658b68b12aa5"
+private_key = "0x74825107c10098a1a991b1419e0afad3afc9e9ba4d16dec23995916cdca4366"
+world_address = "0x263ae44e5414519a5c5a135cccaf3d9d7ee196d37e8de47a178da91f3de9b34"
diff --git a/contracts/manifests/dev/base/abis/contracts/pixelaw-actions-16928a49.json b/contracts/manifests/dev/base/abis/contracts/pixelaw-actions-16928a49.json
new file mode 100644
index 0000000..e71ba18
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/contracts/pixelaw-actions-16928a49.json
@@ -0,0 +1,775 @@
+[
+ {
+ "type": "impl",
+ "name": "ContractImpl",
+ "interface_name": "dojo::contract::contract::IContract"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::contract::IContract",
+ "items": [
+ {
+ "type": "function",
+ "name": "contract_name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "WorldProviderImpl",
+ "interface_name": "dojo::world::world_contract::IWorldProvider"
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::world_contract::IWorldDispatcher",
+ "members": [
+ {
+ "name": "contract_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IWorldProvider",
+ "items": [
+ {
+ "type": "function",
+ "name": "world",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::world::world_contract::IWorldDispatcher"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ActionsImpl",
+ "interface_name": "pixelaw::core::actions::IActions"
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::permissions::Permission",
+ "members": [
+ {
+ "name": "app",
+ "type": "core::bool"
+ },
+ {
+ "name": "color",
+ "type": "core::bool"
+ },
+ {
+ "name": "owner",
+ "type": "core::bool"
+ },
+ {
+ "name": "text",
+ "type": "core::bool"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::bool"
+ },
+ {
+ "name": "action",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::pixel::Pixel",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "app",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "color",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "created_at",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "updated_at",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "owner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "text",
+ "type": "core::felt252"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::felt252"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::pixel::PixelUpdate",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "color",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "owner",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "app",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "text",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "action",
+ "type": "core::option::Option::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::App",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "icon",
+ "type": "core::felt252"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::utils::Position",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::actions::IActions",
+ "items": [
+ {
+ "type": "function",
+ "name": "init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "update_permission",
+ "inputs": [
+ {
+ "name": "app_key",
+ "type": "core::felt252"
+ },
+ {
+ "name": "permission",
+ "type": "pixelaw::core::models::permissions::Permission"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "has_write_access",
+ "inputs": [
+ {
+ "name": "for_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "for_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "pixel",
+ "type": "pixelaw::core::models::pixel::Pixel"
+ },
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::bool"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "process_queue",
+ "inputs": [
+ {
+ "name": "id",
+ "type": "core::felt252"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "called_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "calldata",
+ "type": "core::array::Span::"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "schedule_queue",
+ "inputs": [
+ {
+ "name": "timestamp",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "called_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "calldata",
+ "type": "core::array::Span::"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "update_pixel",
+ "inputs": [
+ {
+ "name": "for_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "for_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "new_app",
+ "inputs": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "icon",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "pixelaw::core::models::registry::App"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "get_system_address",
+ "inputs": [
+ {
+ "name": "for_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "get_player_address",
+ "inputs": [
+ {
+ "name": "for_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "alert_player",
+ "inputs": [
+ {
+ "name": "position",
+ "type": "pixelaw::core::utils::Position"
+ },
+ {
+ "name": "player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "message",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "set_instruction",
+ "inputs": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "instruction",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "IDojoInitImpl",
+ "interface_name": "pixelaw::core::actions::actions::IDojoInit"
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::actions::actions::IDojoInit",
+ "items": [
+ {
+ "type": "function",
+ "name": "dojo_init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradableImpl",
+ "interface_name": "dojo::contract::upgradeable::IUpgradeable"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::upgradeable::IUpgradeable",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade",
+ "inputs": [
+ {
+ "name": "new_class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "Upgraded",
+ "type": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "nested"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::actions::actions::QueueScheduled",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "id",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::integer::u64",
+ "kind": "data"
+ },
+ {
+ "name": "called_system",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "selector",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "calldata",
+ "type": "core::array::Span::",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::actions::actions::QueueProcessed",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "id",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::actions::actions::AppNameUpdated",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "app",
+ "type": "pixelaw::core::models::registry::App",
+ "kind": "data"
+ },
+ {
+ "name": "caller",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::actions::actions::Alert",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "position",
+ "type": "pixelaw::core::utils::Position",
+ "kind": "data"
+ },
+ {
+ "name": "caller",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "player",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "message",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::integer::u64",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::actions::actions::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "UpgradeableEvent",
+ "type": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "nested"
+ },
+ {
+ "name": "QueueScheduled",
+ "type": "pixelaw::core::actions::actions::QueueScheduled",
+ "kind": "nested"
+ },
+ {
+ "name": "QueueProcessed",
+ "type": "pixelaw::core::actions::actions::QueueProcessed",
+ "kind": "nested"
+ },
+ {
+ "name": "AppNameUpdated",
+ "type": "pixelaw::core::actions::actions::AppNameUpdated",
+ "kind": "nested"
+ },
+ {
+ "name": "Alert",
+ "type": "pixelaw::core::actions::actions::Alert",
+ "kind": "nested"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/contracts/pixelaw-paint_actions-2afb94fe.json b/contracts/manifests/dev/base/abis/contracts/pixelaw-paint_actions-2afb94fe.json
new file mode 100644
index 0000000..43c7d6b
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/contracts/pixelaw-paint_actions-2afb94fe.json
@@ -0,0 +1,489 @@
+[
+ {
+ "type": "impl",
+ "name": "ContractImpl",
+ "interface_name": "dojo::contract::contract::IContract"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::contract::IContract",
+ "items": [
+ {
+ "type": "function",
+ "name": "contract_name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "WorldProviderImpl",
+ "interface_name": "dojo::world::world_contract::IWorldProvider"
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::world_contract::IWorldDispatcher",
+ "members": [
+ {
+ "name": "contract_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IWorldProvider",
+ "items": [
+ {
+ "type": "function",
+ "name": "world",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::world::world_contract::IWorldDispatcher"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ActionsInteroperability",
+ "interface_name": "pixelaw::core::traits::IInteroperability"
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::felt252"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::pixel::PixelUpdate",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "color",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "owner",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "app",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "text",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "action",
+ "type": "core::option::Option::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::App",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "icon",
+ "type": "core::felt252"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::traits::IInteroperability",
+ "items": [
+ {
+ "type": "function",
+ "name": "on_pre_update",
+ "inputs": [
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ },
+ {
+ "name": "app_caller",
+ "type": "pixelaw::core::models::registry::App"
+ },
+ {
+ "name": "player_caller",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "on_post_update",
+ "inputs": [
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ },
+ {
+ "name": "app_caller",
+ "type": "pixelaw::core::models::registry::App"
+ },
+ {
+ "name": "player_caller",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ActionsImpl",
+ "interface_name": "pixelaw::apps::paint::app::IPaintActions"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::utils::Position",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::utils::DefaultParameters",
+ "members": [
+ {
+ "name": "for_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "for_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "position",
+ "type": "pixelaw::core::utils::Position"
+ },
+ {
+ "name": "color",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::apps::paint::app::IPaintActions",
+ "items": [
+ {
+ "type": "function",
+ "name": "init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "interact",
+ "inputs": [
+ {
+ "name": "default_params",
+ "type": "pixelaw::core::utils::DefaultParameters"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "put_color",
+ "inputs": [
+ {
+ "name": "default_params",
+ "type": "pixelaw::core::utils::DefaultParameters"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "fade",
+ "inputs": [
+ {
+ "name": "default_params",
+ "type": "pixelaw::core::utils::DefaultParameters"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "pixel_row",
+ "inputs": [
+ {
+ "name": "default_params",
+ "type": "pixelaw::core::utils::DefaultParameters"
+ },
+ {
+ "name": "image_data",
+ "type": "core::array::Span::"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "IDojoInitImpl",
+ "interface_name": "pixelaw::apps::paint::app::paint_actions::IDojoInit"
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::apps::paint::app::paint_actions::IDojoInit",
+ "items": [
+ {
+ "type": "function",
+ "name": "dojo_init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradableImpl",
+ "interface_name": "dojo::contract::upgradeable::IUpgradeable"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::upgradeable::IUpgradeable",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade",
+ "inputs": [
+ {
+ "name": "new_class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "Upgraded",
+ "type": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "nested"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::apps::paint::app::paint_actions::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "UpgradeableEvent",
+ "type": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "nested"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/contracts/pixelaw-snake_actions-4f967106.json b/contracts/manifests/dev/base/abis/contracts/pixelaw-snake_actions-4f967106.json
new file mode 100644
index 0000000..7db4153
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/contracts/pixelaw-snake_actions-4f967106.json
@@ -0,0 +1,534 @@
+[
+ {
+ "type": "impl",
+ "name": "ContractImpl",
+ "interface_name": "dojo::contract::contract::IContract"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::contract::IContract",
+ "items": [
+ {
+ "type": "function",
+ "name": "contract_name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "WorldProviderImpl",
+ "interface_name": "dojo::world::world_contract::IWorldProvider"
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::world_contract::IWorldDispatcher",
+ "members": [
+ {
+ "name": "contract_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IWorldProvider",
+ "items": [
+ {
+ "type": "function",
+ "name": "world",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::world::world_contract::IWorldDispatcher"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ActionsInteroperability",
+ "interface_name": "pixelaw::core::traits::IInteroperability"
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::felt252"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::pixel::PixelUpdate",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "color",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "owner",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "app",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "text",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::option::Option::"
+ },
+ {
+ "name": "action",
+ "type": "core::option::Option::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::App",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "icon",
+ "type": "core::felt252"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::traits::IInteroperability",
+ "items": [
+ {
+ "type": "function",
+ "name": "on_pre_update",
+ "inputs": [
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ },
+ {
+ "name": "app_caller",
+ "type": "pixelaw::core::models::registry::App"
+ },
+ {
+ "name": "player_caller",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "on_post_update",
+ "inputs": [
+ {
+ "name": "pixel_update",
+ "type": "pixelaw::core::models::pixel::PixelUpdate"
+ },
+ {
+ "name": "app_caller",
+ "type": "pixelaw::core::models::registry::App"
+ },
+ {
+ "name": "player_caller",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ActionsImpl",
+ "interface_name": "pixelaw::apps::snake::app::ISnakeActions"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::utils::Position",
+ "members": [
+ {
+ "name": "x",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::utils::DefaultParameters",
+ "members": [
+ {
+ "name": "for_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "for_system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "position",
+ "type": "pixelaw::core::utils::Position"
+ },
+ {
+ "name": "color",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "pixelaw::core::utils::Direction",
+ "variants": [
+ {
+ "name": "None",
+ "type": "()"
+ },
+ {
+ "name": "Left",
+ "type": "()"
+ },
+ {
+ "name": "Right",
+ "type": "()"
+ },
+ {
+ "name": "Up",
+ "type": "()"
+ },
+ {
+ "name": "Down",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::apps::snake::app::ISnakeActions",
+ "items": [
+ {
+ "type": "function",
+ "name": "init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "interact",
+ "inputs": [
+ {
+ "name": "default_params",
+ "type": "pixelaw::core::utils::DefaultParameters"
+ },
+ {
+ "name": "direction",
+ "type": "pixelaw::core::utils::Direction"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::integer::u32"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "move",
+ "inputs": [
+ {
+ "name": "owner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "IDojoInitImpl",
+ "interface_name": "pixelaw::apps::snake::app::snake_actions::IDojoInit"
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::apps::snake::app::snake_actions::IDojoInit",
+ "items": [
+ {
+ "type": "function",
+ "name": "dojo_init",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradableImpl",
+ "interface_name": "dojo::contract::upgradeable::IUpgradeable"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::upgradeable::IUpgradeable",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade",
+ "inputs": [
+ {
+ "name": "new_class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "Upgraded",
+ "type": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "nested"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::apps::snake::app::snake_actions::Moved",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "owner",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "direction",
+ "type": "pixelaw::core::utils::Direction",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::apps::snake::app::snake_actions::Died",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "owner",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "x",
+ "type": "core::integer::u32",
+ "kind": "data"
+ },
+ {
+ "name": "y",
+ "type": "core::integer::u32",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::apps::snake::app::snake_actions::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "UpgradeableEvent",
+ "type": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "nested"
+ },
+ {
+ "name": "Moved",
+ "type": "pixelaw::apps::snake::app::snake_actions::Moved",
+ "kind": "nested"
+ },
+ {
+ "name": "Died",
+ "type": "pixelaw::apps::snake::app::snake_actions::Died",
+ "kind": "nested"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/dojo-base.json b/contracts/manifests/dev/base/abis/dojo-base.json
new file mode 100644
index 0000000..4800464
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/dojo-base.json
@@ -0,0 +1,98 @@
+[
+ {
+ "type": "impl",
+ "name": "WorldProviderImpl",
+ "interface_name": "dojo::world::world_contract::IWorldProvider"
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::world_contract::IWorldDispatcher",
+ "members": [
+ {
+ "name": "contract_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IWorldProvider",
+ "items": [
+ {
+ "type": "function",
+ "name": "world",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::world::world_contract::IWorldDispatcher"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradableImpl",
+ "interface_name": "dojo::contract::upgradeable::IUpgradeable"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::contract::upgradeable::IUpgradeable",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade",
+ "inputs": [
+ {
+ "name": "new_class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "constructor",
+ "name": "constructor",
+ "inputs": []
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "Upgraded",
+ "type": "dojo::contract::upgradeable::upgradeable::Upgraded",
+ "kind": "nested"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::contract::base_contract::base::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "UpgradeableEvent",
+ "type": "dojo::contract::upgradeable::upgradeable::Event",
+ "kind": "flat"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/dojo-world.json b/contracts/manifests/dev/base/abis/dojo-world.json
new file mode 100644
index 0000000..8553809
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/dojo-world.json
@@ -0,0 +1,1231 @@
+[
+ {
+ "type": "impl",
+ "name": "World",
+ "interface_name": "dojo::world::world_contract::IWorld"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::metadata::ResourceMetadata",
+ "members": [
+ {
+ "name": "resource_id",
+ "type": "core::felt252"
+ },
+ {
+ "name": "metadata_uri",
+ "type": "core::byte_array::ByteArray"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::model::ModelIndex",
+ "variants": [
+ {
+ "name": "Keys",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Id",
+ "type": "core::felt252"
+ },
+ {
+ "name": "MemberId",
+ "type": "(core::felt252, core::felt252)"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::world::world_contract::Resource",
+ "variants": [
+ {
+ "name": "Model",
+ "type": "(core::starknet::class_hash::ClassHash, core::starknet::contract_address::ContractAddress)"
+ },
+ {
+ "name": "Contract",
+ "type": "(core::starknet::class_hash::ClassHash, core::starknet::contract_address::ContractAddress)"
+ },
+ {
+ "name": "Namespace",
+ "type": "()"
+ },
+ {
+ "name": "World",
+ "type": "()"
+ },
+ {
+ "name": "Unregistered",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IWorld",
+ "items": [
+ {
+ "type": "function",
+ "name": "metadata",
+ "inputs": [
+ {
+ "name": "resource_selector",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "dojo::model::metadata::ResourceMetadata"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "set_metadata",
+ "inputs": [
+ {
+ "name": "metadata",
+ "type": "dojo::model::metadata::ResourceMetadata"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "register_namespace",
+ "inputs": [
+ {
+ "name": "namespace",
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "register_model",
+ "inputs": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "upgrade_model",
+ "inputs": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "deploy_contract",
+ "inputs": [
+ {
+ "name": "salt",
+ "type": "core::felt252"
+ },
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "upgrade_contract",
+ "inputs": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "init_contract",
+ "inputs": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "init_calldata",
+ "type": "core::array::Span::"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "uuid",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u32"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "emit",
+ "inputs": [
+ {
+ "name": "keys",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "values",
+ "type": "core::array::Span::"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "entity",
+ "inputs": [
+ {
+ "name": "model_selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "index",
+ "type": "dojo::model::model::ModelIndex"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::array::Span::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "set_entity",
+ "inputs": [
+ {
+ "name": "model_selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "index",
+ "type": "dojo::model::model::ModelIndex"
+ },
+ {
+ "name": "values",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "delete_entity",
+ "inputs": [
+ {
+ "name": "model_selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "index",
+ "type": "dojo::model::model::ModelIndex"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "base",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "resource",
+ "inputs": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "dojo::world::world_contract::Resource"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "is_owner",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::bool"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "grant_owner",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "revoke_owner",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "is_writer",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "contract",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::bool"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "grant_writer",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "contract",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "revoke_writer",
+ "inputs": [
+ {
+ "name": "resource",
+ "type": "core::felt252"
+ },
+ {
+ "name": "contract",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradeableWorld",
+ "interface_name": "dojo::world::world_contract::IUpgradeableWorld"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::world_contract::IUpgradeableWorld",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade",
+ "inputs": [
+ {
+ "name": "new_class_hash",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "UpgradeableState",
+ "interface_name": "dojo::world::update::IUpgradeableState"
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::update::StorageUpdate",
+ "members": [
+ {
+ "name": "key",
+ "type": "core::felt252"
+ },
+ {
+ "name": "value",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::world::update::ProgramOutput",
+ "members": [
+ {
+ "name": "prev_state_root",
+ "type": "core::felt252"
+ },
+ {
+ "name": "new_state_root",
+ "type": "core::felt252"
+ },
+ {
+ "name": "block_number",
+ "type": "core::felt252"
+ },
+ {
+ "name": "block_hash",
+ "type": "core::felt252"
+ },
+ {
+ "name": "config_hash",
+ "type": "core::felt252"
+ },
+ {
+ "name": "world_da_hash",
+ "type": "core::felt252"
+ },
+ {
+ "name": "message_to_starknet_segment",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "message_to_appchain_segment",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::update::IUpgradeableState",
+ "items": [
+ {
+ "type": "function",
+ "name": "upgrade_state",
+ "inputs": [
+ {
+ "name": "new_state",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "program_output",
+ "type": "dojo::world::update::ProgramOutput"
+ },
+ {
+ "name": "program_hash",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "ConfigImpl",
+ "interface_name": "dojo::world::config::IConfig"
+ },
+ {
+ "type": "interface",
+ "name": "dojo::world::config::IConfig",
+ "items": [
+ {
+ "type": "function",
+ "name": "set_differ_program_hash",
+ "inputs": [
+ {
+ "name": "program_hash",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "set_merger_program_hash",
+ "inputs": [
+ {
+ "name": "program_hash",
+ "type": "core::felt252"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "get_differ_program_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "get_merger_program_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "set_facts_registry",
+ "inputs": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "get_facts_registry",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "constructor",
+ "name": "constructor",
+ "inputs": [
+ {
+ "name": "contract_base",
+ "type": "core::starknet::class_hash::ClassHash"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::WorldSpawned",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "creator",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::ContractDeployed",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "salt",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "namespace",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "name",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::ContractUpgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::ContractInitialized",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "init_calldata",
+ "type": "core::array::Span::",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::WorldUpgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::MetadataUpdate",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "resource",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "uri",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::NamespaceRegistered",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "namespace",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "hash",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::ModelRegistered",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "namespace",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::ModelUpgraded",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "namespace",
+ "type": "core::byte_array::ByteArray",
+ "kind": "data"
+ },
+ {
+ "name": "class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ },
+ {
+ "name": "prev_class_hash",
+ "type": "core::starknet::class_hash::ClassHash",
+ "kind": "data"
+ },
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "prev_address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::StoreSetRecord",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "table",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "entity_id",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "keys",
+ "type": "core::array::Span::",
+ "kind": "data"
+ },
+ {
+ "name": "values",
+ "type": "core::array::Span::",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::StoreUpdateRecord",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "table",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "entity_id",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "values",
+ "type": "core::array::Span::",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::StoreUpdateMember",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "table",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "entity_id",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "member_selector",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "values",
+ "type": "core::array::Span::",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::StoreDelRecord",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "table",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "entity_id",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::WriterUpdated",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "resource",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "contract",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "value",
+ "type": "core::bool",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::OwnerUpdated",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ },
+ {
+ "name": "resource",
+ "type": "core::felt252",
+ "kind": "data"
+ },
+ {
+ "name": "value",
+ "type": "core::bool",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::config::Config::DifferProgramHashUpdate",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "program_hash",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::config::Config::MergerProgramHashUpdate",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "program_hash",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::config::Config::FactsRegistryUpdate",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::config::Config::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "DifferProgramHashUpdate",
+ "type": "dojo::world::config::Config::DifferProgramHashUpdate",
+ "kind": "nested"
+ },
+ {
+ "name": "MergerProgramHashUpdate",
+ "type": "dojo::world::config::Config::MergerProgramHashUpdate",
+ "kind": "nested"
+ },
+ {
+ "name": "FactsRegistryUpdate",
+ "type": "dojo::world::config::Config::FactsRegistryUpdate",
+ "kind": "nested"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::StateUpdated",
+ "kind": "struct",
+ "members": [
+ {
+ "name": "da_hash",
+ "type": "core::felt252",
+ "kind": "data"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "dojo::world::world_contract::world::Event",
+ "kind": "enum",
+ "variants": [
+ {
+ "name": "WorldSpawned",
+ "type": "dojo::world::world_contract::world::WorldSpawned",
+ "kind": "nested"
+ },
+ {
+ "name": "ContractDeployed",
+ "type": "dojo::world::world_contract::world::ContractDeployed",
+ "kind": "nested"
+ },
+ {
+ "name": "ContractUpgraded",
+ "type": "dojo::world::world_contract::world::ContractUpgraded",
+ "kind": "nested"
+ },
+ {
+ "name": "ContractInitialized",
+ "type": "dojo::world::world_contract::world::ContractInitialized",
+ "kind": "nested"
+ },
+ {
+ "name": "WorldUpgraded",
+ "type": "dojo::world::world_contract::world::WorldUpgraded",
+ "kind": "nested"
+ },
+ {
+ "name": "MetadataUpdate",
+ "type": "dojo::world::world_contract::world::MetadataUpdate",
+ "kind": "nested"
+ },
+ {
+ "name": "NamespaceRegistered",
+ "type": "dojo::world::world_contract::world::NamespaceRegistered",
+ "kind": "nested"
+ },
+ {
+ "name": "ModelRegistered",
+ "type": "dojo::world::world_contract::world::ModelRegistered",
+ "kind": "nested"
+ },
+ {
+ "name": "ModelUpgraded",
+ "type": "dojo::world::world_contract::world::ModelUpgraded",
+ "kind": "nested"
+ },
+ {
+ "name": "StoreSetRecord",
+ "type": "dojo::world::world_contract::world::StoreSetRecord",
+ "kind": "nested"
+ },
+ {
+ "name": "StoreUpdateRecord",
+ "type": "dojo::world::world_contract::world::StoreUpdateRecord",
+ "kind": "nested"
+ },
+ {
+ "name": "StoreUpdateMember",
+ "type": "dojo::world::world_contract::world::StoreUpdateMember",
+ "kind": "nested"
+ },
+ {
+ "name": "StoreDelRecord",
+ "type": "dojo::world::world_contract::world::StoreDelRecord",
+ "kind": "nested"
+ },
+ {
+ "name": "WriterUpdated",
+ "type": "dojo::world::world_contract::world::WriterUpdated",
+ "kind": "nested"
+ },
+ {
+ "name": "OwnerUpdated",
+ "type": "dojo::world::world_contract::world::OwnerUpdated",
+ "kind": "nested"
+ },
+ {
+ "name": "ConfigEvent",
+ "type": "dojo::world::config::Config::Event",
+ "kind": "nested"
+ },
+ {
+ "name": "StateUpdated",
+ "type": "dojo::world::world_contract::world::StateUpdated",
+ "kind": "nested"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-App-36504565.json b/contracts/manifests/dev/base/abis/models/pixelaw-App-36504565.json
new file mode 100644
index 0000000..c2e9c0e
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-App-36504565.json
@@ -0,0 +1,415 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "appImpl",
+ "interface_name": "pixelaw::core::models::registry::Iapp"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::App",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "icon",
+ "type": "core::felt252"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::registry::Iapp",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::registry::App"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::registry::app::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-AppName-3b816829.json b/contracts/manifests/dev/base/abis/models/pixelaw-AppName-3b816829.json
new file mode 100644
index 0000000..87a5e61
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-AppName-3b816829.json
@@ -0,0 +1,407 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "app_nameImpl",
+ "interface_name": "pixelaw::core::models::registry::Iapp_name"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::AppName",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::registry::Iapp_name",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::registry::AppName"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::registry::app_name::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-AppUser-4eda3c52.json b/contracts/manifests/dev/base/abis/models/pixelaw-AppUser-4eda3c52.json
new file mode 100644
index 0000000..a578a2c
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-AppUser-4eda3c52.json
@@ -0,0 +1,411 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "app_userImpl",
+ "interface_name": "pixelaw::core::models::registry::Iapp_user"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::AppUser",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "action",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::registry::Iapp_user",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::registry::AppUser"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::registry::app_user::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-CoreActionsAddress-5379e1ce.json b/contracts/manifests/dev/base/abis/models/pixelaw-CoreActionsAddress-5379e1ce.json
new file mode 100644
index 0000000..512af25
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-CoreActionsAddress-5379e1ce.json
@@ -0,0 +1,407 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "core_actions_addressImpl",
+ "interface_name": "pixelaw::core::models::registry::Icore_actions_address"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::CoreActionsAddress",
+ "members": [
+ {
+ "name": "key",
+ "type": "core::felt252"
+ },
+ {
+ "name": "value",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::registry::Icore_actions_address",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::registry::CoreActionsAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::registry::core_actions_address::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-Instruction-4c7c4844.json b/contracts/manifests/dev/base/abis/models/pixelaw-Instruction-4c7c4844.json
new file mode 100644
index 0000000..a79b066
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-Instruction-4c7c4844.json
@@ -0,0 +1,411 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "instructionImpl",
+ "interface_name": "pixelaw::core::models::registry::Iinstruction"
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::registry::Instruction",
+ "members": [
+ {
+ "name": "system",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "instruction",
+ "type": "core::felt252"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::registry::Iinstruction",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::registry::Instruction"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::registry::instruction::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-Permissions-72b77307.json b/contracts/manifests/dev/base/abis/models/pixelaw-Permissions-72b77307.json
new file mode 100644
index 0000000..2e1a096
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-Permissions-72b77307.json
@@ -0,0 +1,455 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::introspect::Ty",
+ "variants": [
+ {
+ "name": "Primitive",
+ "type": "core::felt252"
+ },
+ {
+ "name": "Struct",
+ "type": "dojo::model::introspect::Struct"
+ },
+ {
+ "name": "Enum",
+ "type": "dojo::model::introspect::Enum"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "dojo::model::model::IModel",
+ "items": [
+ {
+ "type": "function",
+ "name": "name",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "tag",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::byte_array::ByteArray"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "version",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::integer::u8"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "selector",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "name_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "namespace_hash",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::felt252"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "unpacked_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "packed_size",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "core::option::Option::"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "layout",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::layout::Layout"
+ }
+ ],
+ "state_mutability": "view"
+ },
+ {
+ "type": "function",
+ "name": "schema",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "dojo::model::introspect::Ty"
+ }
+ ],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "permissionsImpl",
+ "interface_name": "pixelaw::core::models::permissions::Ipermissions"
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::permissions::Permission",
+ "members": [
+ {
+ "name": "app",
+ "type": "core::bool"
+ },
+ {
+ "name": "color",
+ "type": "core::bool"
+ },
+ {
+ "name": "owner",
+ "type": "core::bool"
+ },
+ {
+ "name": "text",
+ "type": "core::bool"
+ },
+ {
+ "name": "timestamp",
+ "type": "core::bool"
+ },
+ {
+ "name": "action",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "pixelaw::core::models::permissions::Permissions",
+ "members": [
+ {
+ "name": "allowing_app",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "allowed_app",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "permission",
+ "type": "pixelaw::core::models::permissions::Permission"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "pixelaw::core::models::permissions::Ipermissions",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "pixelaw::core::models::permissions::Permissions"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "pixelaw::core::models::permissions::permissions::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/dev/base/abis/models/pixelaw-Pixel-7e607b2f.json b/contracts/manifests/dev/base/abis/models/pixelaw-Pixel-7e607b2f.json
new file mode 100644
index 0000000..8f6c36a
--- /dev/null
+++ b/contracts/manifests/dev/base/abis/models/pixelaw-Pixel-7e607b2f.json
@@ -0,0 +1,439 @@
+[
+ {
+ "type": "impl",
+ "name": "DojoModelImpl",
+ "interface_name": "dojo::model::model::IModel"
+ },
+ {
+ "type": "struct",
+ "name": "core::byte_array::ByteArray",
+ "members": [
+ {
+ "name": "data",
+ "type": "core::array::Array::"
+ },
+ {
+ "name": "pending_word",
+ "type": "core::felt252"
+ },
+ {
+ "name": "pending_word_len",
+ "type": "core::integer::u32"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::option::Option::",
+ "variants": [
+ {
+ "name": "Some",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "None",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::layout::FieldLayout",
+ "members": [
+ {
+ "name": "selector",
+ "type": "core::felt252"
+ },
+ {
+ "name": "layout",
+ "type": "dojo::model::layout::Layout"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "dojo::model::layout::Layout",
+ "variants": [
+ {
+ "name": "Fixed",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Struct",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Tuple",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "Array",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ByteArray",
+ "type": "()"
+ },
+ {
+ "name": "Enum",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Member",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "ty",
+ "type": "dojo::model::introspect::Ty"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Struct",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::"
+ },
+ {
+ "name": "children",
+ "type": "core::array::Span::"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "core::array::Span::<(core::felt252, dojo::model::introspect::Ty)>",
+ "members": [
+ {
+ "name": "snapshot",
+ "type": "@core::array::Array::<(core::felt252, dojo::model::introspect::Ty)>"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "dojo::model::introspect::Enum",
+ "members": [
+ {
+ "name": "name",
+ "type": "core::felt252"
+ },
+ {
+ "name": "attrs",
+ "type": "core::array::Span::