;
export const FetchModelsForLeaderBoardDocument = gql`
query FetchModelsForLeaderBoard {
- mancalaAlphaMancalaGameModels {
- edges {
- node {
- game_id
- player_one
- player_two
- current_player
- winner
- status
- is_private
+ mancalaAlphaMancalaGameModels {
+ edges {
+ node {
+ game_id
+ player_one
+ player_two
+ current_player
+ winner
+ status
+ is_private
+ time_between_move
+ }
+ }
+ }
}
- }
- }
-}
`;
/**
diff --git a/client/src/pages/Lobby.tsx b/client/src/pages/Lobby.tsx
index 512737e7..614a5f8e 100644
--- a/client/src/pages/Lobby.tsx
+++ b/client/src/pages/Lobby.tsx
@@ -100,22 +100,29 @@ export default function Lobby() {
connectWallet();
};
- const filteredGames = data?.mancalaAlphaMancalaGameModels?.edges?.filter(game =>
- game?.node?.player_one === account.address || game?.node?.player_two === account.address
+ const filteredGames = data?.mancalaAlphaMancalaGameModels?.edges?.filter(
+ (game) =>
+ game?.node?.player_one === account.address ||
+ game?.node?.player_two === account.address
);
- const filteredTransactions = data?.mancalaAlphaMancalaGameModels?.edges?.reduce((acc, game, index) => {
- if (
- (game?.node?.player_one === account.address || game?.node?.player_two === account.address) &&
- data?.transactions?.edges
- ) {
- const transaction = data.transactions.edges[index];
- if (transaction) {
- acc.push(transaction as never);
+ const filteredTransactions = data?.mancalaAlphaMancalaGameModels?.edges?.reduce(
+ (acc: any[], game: any) => {
+ if (
+ (game?.node?.player_one === account.address ||
+ game?.node?.player_two === account.address) &&
+ game?.node?.entity?.executedAt
+ ) {
+ acc.push({
+ ...game.node,
+ executedAt: game?.node?.entity?.executedAt,
+ });
}
- }
- return acc;
- }, []) || [];
+ return acc;
+ },
+ []
+ ) || [];
+
return (
@@ -356,7 +363,6 @@ export default function Lobby() {
>
diff --git a/contracts/.tool-versions b/contracts/.tool-versions
index 77ab3af6..ae428cbd 100644
--- a/contracts/.tool-versions
+++ b/contracts/.tool-versions
@@ -1 +1 @@
-dojo 1.0.0-alpha.6
+dojo 1.0.0-alpha.9
diff --git a/contracts/Scarb.lock b/contracts/Scarb.lock
index 43af70a5..97a4aa89 100644
--- a/contracts/Scarb.lock
+++ b/contracts/Scarb.lock
@@ -4,7 +4,7 @@ version = 1
[[package]]
name = "dojo"
version = "1.0.0-alpha.4"
-source = "git+https://github.com/dojoengine/dojo?tag=v1.0.0-alpha.6#ede7930735c708572af8a87f81bb76354a401b3a"
+source = "git+https://github.com/dojoengine/dojo?tag=v1.0.0-alpha.9#e42ce0c220a59d75c5b08e87a81de12cfdc27a55"
dependencies = [
"dojo_plugin",
]
@@ -16,7 +16,7 @@ source = "git+https://github.com/dojoengine/dojo?rev=f15def33#f15def330c0d099e79
[[package]]
name = "mancala"
-version = "0.0.3"
+version = "0.0.4"
dependencies = [
"dojo",
]
diff --git a/contracts/Scarb.toml b/contracts/Scarb.toml
index 46313415..bd8ef834 100644
--- a/contracts/Scarb.toml
+++ b/contracts/Scarb.toml
@@ -1,7 +1,7 @@
[package]
cairo-version = "=2.7.0"
name = "mancala"
-version = "0.0.3"
+version = "0.0.4"
edition = "2024_07"
[cairo]
@@ -11,7 +11,7 @@ sierra-replace-ids = true
migrate = "sozo build && sozo migrate plan && sozo migrate apply"
[dependencies]
-dojo = { git = "https://github.com/dojoengine/dojo", tag = "v1.0.0-alpha.6" }
+dojo = { git = "https://github.com/dojoengine/dojo", tag = "v1.0.0-alpha.9" }
[[target.dojo]]
diff --git a/contracts/dojo_dev.toml b/contracts/dojo_dev.toml
index f18b8b0d..8cfbc785 100644
--- a/contracts/dojo_dev.toml
+++ b/contracts/dojo_dev.toml
@@ -4,16 +4,16 @@ description = "Mancala is a classic strategy board game built on Starknet blockc
cover_uri = "file://assets/cover.png"
icon_uri = "file://assets/icon.png"
website = "https://www.realmofra.com/"
-seed = "mancala_alpha"
+seed = "mancala_alpha_slot"
[namespace]
default = "mancala_alpha"
[env]
-rpc_url = "https://api.cartridge.gg/x/mancala-alpha-v3/katana"
-account_address = "0x6d8a4c8c7830004f53371b56773278e0ab107fc10ecffb008a33ad84c5f2175"
-private_key = "0x5d2e95d7477224d35cd3b1ffe50c1631573e21b71977605177528acfc4b8598"
-world_address = "0x586ef8fba1930bb47c973ab1cdf97b16fe3a0d434cc1829b5d24e1d7d8ec608"
+rpc_url = "https://api.cartridge.gg/x/mancala-alpha-v5/katana"
+account_address = "0x6f3c5e9f3161c9b2545d8a0a08183df56e6e9adcd04864c31e591b6c8343afe"
+private_key = "0x503b610edf67c295099d5184f75159e0e9e044940c86db2e10d07595ecc6e3c"
+world_address = "0x47cbe2fcd69fd466f3fae430bf46e0a9d0ce2775fdfac124cedc49dbc8bc788"
[world.socials]
x = "https://x.com/realm_of_ra"
diff --git a/contracts/dojo_sepolia.toml b/contracts/dojo_sepolia.toml
index 4881bbbf..ae45d12e 100644
--- a/contracts/dojo_sepolia.toml
+++ b/contracts/dojo_sepolia.toml
@@ -4,7 +4,7 @@ description = "Mancala is a classic strategy board game built on Starknet blockc
cover_uri = "file://assets/cover.png"
icon_uri = "file://assets/icon.png"
website = "https://www.realmofra.com/"
-seed = "mancala_alpha"
+seed = "mancala_alpha_sepolia"
[namespace]
default = "mancala_alpha"
@@ -13,7 +13,7 @@ default = "mancala_alpha"
rpc_url = "https://starknet-sepolia.public.blastapi.io/rpc/v0_7"
account_address = "0x02A54eFf65D55a2E7D2fC7E23eF0F0e6030dB0313b16c8F0eaD0b4a83807f6d6"
private_key = "0x0396533b7a1182ef03da483eca82e9dd2b17bee9c7fec07ac6cbbeb8bfd573cb"
-world_address = "0x7955064f111a0c0762b3010f2399292852b16dfae86abd3ab3e0545ac904dd7"
+world_address = "0x33402d31efb8d45d4868531e2f4e4b03e05c69a47b9ebcc0660145f9cdd20f3"
[world.socials]
x = "https://x.com/realm_of_ra"
diff --git a/contracts/manifests/dev/base/contracts/mancala_alpha-actions-2c0baebe.toml b/contracts/manifests/dev/base/contracts/mancala_alpha-actions-2c0baebe.toml
index 09bf1990..c5e11a46 100644
--- a/contracts/manifests/dev/base/contracts/mancala_alpha-actions-2c0baebe.toml
+++ b/contracts/manifests/dev/base/contracts/mancala_alpha-actions-2c0baebe.toml
@@ -1,6 +1,6 @@
kind = "DojoContract"
-class_hash = "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314"
-original_class_hash = "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314"
+class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
+original_class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
base_class_hash = "0x0"
abi = "manifests/dev/base/abis/contracts/mancala_alpha-actions-2c0baebe.json"
reads = []
diff --git a/contracts/manifests/dev/base/dojo-world.toml b/contracts/manifests/dev/base/dojo-world.toml
index 6f56ceed..2b3b1409 100644
--- a/contracts/manifests/dev/base/dojo-world.toml
+++ b/contracts/manifests/dev/base/dojo-world.toml
@@ -1,6 +1,6 @@
kind = "Class"
-class_hash = "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2"
-original_class_hash = "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2"
+class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
+original_class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
abi = "manifests/dev/base/abis/dojo-world.json"
tag = "dojo-world"
manifest_name = "dojo-world"
diff --git a/contracts/manifests/dev/base/models/mancala_alpha-GameId-4205bbb7.toml b/contracts/manifests/dev/base/models/mancala_alpha-GameId-4205bbb7.toml
index 2532f540..469b49fb 100644
--- a/contracts/manifests/dev/base/models/mancala_alpha-GameId-4205bbb7.toml
+++ b/contracts/manifests/dev/base/models/mancala_alpha-GameId-4205bbb7.toml
@@ -3,6 +3,7 @@ class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
original_class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
abi = "manifests/dev/base/abis/models/mancala_alpha-GameId-4205bbb7.json"
tag = "mancala_alpha-GameId"
+qualified_path = "mancala::models::mancala_game::game_id"
manifest_name = "mancala_alpha-GameId-4205bbb7"
[[members]]
diff --git a/contracts/manifests/dev/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml b/contracts/manifests/dev/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml
index 52984893..4d4dc70e 100644
--- a/contracts/manifests/dev/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml
+++ b/contracts/manifests/dev/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml
@@ -3,6 +3,7 @@ class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
original_class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
abi = "manifests/dev/base/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json"
tag = "mancala_alpha-GamePlayer"
+qualified_path = "mancala::models::player::game_player"
manifest_name = "mancala_alpha-GamePlayer-4fe4cbef"
[[members]]
diff --git a/contracts/manifests/dev/base/models/mancala_alpha-MancalaGame-628bb438.toml b/contracts/manifests/dev/base/models/mancala_alpha-MancalaGame-628bb438.toml
index 24334acc..a5e9336c 100644
--- a/contracts/manifests/dev/base/models/mancala_alpha-MancalaGame-628bb438.toml
+++ b/contracts/manifests/dev/base/models/mancala_alpha-MancalaGame-628bb438.toml
@@ -3,6 +3,7 @@ class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
original_class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
abi = "manifests/dev/base/abis/models/mancala_alpha-MancalaGame-628bb438.json"
tag = "mancala_alpha-MancalaGame"
+qualified_path = "mancala::models::mancala_game::mancala_game"
manifest_name = "mancala_alpha-MancalaGame-628bb438"
[[members]]
diff --git a/contracts/manifests/dev/deployment/manifest.json b/contracts/manifests/dev/deployment/manifest.json
index af719d64..410a0d7c 100644
--- a/contracts/manifests/dev/deployment/manifest.json
+++ b/contracts/manifests/dev/deployment/manifest.json
@@ -1,8 +1,8 @@
{
"world": {
"kind": "WorldContract",
- "class_hash": "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2",
- "original_class_hash": "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2",
+ "class_hash": "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597",
+ "original_class_hash": "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597",
"abi": [
{
"type": "impl",
@@ -1229,13 +1229,13 @@
]
}
],
- "address": "0x586ef8fba1930bb47c973ab1cdf97b16fe3a0d434cc1829b5d24e1d7d8ec608",
- "transaction_hash": "0x1a6d1ed8a57f6842fe9600e1aba151f44f8866f0cabcc770df9fc5f101e37db",
+ "address": "0x47cbe2fcd69fd466f3fae430bf46e0a9d0ce2775fdfac124cedc49dbc8bc788",
+ "transaction_hash": "0x3ff91b455301a3a579fa32527ad49a87f1756a9a8dfd42275ea6f692b8368c9",
"block_number": 3,
- "seed": "mancala_alpha",
+ "seed": "mancala_alpha_slot",
"metadata": {
"profile_name": "dev",
- "rpc_url": "https://api.cartridge.gg/x/mancala-alpha-v3/katana"
+ "rpc_url": "https://api.cartridge.gg/x/mancala-alpha-v5/katana"
},
"manifest_name": "dojo-world"
},
@@ -1250,9 +1250,9 @@
"contracts": [
{
"kind": "DojoContract",
- "address": "0x4c4869d1067625074edd5f2c68774831ee26261423b8a17fc71f533e7b03f5c",
- "class_hash": "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314",
- "original_class_hash": "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314",
+ "address": "0x66ebcab6f4ae40dba02ac86ac2ebba2f5b459142cbf095d65e5294e4dd7f465",
+ "class_hash": "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f",
+ "original_class_hash": "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f",
"base_class_hash": "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2",
"abi": [
{
@@ -2156,6 +2156,7 @@
}
],
"tag": "mancala_alpha-GameId",
+ "qualified_path": "mancala::models::mancala_game::game_id",
"manifest_name": "mancala_alpha-GameId-4205bbb7"
},
{
@@ -2668,6 +2669,7 @@
}
],
"tag": "mancala_alpha-GamePlayer",
+ "qualified_path": "mancala::models::player::game_player",
"manifest_name": "mancala_alpha-GamePlayer-4fe4cbef"
},
{
@@ -3197,6 +3199,7 @@
}
],
"tag": "mancala_alpha-MancalaGame",
+ "qualified_path": "mancala::models::mancala_game::mancala_game",
"manifest_name": "mancala_alpha-MancalaGame-628bb438"
}
]
diff --git a/contracts/manifests/dev/deployment/manifest.toml b/contracts/manifests/dev/deployment/manifest.toml
index 3ffdd5de..bf0b64ef 100644
--- a/contracts/manifests/dev/deployment/manifest.toml
+++ b/contracts/manifests/dev/deployment/manifest.toml
@@ -1,17 +1,17 @@
[world]
kind = "WorldContract"
-class_hash = "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2"
-original_class_hash = "0x458d0ce5b14a4844092bdb62050f462d53362304a13febbac6d973691d61be2"
+class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
+original_class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
abi = "manifests/dev/deployment/abis/dojo-world.json"
-address = "0x586ef8fba1930bb47c973ab1cdf97b16fe3a0d434cc1829b5d24e1d7d8ec608"
-transaction_hash = "0x1a6d1ed8a57f6842fe9600e1aba151f44f8866f0cabcc770df9fc5f101e37db"
+address = "0x47cbe2fcd69fd466f3fae430bf46e0a9d0ce2775fdfac124cedc49dbc8bc788"
+transaction_hash = "0x3ff91b455301a3a579fa32527ad49a87f1756a9a8dfd42275ea6f692b8368c9"
block_number = 3
-seed = "mancala_alpha"
+seed = "mancala_alpha_slot"
manifest_name = "dojo-world"
[world.metadata]
profile_name = "dev"
-rpc_url = "https://api.cartridge.gg/x/mancala-alpha-v3/katana"
+rpc_url = "https://api.cartridge.gg/x/mancala-alpha-v5/katana"
[base]
kind = "Class"
@@ -23,9 +23,9 @@ manifest_name = "dojo-base"
[[contracts]]
kind = "DojoContract"
-address = "0x4c4869d1067625074edd5f2c68774831ee26261423b8a17fc71f533e7b03f5c"
-class_hash = "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314"
-original_class_hash = "0x55dc74c6636df9de2105e32d762287bb5aaf561b491728d07fabc55eb345314"
+address = "0x66ebcab6f4ae40dba02ac86ac2ebba2f5b459142cbf095d65e5294e4dd7f465"
+class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
+original_class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
base_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2"
abi = "manifests/dev/deployment/abis/contracts/mancala_alpha-actions-2c0baebe.json"
reads = []
@@ -47,6 +47,7 @@ class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
original_class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
abi = "manifests/dev/deployment/abis/models/mancala_alpha-GameId-4205bbb7.json"
tag = "mancala_alpha-GameId"
+qualified_path = "mancala::models::mancala_game::game_id"
manifest_name = "mancala_alpha-GameId-4205bbb7"
[[models.members]]
@@ -65,6 +66,7 @@ class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
original_class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
abi = "manifests/dev/deployment/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json"
tag = "mancala_alpha-GamePlayer"
+qualified_path = "mancala::models::player::game_player"
manifest_name = "mancala_alpha-GamePlayer-4fe4cbef"
[[models.members]]
@@ -123,6 +125,7 @@ class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
original_class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
abi = "manifests/dev/deployment/abis/models/mancala_alpha-MancalaGame-628bb438.json"
tag = "mancala_alpha-MancalaGame"
+qualified_path = "mancala::models::mancala_game::mancala_game"
manifest_name = "mancala_alpha-MancalaGame-628bb438"
[[models.members]]
diff --git a/contracts/manifests/sepolia/base/abis/contracts/mancala_alpha-actions-2c0baebe.json b/contracts/manifests/sepolia/base/abis/contracts/mancala_alpha-actions-2c0baebe.json
new file mode 100644
index 00000000..a74cb8f7
--- /dev/null
+++ b/contracts/manifests/sepolia/base/abis/contracts/mancala_alpha-actions-2c0baebe.json
@@ -0,0 +1,461 @@
+[
+ {
+ "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": "mancala::systems::actions::IActions"
+ },
+ {
+ "type": "enum",
+ "name": "mancala::models::mancala_game::GameStatus",
+ "variants": [
+ {
+ "name": "Pending",
+ "type": "()"
+ },
+ {
+ "name": "InProgress",
+ "type": "()"
+ },
+ {
+ "name": "Finished",
+ "type": "()"
+ },
+ {
+ "name": "Forfeited",
+ "type": "()"
+ },
+ {
+ "name": "TimeOut",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::MancalaGame",
+ "members": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_one",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "player_two",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "current_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "last_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "time_between_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "winner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "status",
+ "type": "mancala::models::mancala_game::GameStatus"
+ },
+ {
+ "name": "is_private",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::systems::actions::IActions",
+ "items": [
+ {
+ "type": "function",
+ "name": "create_initial_game_id",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "create_game",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "join_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_two_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "create_private_game",
+ "inputs": [
+ {
+ "name": "player_two_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "move",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "selected_pit",
+ "type": "core::integer::u8"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "(core::starknet::contract_address::ContractAddress, mancala::models::mancala_game::GameStatus)"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "time_out",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "get_score",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "(core::integer::u8, core::integer::u8)"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "is_game_finished",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::bool"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "forfeited",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "request_restart_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "restart_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "private",
+ "type": "core::bool"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "IDojoInitImpl",
+ "interface_name": "mancala::systems::actions::actions::IDojoInit"
+ },
+ {
+ "type": "interface",
+ "name": "mancala::systems::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": "mancala::systems::actions::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/sepolia/base/abis/dojo-base.json b/contracts/manifests/sepolia/base/abis/dojo-base.json
new file mode 100644
index 00000000..48004642
--- /dev/null
+++ b/contracts/manifests/sepolia/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/sepolia/base/abis/dojo-world.json b/contracts/manifests/sepolia/base/abis/dojo-world.json
new file mode 100644
index 00000000..897b4d95
--- /dev/null
+++ b/contracts/manifests/sepolia/base/abis/dojo-world.json
@@ -0,0 +1,1226 @@
+[
+ {
+ "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": "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/sepolia/base/abis/models/mancala_alpha-GameId-4205bbb7.json b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-GameId-4205bbb7.json
new file mode 100644
index 00000000..2e3a28a5
--- /dev/null
+++ b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-GameId-4205bbb7.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": "game_idImpl",
+ "interface_name": "mancala::models::mancala_game::Igame_id"
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::GameId",
+ "members": [
+ {
+ "name": "id",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::mancala_game::Igame_id",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::mancala_game::GameId"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::mancala_game::game_id::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/base/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json
new file mode 100644
index 00000000..442f91df
--- /dev/null
+++ b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json
@@ -0,0 +1,453 @@
+[
+ {
+ "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": "game_playerImpl",
+ "interface_name": "mancala::models::player::Igame_player"
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::player::GamePlayer",
+ "members": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "pit1",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit2",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit3",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit4",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit5",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit6",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "mancala",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "restart_requested",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::player::Igame_player",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::player::GamePlayer"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::player::game_player::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/base/abis/models/mancala_alpha-MancalaGame-628bb438.json b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-MancalaGame-628bb438.json
new file mode 100644
index 00000000..efcf7daf
--- /dev/null
+++ b/contracts/manifests/sepolia/base/abis/models/mancala_alpha-MancalaGame-628bb438.json
@@ -0,0 +1,475 @@
+[
+ {
+ "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": "mancala_gameImpl",
+ "interface_name": "mancala::models::mancala_game::Imancala_game"
+ },
+ {
+ "type": "enum",
+ "name": "mancala::models::mancala_game::GameStatus",
+ "variants": [
+ {
+ "name": "Pending",
+ "type": "()"
+ },
+ {
+ "name": "InProgress",
+ "type": "()"
+ },
+ {
+ "name": "Finished",
+ "type": "()"
+ },
+ {
+ "name": "Forfeited",
+ "type": "()"
+ },
+ {
+ "name": "TimeOut",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::MancalaGame",
+ "members": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_one",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "player_two",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "current_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "last_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "time_between_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "winner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "status",
+ "type": "mancala::models::mancala_game::GameStatus"
+ },
+ {
+ "name": "is_private",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::mancala_game::Imancala_game",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::mancala_game::mancala_game::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/base/contracts/mancala_alpha-actions-2c0baebe.toml b/contracts/manifests/sepolia/base/contracts/mancala_alpha-actions-2c0baebe.toml
new file mode 100644
index 00000000..5df12bbc
--- /dev/null
+++ b/contracts/manifests/sepolia/base/contracts/mancala_alpha-actions-2c0baebe.toml
@@ -0,0 +1,17 @@
+kind = "DojoContract"
+class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
+original_class_hash = "0x64f1bf03ed832104e2f76ea6a35ea1f74dc6b91989170ad7c2127338420691f"
+base_class_hash = "0x0"
+abi = "manifests/sepolia/base/abis/contracts/mancala_alpha-actions-2c0baebe.json"
+reads = []
+writes = []
+init_calldata = []
+tag = "mancala_alpha-actions"
+systems = [
+ "create_initial_game_id",
+ "join_game",
+ "time_out",
+ "forfeited",
+ "request_restart_game",
+]
+manifest_name = "mancala_alpha-actions-2c0baebe"
diff --git a/contracts/manifests/sepolia/base/dojo-base.toml b/contracts/manifests/sepolia/base/dojo-base.toml
new file mode 100644
index 00000000..336ad039
--- /dev/null
+++ b/contracts/manifests/sepolia/base/dojo-base.toml
@@ -0,0 +1,6 @@
+kind = "Class"
+class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2"
+original_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2"
+abi = "manifests/sepolia/base/abis/dojo-base.json"
+tag = "dojo-base"
+manifest_name = "dojo-base"
diff --git a/contracts/manifests/sepolia/base/dojo-world.toml b/contracts/manifests/sepolia/base/dojo-world.toml
new file mode 100644
index 00000000..951e6e92
--- /dev/null
+++ b/contracts/manifests/sepolia/base/dojo-world.toml
@@ -0,0 +1,6 @@
+kind = "Class"
+class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
+original_class_hash = "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597"
+abi = "manifests/sepolia/base/abis/dojo-world.json"
+tag = "dojo-world"
+manifest_name = "dojo-world"
diff --git a/contracts/manifests/sepolia/base/models/mancala_alpha-GameId-4205bbb7.toml b/contracts/manifests/sepolia/base/models/mancala_alpha-GameId-4205bbb7.toml
new file mode 100644
index 00000000..cee8b155
--- /dev/null
+++ b/contracts/manifests/sepolia/base/models/mancala_alpha-GameId-4205bbb7.toml
@@ -0,0 +1,17 @@
+kind = "DojoModel"
+class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
+original_class_hash = "0x1f4d24fdabfc8bf320d1ca5c2283576c242be48a84e1e304dd0ea1ccde934f6"
+abi = "manifests/sepolia/base/abis/models/mancala_alpha-GameId-4205bbb7.json"
+tag = "mancala_alpha-GameId"
+qualified_path = "mancala::models::mancala_game::game_id"
+manifest_name = "mancala_alpha-GameId-4205bbb7"
+
+[[members]]
+name = "id"
+type = "u32"
+key = true
+
+[[members]]
+name = "game_id"
+type = "u128"
+key = false
diff --git a/contracts/manifests/sepolia/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml b/contracts/manifests/sepolia/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml
new file mode 100644
index 00000000..a7e2611c
--- /dev/null
+++ b/contracts/manifests/sepolia/base/models/mancala_alpha-GamePlayer-4fe4cbef.toml
@@ -0,0 +1,57 @@
+kind = "DojoModel"
+class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
+original_class_hash = "0x11694727b022fcc1b98d29b8e62ec4f377643b08f858d202c9f0df3eb1882ef"
+abi = "manifests/sepolia/base/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json"
+tag = "mancala_alpha-GamePlayer"
+qualified_path = "mancala::models::player::game_player"
+manifest_name = "mancala_alpha-GamePlayer-4fe4cbef"
+
+[[members]]
+name = "address"
+type = "ContractAddress"
+key = true
+
+[[members]]
+name = "game_id"
+type = "u128"
+key = true
+
+[[members]]
+name = "pit1"
+type = "u8"
+key = false
+
+[[members]]
+name = "pit2"
+type = "u8"
+key = false
+
+[[members]]
+name = "pit3"
+type = "u8"
+key = false
+
+[[members]]
+name = "pit4"
+type = "u8"
+key = false
+
+[[members]]
+name = "pit5"
+type = "u8"
+key = false
+
+[[members]]
+name = "pit6"
+type = "u8"
+key = false
+
+[[members]]
+name = "mancala"
+type = "u8"
+key = false
+
+[[members]]
+name = "restart_requested"
+type = "bool"
+key = false
diff --git a/contracts/manifests/sepolia/base/models/mancala_alpha-MancalaGame-628bb438.toml b/contracts/manifests/sepolia/base/models/mancala_alpha-MancalaGame-628bb438.toml
new file mode 100644
index 00000000..3aac2d2f
--- /dev/null
+++ b/contracts/manifests/sepolia/base/models/mancala_alpha-MancalaGame-628bb438.toml
@@ -0,0 +1,52 @@
+kind = "DojoModel"
+class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
+original_class_hash = "0x73f3710ff3124f6c8e376f78e9404f7256557df6c0c79876f09bd4c33e8f3d2"
+abi = "manifests/sepolia/base/abis/models/mancala_alpha-MancalaGame-628bb438.json"
+tag = "mancala_alpha-MancalaGame"
+qualified_path = "mancala::models::mancala_game::mancala_game"
+manifest_name = "mancala_alpha-MancalaGame-628bb438"
+
+[[members]]
+name = "game_id"
+type = "u128"
+key = true
+
+[[members]]
+name = "player_one"
+type = "ContractAddress"
+key = false
+
+[[members]]
+name = "player_two"
+type = "ContractAddress"
+key = false
+
+[[members]]
+name = "current_player"
+type = "ContractAddress"
+key = false
+
+[[members]]
+name = "last_move"
+type = "u64"
+key = false
+
+[[members]]
+name = "time_between_move"
+type = "u64"
+key = false
+
+[[members]]
+name = "winner"
+type = "ContractAddress"
+key = false
+
+[[members]]
+name = "status"
+type = "GameStatus"
+key = false
+
+[[members]]
+name = "is_private"
+type = "bool"
+key = false
diff --git a/contracts/manifests/sepolia/deployment/abis/contracts/mancala_alpha-actions-2c0baebe.json b/contracts/manifests/sepolia/deployment/abis/contracts/mancala_alpha-actions-2c0baebe.json
new file mode 100644
index 00000000..a74cb8f7
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/abis/contracts/mancala_alpha-actions-2c0baebe.json
@@ -0,0 +1,461 @@
+[
+ {
+ "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": "mancala::systems::actions::IActions"
+ },
+ {
+ "type": "enum",
+ "name": "mancala::models::mancala_game::GameStatus",
+ "variants": [
+ {
+ "name": "Pending",
+ "type": "()"
+ },
+ {
+ "name": "InProgress",
+ "type": "()"
+ },
+ {
+ "name": "Finished",
+ "type": "()"
+ },
+ {
+ "name": "Forfeited",
+ "type": "()"
+ },
+ {
+ "name": "TimeOut",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::MancalaGame",
+ "members": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_one",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "player_two",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "current_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "last_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "time_between_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "winner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "status",
+ "type": "mancala::models::mancala_game::GameStatus"
+ },
+ {
+ "name": "is_private",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::systems::actions::IActions",
+ "items": [
+ {
+ "type": "function",
+ "name": "create_initial_game_id",
+ "inputs": [],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "create_game",
+ "inputs": [],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "join_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_two_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "create_private_game",
+ "inputs": [
+ {
+ "name": "player_two_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "move",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "selected_pit",
+ "type": "core::integer::u8"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "(core::starknet::contract_address::ContractAddress, mancala::models::mancala_game::GameStatus)"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "time_out",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "get_score",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "(core::integer::u8, core::integer::u8)"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "is_game_finished",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "core::bool"
+ }
+ ],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "forfeited",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "request_restart_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "external"
+ },
+ {
+ "type": "function",
+ "name": "restart_game",
+ "inputs": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "private",
+ "type": "core::bool"
+ }
+ ],
+ "outputs": [
+ {
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "state_mutability": "external"
+ }
+ ]
+ },
+ {
+ "type": "impl",
+ "name": "IDojoInitImpl",
+ "interface_name": "mancala::systems::actions::actions::IDojoInit"
+ },
+ {
+ "type": "interface",
+ "name": "mancala::systems::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": "mancala::systems::actions::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/sepolia/deployment/abis/dojo-base.json b/contracts/manifests/sepolia/deployment/abis/dojo-base.json
new file mode 100644
index 00000000..48004642
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/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/sepolia/deployment/abis/dojo-world.json b/contracts/manifests/sepolia/deployment/abis/dojo-world.json
new file mode 100644
index 00000000..897b4d95
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/abis/dojo-world.json
@@ -0,0 +1,1226 @@
+[
+ {
+ "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": "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/sepolia/deployment/abis/models/mancala_alpha-GameId-4205bbb7.json b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-GameId-4205bbb7.json
new file mode 100644
index 00000000..2e3a28a5
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-GameId-4205bbb7.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": "game_idImpl",
+ "interface_name": "mancala::models::mancala_game::Igame_id"
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::GameId",
+ "members": [
+ {
+ "name": "id",
+ "type": "core::integer::u32"
+ },
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::mancala_game::Igame_id",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::mancala_game::GameId"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::mancala_game::game_id::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json
new file mode 100644
index 00000000..442f91df
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-GamePlayer-4fe4cbef.json
@@ -0,0 +1,453 @@
+[
+ {
+ "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": "game_playerImpl",
+ "interface_name": "mancala::models::player::Igame_player"
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::player::GamePlayer",
+ "members": [
+ {
+ "name": "address",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "pit1",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit2",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit3",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit4",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit5",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "pit6",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "mancala",
+ "type": "core::integer::u8"
+ },
+ {
+ "name": "restart_requested",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::player::Igame_player",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::player::GamePlayer"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::player::game_player::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-MancalaGame-628bb438.json b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-MancalaGame-628bb438.json
new file mode 100644
index 00000000..efcf7daf
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/abis/models/mancala_alpha-MancalaGame-628bb438.json
@@ -0,0 +1,475 @@
+[
+ {
+ "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": "mancala_gameImpl",
+ "interface_name": "mancala::models::mancala_game::Imancala_game"
+ },
+ {
+ "type": "enum",
+ "name": "mancala::models::mancala_game::GameStatus",
+ "variants": [
+ {
+ "name": "Pending",
+ "type": "()"
+ },
+ {
+ "name": "InProgress",
+ "type": "()"
+ },
+ {
+ "name": "Finished",
+ "type": "()"
+ },
+ {
+ "name": "Forfeited",
+ "type": "()"
+ },
+ {
+ "name": "TimeOut",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "enum",
+ "name": "core::bool",
+ "variants": [
+ {
+ "name": "False",
+ "type": "()"
+ },
+ {
+ "name": "True",
+ "type": "()"
+ }
+ ]
+ },
+ {
+ "type": "struct",
+ "name": "mancala::models::mancala_game::MancalaGame",
+ "members": [
+ {
+ "name": "game_id",
+ "type": "core::integer::u128"
+ },
+ {
+ "name": "player_one",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "player_two",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "current_player",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "last_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "time_between_move",
+ "type": "core::integer::u64"
+ },
+ {
+ "name": "winner",
+ "type": "core::starknet::contract_address::ContractAddress"
+ },
+ {
+ "name": "status",
+ "type": "mancala::models::mancala_game::GameStatus"
+ },
+ {
+ "name": "is_private",
+ "type": "core::bool"
+ }
+ ]
+ },
+ {
+ "type": "interface",
+ "name": "mancala::models::mancala_game::Imancala_game",
+ "items": [
+ {
+ "type": "function",
+ "name": "ensure_abi",
+ "inputs": [
+ {
+ "name": "model",
+ "type": "mancala::models::mancala_game::MancalaGame"
+ }
+ ],
+ "outputs": [],
+ "state_mutability": "view"
+ }
+ ]
+ },
+ {
+ "type": "event",
+ "name": "mancala::models::mancala_game::mancala_game::Event",
+ "kind": "enum",
+ "variants": []
+ }
+]
\ No newline at end of file
diff --git a/contracts/manifests/sepolia/deployment/manifest.json b/contracts/manifests/sepolia/deployment/manifest.json
new file mode 100644
index 00000000..aa904186
--- /dev/null
+++ b/contracts/manifests/sepolia/deployment/manifest.json
@@ -0,0 +1,3204 @@
+{
+ "world": {
+ "kind": "WorldContract",
+ "class_hash": "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597",
+ "original_class_hash": "0xa349b743d361ce4567361475a89b84a386bb383448c6926954e5fe0b525597",
+ "abi": [
+ {
+ "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": "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::