From 8357db0030f397ea51a93dd9624a49f97e8f6d30 Mon Sep 17 00:00:00 2001 From: notV4l Date: Thu, 2 May 2024 13:36:20 +0200 Subject: [PATCH] v0.7.0-alpha.0 --- Scarb.lock | 4 +- Scarb.toml | 35 +- scripts/copy_manifest.sh | 1 - scripts/default_auth.sh | 23 +- scripts/test.sh | 12 - src/_mocks/paper_mock.cairo | 30 +- web/src/components/layout/Header.tsx | 7 +- web/src/dojo/abis/paperAbi.ts | 14 +- web/src/manifests/dev/manifest.json | 18 +- web/src/manifests/ryosepolia/manifest.json | 7389 ++++++++++++++++++++ web/src/pages/game/history.tsx | 2 +- 11 files changed, 7455 insertions(+), 80 deletions(-) delete mode 100755 scripts/test.sh create mode 100644 web/src/manifests/ryosepolia/manifest.json diff --git a/Scarb.lock b/Scarb.lock index 3ed0def4b..52144efba 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -4,7 +4,7 @@ version = 1 [[package]] name = "dojo" version = "0.6.0" -source = "git+https://github.com/dojoengine/dojo?tag=v0.6.1-alpha.1#9a814ad59b3855bf8f3bbdeefe13c407cf4edf87" +source = "git+https://github.com/dojoengine/dojo?tag=v0.7.0-alpha.0#2b2dc1bf35e4568bda7341f17267a931b49148b0" dependencies = [ "dojo_plugin", ] @@ -25,7 +25,7 @@ dependencies = [ [[package]] name = "token" version = "0.0.0" -source = "git+https://github.com/notV4l/origami?branch=erc_without_events#87f4b046791616d40cca168b821682bf14df29bb" +source = "git+https://github.com/dojoengine/origami?tag=v0.7.0-alpha.0#53c06b6a32d0d715a265b2a5d290f333b8c000f9" dependencies = [ "dojo", ] diff --git a/Scarb.toml b/Scarb.toml index e3be8a567..12f24708f 100644 --- a/Scarb.toml +++ b/Scarb.toml @@ -1,5 +1,5 @@ [package] -cairo-version = "2.4.0" +cairo-version = "2.5.4" name = "rollyourown" version = "0.1.0" @@ -7,17 +7,12 @@ version = "0.1.0" sierra-replace-ids = true [dependencies] -dojo = {git = "https://github.com/dojoengine/dojo", tag = "v0.6.1-alpha.1"} -# dojo = {git = "https://github.com/dojoengine/dojo", tag = "v0.6.1-alpha.1-alpha.13"} -# token = { git = "https://github.com/dojoengine/origami", tag = "v0.6.1-alpha.1-alpha.10" } -token = { git = "https://github.com/notV4l/origami", branch = "erc_without_events" } +dojo = {git = "https://github.com/dojoengine/dojo", tag = "v0.7.0-alpha.0"} +token = { git = "https://github.com/dojoengine/origami", tag = "v0.7.0-alpha.0"} [scripts] -aaa="./scripts/test.sh" -bbb="AAA=aaaValue && scarb run aaa $AAA" - # katana = "katana --disable-fee --invoke-max-steps 2000000" build = "sozo build && scarb run gendojo" @@ -32,20 +27,23 @@ auth = "./scripts/default_auth.sh" migrate = "PROFILE=dev && sozo -P $PROFILE build && sozo -P $PROFILE migrate apply && scarb run copy_manifest $PROFILE && scarb run gendojo $PROFILE && scarb run auth $PROFILE" migrate_ryo420 = "PROFILE=ryo420 && sozo -P $PROFILE build && sozo -P $PROFILE migrate apply && scarb run copy_manifest $PROFILE && scarb run gendojo $PROFILE && scarb run auth $PROFILE" # migrate_ryo421 = "PROFILE=ryo421 && sozo -P $PROFILE build && sozo -P $PROFILE migrate apply && scarb run copy_manifest $PROFILE && scarb run gendojo $PROFILE && scarb run auth $PROFILE" -migrate_sepolia = "PROFILE=ryosepolia && sozo -P $PROFILE build && sozo -P $PROFILE migrate apply && scarb run copy_manifest $PROFILE && scarb run gendojo $PROFILE && scarb run auth $PROFILE" +migrateplan_sepolia = "PROFILE=ryosepolia && sozo -P $PROFILE build && sozo -P $PROFILE migrate plan --name ryo000" +migrate_sepolia = "PROFILE=ryosepolia && sozo -P $PROFILE build && sozo -P $PROFILE migrate apply --name ryo000 --fee-estimate-multiplier 5 && scarb run copy_manifest $PROFILE" +auth_sepolia = "PROFILE=ryosepolia && scarb run auth $PROFILE" # slot ryo420 -slot_ryo420_katana="slot d create ryo420 katana --seed 420 --version v0.6.1-alpha.1 --chain-id KATANA_SLOT_420 --disable-fee true --invoke-max-steps 2000000" -slot_ryo420_torii="slot d create ryo420 torii --rpc https://api.cartridge.gg/x/ryo420/katana -s 0 --version v0.6.1-alpha.1 --world 0x3bf84ccc82282acd4c8afbb843c9e864bf1e0770fba607595104202b938b7a4" +slot_ryo420_katana="slot d create ryo420 katana --seed 420 --version v0.7.0-alpha.0 --chain-id KATANA_SLOT_420 --disable-fee true --invoke-max-steps 2000000" +slot_ryo420_torii="slot d create ryo420 torii --rpc https://api.cartridge.gg/x/ryo420/katana -s 0 --version v0.7.0-alpha.0 --world 0x3bf84ccc82282acd4c8afbb843c9e864bf1e0770fba607595104202b938b7a4" # # slot ryo421 -# slot_ryo421_katana="slot d create ryo421 katana --seed 421 --version v0.6.1-alpha.1 --chain-id KATANA_SLOT_421 --disable-fee true --invoke-max-steps 2000000" -# slot_ryo421_torii="slot d create ryo421 torii --rpc https://api.cartridge.gg/x/ryo421/katana -s 0 --version v0.6.1-alpha.1 --world 0x3bf84ccc82282acd4c8afbb843c9e864bf1e0770fba607595104202b938b7a4" +# slot_ryo421_katana="slot d create ryo421 katana --seed 421 --version v0.7.0-alpha.0 --chain-id KATANA_SLOT_421 --disable-fee true --invoke-max-steps 2000000" +# slot_ryo421_torii="slot d create ryo421 torii --rpc https://api.cartridge.gg/x/ryo421/katana -s 0 --version v0.7.0-alpha.0 --world 0x3bf84ccc82282acd4c8afbb843c9e864bf1e0770fba607595104202b938b7a4" # slot ryo_sepolia -slot_ryosepolia_torii="slot d create ryosepolia torii --rpc https://api.cartridge.gg/x/ryo421/katana -s 0 --version v0.6.1-alpha.1 --world 0x3bf84ccc82282acd4c8afbb843c9e864bf1e0770fba607595104202b938b7a4" - +slot_ryosepolia_torii="slot d create ryosepolia torii --rpc https://api.cartridge.gg/rpc/starknet-sepolia -s 63200 --version v0.7.0-alpha.0 --world 0x45d3b72e3c6c85c38d43798b9751817f14fac4b14c3645480683f8fae1c6464" +# slot_ryosepolia_torii="slot d create ryosepolia torii --rpc https://free-rpc.nethermind.io/sepolia-juno -s 63260 --version v0.7.0-alpha.0 --world 0x45d3b72e3c6c85c38d43798b9751817f14fac4b14c3645480683f8fae1c6464" + [profile.dev.tool.dojo.env] rpc_url = "http://localhost:5050" @@ -63,10 +61,11 @@ private_key = "0x2f9a2435c3195dfa3c2f8290de5347e0da48193fd6d6d80320f0201a0964b8c # private_key = "0x784b1dd14d761c414c6394fccca3ca1d1b0cac187e88122e4b06378f9e8c515" [profile.ryosepolia.tool.dojo.env] +# world_address= "0x45d3b72e3c6c85c38d43798b9751817f14fac4b14c3645480683f8fae1c6464" rpc_url = "https://api.cartridge.gg/rpc/starknet-sepolia" -# account_address = "0x7d806fc9478c73c60fac37c27888771bdb3092c21eb93452277e7673954d034" -# private_key = "0x784b1dd14d761c414c6394fccca3ca1d1b0cac187e88122e4b06378f9e8c515" - +account_address = "0x3677d8443f74dcc6cd23c4b3f217256c70f084ee7edc4ddc431af2ce91eb936" +keystore_path = "/Users/boo/sozo_acc" +# password = "sozo_acc" # [profile.prod.tool.dojo.env] # rpc_url = "https://api.cartridge.gg/x/ryo420/katana" diff --git a/scripts/copy_manifest.sh b/scripts/copy_manifest.sh index f459cd3ba..7c3ee5dde 100755 --- a/scripts/copy_manifest.sh +++ b/scripts/copy_manifest.sh @@ -7,7 +7,6 @@ else export PROFILE="dev" fi -# TODO use ./target/[profile] mkdir -p ./web/src/manifests/$PROFILE cp ./manifests/$PROFILE/manifest.json ./web/src/manifests/$PROFILE/manifest.json diff --git a/scripts/default_auth.sh b/scripts/default_auth.sh index 5a4837cf6..5542df5a9 100755 --- a/scripts/default_auth.sh +++ b/scripts/default_auth.sh @@ -8,17 +8,21 @@ else export PROFILE="dev" fi -TX_SLEEP=0.5 +TX_SLEEP=1 -export WORLD_ADDRESS=$(cat ./manifests/dev/manifest.json | jq -r '.world.address') +export WORLD_ADDRESS=$(cat ./manifests/$PROFILE/manifest.json | jq -r '.world.address') -export RYO_ADDRESS=$(cat ./manifests/dev/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::systems::ryo::ryo" ).address') -export CONFIG_ADDRESS=$(cat ./manifests/dev/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::config::config::config" ).address') -export GAME_ADDRESS=$(cat ./manifests/dev/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::systems::game::game" ).address') +export RYO_ADDRESS=$(cat ./manifests/$PROFILE/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::systems::ryo::ryo" ).address') +export CONFIG_ADDRESS=$(cat ./manifests/$PROFILE/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::config::config::config" ).address') +export GAME_ADDRESS=$(cat ./manifests/$PROFILE/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::systems::game::game" ).address') -export PAPER_MOCK_ADDRESS=$(cat ./manifests/dev/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::_mocks::paper_mock::paper_mock" ).address') +export PAPER_MOCK_ADDRESS=$(cat ./manifests/$PROFILE/manifest.json | jq -r '.contracts[] | select(.name == "rollyourown::_mocks::paper_mock::paper_mock" ).address') -export TREASURY_ADDRESS="0xe29882a1fcba1e7e10cad46212257fea5c752a4f9b1b1ec683c503a2cf5c8a"; +# dev/katana +# export TREASURY_ADDRESS="0xe29882a1fcba1e7e10cad46212257fea5c752a4f9b1b1ec683c503a2cf5c8a"; + +# sepolia deployer +export TREASURY_ADDRESS="0x3677d8443f74dcc6cd23c4b3f217256c70f084ee7edc4ddc431af2ce91eb936"; echo "---------------------------------------------------------------------------" echo profile : $PROFILE @@ -31,8 +35,9 @@ echo game : $GAME_ADDRESS echo paper : $PAPER_MOCK_ADDRESS echo "---------------------------------------------------------------------------" + # enable system -> models authorizations -sozo -P $PROFILE auth grant --world $WORLD_ADDRESS --wait writer\ +sozo -P $PROFILE auth grant --world $WORLD_ADDRESS --fee-estimate-multiplier 5 --wait writer\ RyoConfig,$RYO_ADDRESS \ RyoAddress,$RYO_ADDRESS \ Leaderboard,$RYO_ADDRESS \ @@ -48,7 +53,6 @@ sozo -P $PROFILE auth grant --world $WORLD_ADDRESS --wait writer\ Leaderboard,$GAME_ADDRESS \ - # remove later sozo -P $PROFILE auth grant --world $WORLD_ADDRESS --wait writer\ ERC20MetadataModel,$PAPER_MOCK_ADDRESS \ @@ -57,7 +61,6 @@ sozo -P $PROFILE auth grant --world $WORLD_ADDRESS --wait writer\ InitializableModel,$PAPER_MOCK_ADDRESS \ - echo "Default authorizations have been successfully set." echo "Initializing..." diff --git a/scripts/test.sh b/scripts/test.sh deleted file mode 100755 index 4b7d7801e..000000000 --- a/scripts/test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -euo pipefail -pushd $(dirname "$0")/.. - -if [ $# -ge 1 ]; then - export PROFILE=$1 -else - export PROFILE="dev" -fi - -echo "----" -echo $PROFILE \ No newline at end of file diff --git a/src/_mocks/paper_mock.cairo b/src/_mocks/paper_mock.cairo index b800740b3..a83e34b95 100644 --- a/src/_mocks/paper_mock.cairo +++ b/src/_mocks/paper_mock.cairo @@ -7,7 +7,7 @@ trait IPaperMock { fn world(self: @TState,) -> IWorldDispatcher; // IUpgradeable - fn upgrade(self: @TState, new_class_hash: ClassHash); + fn upgrade(ref self: TState, new_class_hash: ClassHash); // IERC20Metadata fn decimals(self: @TState,) -> u8; @@ -22,23 +22,23 @@ trait IPaperMock { // IERC20Balance fn balance_of(self: @TState, account: ContractAddress) -> u256; - fn transfer(self: @TState, recipient: ContractAddress, amount: u256) -> bool; + fn transfer(ref self: TState, recipient: ContractAddress, amount: u256) -> bool; fn transfer_from( - self: @TState, sender: ContractAddress, recipient: ContractAddress, amount: u256 + ref self: TState, sender: ContractAddress, recipient: ContractAddress, amount: u256 ) -> bool; // IERC20BalanceCamel fn balanceOf(self: @TState, account: ContractAddress) -> u256; fn transferFrom( - self: @TState, sender: ContractAddress, recipient: ContractAddress, amount: u256 + ref self: TState, sender: ContractAddress, recipient: ContractAddress, amount: u256 ) -> bool; // IERC20Allowance fn allowance(self: @TState, owner: ContractAddress, spender: ContractAddress) -> u256; - fn approve(self: @TState, spender: ContractAddress, amount: u256) -> bool; + fn approve(ref self: TState, spender: ContractAddress, amount: u256) -> bool; // WITHOUT INTERFACE !!! - fn initializer(self: @TState); + fn initializer(ref self: TState); fn dojo_resource(self: @TState,) -> felt252; } @@ -49,17 +49,17 @@ trait IPaperMock { /// #[starknet::interface] trait IPaperMockInitializer { - fn initializer(self: @TState); + fn initializer(ref self: TState); } #[starknet::interface] trait IPaperMockFaucet { - fn faucet(self: @TState); - fn faucetTo(self: @TState,recipient: ContractAddress); + fn faucet(ref self: TState,); + fn faucetTo(ref self: TState, recipient: ContractAddress); } -#[dojo::contract] +#[dojo::contract(allow_ref_self)] mod paper_mock { use integer::BoundedInt; use starknet::ContractAddress; @@ -160,7 +160,7 @@ mod paper_mock { #[abi(embed_v0)] impl PaperMockInitializerImpl of super::IPaperMockInitializer { - fn initializer(self: @ContractState) { + fn initializer(ref self: ContractState) { assert( self.world().is_owner(get_caller_address(), get_contract_address().into()), Errors::CALLER_IS_NOT_OWNER @@ -169,7 +169,7 @@ mod paper_mock { self.erc20_metadata.initialize('fPAPER', 'fPAPER', 18); self.erc20_mintable.mint(get_caller_address(), 10_000); - // self.initializable.initialize(); // <-- error + self.initializable.initialize(); } } @@ -179,14 +179,12 @@ mod paper_mock { const ETHER: u256 = 1_000_000_000_000_000_000; - use debug::PrintTrait; - #[abi(embed_v0)] impl PaperMockFaucetImpl of super::IPaperMockFaucet { - fn faucet(self: @ContractState) { + fn faucet(ref self: ContractState) { self.erc20_mintable.mint(get_caller_address(), 10_000 * ETHER); } - fn faucetTo(self: @ContractState, recipient: ContractAddress) { + fn faucetTo(ref self: ContractState, recipient: ContractAddress) { self.erc20_mintable.mint(recipient, 10_000 * ETHER); } } diff --git a/web/src/components/layout/Header.tsx b/web/src/components/layout/Header.tsx index 68c632220..e36914913 100644 --- a/web/src/components/layout/Header.tsx +++ b/web/src/components/layout/Header.tsx @@ -48,13 +48,13 @@ export const Header = observer(({ back }: HeaderProps) => { fontSize={["14px", "16px"]} > - {/* {isAdmin && ( )} */} + {!isMobile && ( <> - + )} {/* {!gameId && account && ( @@ -64,10 +64,9 @@ export const Header = observer(({ back }: HeaderProps) => { {!gameId && } {!gameId && } - - {game && /*!game.gameOver ||*/ (true || router.asPath.includes("logs")) && ( + {game && router.asPath.includes("logs") && ( ", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::resource_metadata::ResourceMetadata", + "members": [ + { + "name": "resource_id", + "type": "core::felt252" + }, + { + "name": "metadata_uri", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorld", + "items": [ + { + "type": "function", + "name": "metadata", + "inputs": [ + { + "name": "resource_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::resource_metadata::ResourceMetadata" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_metadata", + "inputs": [ + { + "name": "metadata", + "type": "dojo::resource_metadata::ResourceMetadata" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "model", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "(core::starknet::class_hash::ClassHash, core::starknet::contract_address::ContractAddress)" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "register_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": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "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", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_entity", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "base", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "delete_entity", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_owner", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_writer", + "inputs": [ + { + "name": "model", + "type": "core::felt252" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableWorld", + "interface_name": "dojo::world::IUpgradeableWorld" + }, + { + "type": "interface", + "name": "dojo::world::IUpgradeableWorld", + "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": [ + { + "name": "contract_base", + "type": "core::starknet::class_hash::ClassHash" + } + ] + }, + { + "type": "event", + "name": "dojo::world::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::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" + } + ] + }, + { + "type": "event", + "name": "dojo::world::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::WorldUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::MetadataUpdate", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "uri", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::ModelRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::felt252", + "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::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::StoreDelRecord", + "kind": "struct", + "members": [ + { + "name": "table", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world::WriterUpdated", + "kind": "struct", + "members": [ + { + "name": "model", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "system", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::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::world::Event", + "kind": "enum", + "variants": [ + { + "name": "WorldSpawned", + "type": "dojo::world::world::WorldSpawned", + "kind": "nested" + }, + { + "name": "ContractDeployed", + "type": "dojo::world::world::ContractDeployed", + "kind": "nested" + }, + { + "name": "ContractUpgraded", + "type": "dojo::world::world::ContractUpgraded", + "kind": "nested" + }, + { + "name": "WorldUpgraded", + "type": "dojo::world::world::WorldUpgraded", + "kind": "nested" + }, + { + "name": "MetadataUpdate", + "type": "dojo::world::world::MetadataUpdate", + "kind": "nested" + }, + { + "name": "ModelRegistered", + "type": "dojo::world::world::ModelRegistered", + "kind": "nested" + }, + { + "name": "StoreSetRecord", + "type": "dojo::world::world::StoreSetRecord", + "kind": "nested" + }, + { + "name": "StoreDelRecord", + "type": "dojo::world::world::StoreDelRecord", + "kind": "nested" + }, + { + "name": "WriterUpdated", + "type": "dojo::world::world::WriterUpdated", + "kind": "nested" + }, + { + "name": "OwnerUpdated", + "type": "dojo::world::world::OwnerUpdated", + "kind": "nested" + } + ] + } + ], + "address": "0x45d3b72e3c6c85c38d43798b9751817f14fac4b14c3645480683f8fae1c6464", + "transaction_hash": "0x539b5e380ba077907035119b18210c1f1532c3b3fcee8d99b519568abbd883b", + "block_number": null, + "seed": "ryo000", + "metadata": { + "profile_name": "ryosepolia", + "rpc_url": "https://api.cartridge.gg/rpc/starknet-sepolia" + }, + "name": "dojo::world::world" + }, + "base": { + "kind": "Class", + "class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "original_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": null, + "name": "dojo::base::base" + }, + "contracts": [ + { + "kind": "DojoContract", + "address": "0x2b7185feab76a19b8bab1305ff1b323e5127f20faa3ff46d12e1afb631f51f2", + "class_hash": "0x52a876e27cd0146445d4b3e93cdca60154ae6a1e5d9467fca447a173463aae", + "original_class_hash": "0x52a876e27cd0146445d4b3e93cdca60154ae6a1e5d9467fca447a173463aae", + "base_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "PaperMockInitializerImpl", + "interface_name": "rollyourown::_mocks::paper_mock::IPaperMockInitializer" + }, + { + "type": "interface", + "name": "rollyourown::_mocks::paper_mock::IPaperMockInitializer", + "items": [ + { + "type": "function", + "name": "initializer", + "inputs": [], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PaperMockFaucetImpl", + "interface_name": "rollyourown::_mocks::paper_mock::IPaperMockFaucet" + }, + { + "type": "interface", + "name": "rollyourown::_mocks::paper_mock::IPaperMockFaucet", + "items": [ + { + "type": "function", + "name": "faucet", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "faucetTo", + "inputs": [ + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ERC20MetadataImpl", + "interface_name": "token::components::token::erc20::erc20_metadata::IERC20Metadata" + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_metadata::IERC20Metadata", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u8" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ERC20MetadataTotalSupplyImpl", + "interface_name": "token::components::token::erc20::erc20_metadata::IERC20MetadataTotalSupply" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_metadata::IERC20MetadataTotalSupply", + "items": [ + { + "type": "function", + "name": "total_supply", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ERC20MetadataTotalSupplyCamelImpl", + "interface_name": "token::components::token::erc20::erc20_metadata::IERC20MetadataTotalSupplyCamel" + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_metadata::IERC20MetadataTotalSupplyCamel", + "items": [ + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ERC20BalanceImpl", + "interface_name": "token::components::token::erc20::erc20_balance::IERC20Balance" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_balance::IERC20Balance", + "items": [ + { + "type": "function", + "name": "balance_of", + "inputs": [ + { + "name": "account", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "transfer_from", + "inputs": [ + { + "name": "sender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ERC20BalanceCamelImpl", + "interface_name": "token::components::token::erc20::erc20_balance::IERC20BalanceCamel" + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_balance::IERC20BalanceCamel", + "items": [ + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "sender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ERC20AllowanceImpl", + "interface_name": "token::components::token::erc20::erc20_allowance::IERC20Allowance" + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_allowance::IERC20Allowance", + "items": [ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "spender", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "token::components::security::initializable::initializable_component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_metadata::erc20_metadata_component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_balance::erc20_balance_component::Transfer", + "kind": "struct", + "members": [ + { + "name": "from", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "to", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "value", + "type": "core::integer::u256", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_balance::erc20_balance_component::Event", + "kind": "enum", + "variants": [ + { + "name": "Transfer", + "type": "token::components::token::erc20::erc20_balance::erc20_balance_component::Transfer", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_allowance::erc20_allowance_component::Approval", + "kind": "struct", + "members": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "spender", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "value", + "type": "core::integer::u256", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_allowance::erc20_allowance_component::Event", + "kind": "enum", + "variants": [ + { + "name": "Approval", + "type": "token::components::token::erc20::erc20_allowance::erc20_allowance_component::Approval", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_mintable::erc20_mintable_component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_burnable::erc20_burnable_component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "rollyourown::_mocks::paper_mock::paper_mock::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + }, + { + "name": "InitializableEvent", + "type": "token::components::security::initializable::initializable_component::Event", + "kind": "nested" + }, + { + "name": "ERC20MetadataEvent", + "type": "token::components::token::erc20::erc20_metadata::erc20_metadata_component::Event", + "kind": "nested" + }, + { + "name": "ERC20BalanceEvent", + "type": "token::components::token::erc20::erc20_balance::erc20_balance_component::Event", + "kind": "nested" + }, + { + "name": "ERC20AllowanceEvent", + "type": "token::components::token::erc20::erc20_allowance::erc20_allowance_component::Event", + "kind": "nested" + }, + { + "name": "ERC20MintableEvent", + "type": "token::components::token::erc20::erc20_mintable::erc20_mintable_component::Event", + "kind": "nested" + }, + { + "name": "ERC20BurnableEvent", + "type": "token::components::token::erc20::erc20_burnable::erc20_burnable_component::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "rollyourown::_mocks::paper_mock::paper_mock" + }, + { + "kind": "DojoContract", + "address": "0x6cd8492d0b36117a3b863703a65fc4c073a74160d67fd9a5630aed43e357480", + "class_hash": "0x3f34836004980a04ca9389d30c2737880803b5aef96a501816d89853fb0cebe", + "original_class_hash": "0x3f34836004980a04ca9389d30c2737880803b5aef96a501816d89853fb0cebe", + "base_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ConfigImpl", + "interface_name": "rollyourown::config::config::IConfig" + }, + { + "type": "struct", + "name": "rollyourown::config::config::LayoutItem", + "members": [ + { + "name": "name", + "type": "core::bytes_31::bytes31" + }, + { + "name": "idx", + "type": "core::integer::u8" + }, + { + "name": "bits", + "type": "core::integer::u8" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::config::LayoutsConfig", + "members": [ + { + "name": "game_store", + "type": "core::array::Array::" + }, + { + "name": "player", + "type": "core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::hustlers::ItemSlot", + "variants": [ + { + "name": "Weapon", + "type": "()" + }, + { + "name": "Clothes", + "type": "()" + }, + { + "name": "Feet", + "type": "()" + }, + { + "name": "Transport", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerItemBaseConfig", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + }, + { + "name": "id", + "type": "core::integer::u32" + }, + { + "name": "slot_id", + "type": "core::integer::u8" + }, + { + "name": "name", + "type": "core::bytes_31::bytes31" + }, + { + "name": "initial_tier", + "type": "core::integer::u8" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerItemTiersConfig", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + }, + { + "name": "tier", + "type": "core::integer::u8" + }, + { + "name": "slot_id", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::integer::u32" + }, + { + "name": "stat", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerItemConfig", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + }, + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "base", + "type": "rollyourown::config::hustlers::HustlerItemBaseConfig" + }, + { + "name": "tier", + "type": "rollyourown::config::hustlers::HustlerItemTiersConfig" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerConfig", + "members": [ + { + "name": "hustler_id", + "type": "core::integer::u16" + }, + { + "name": "weapon", + "type": "rollyourown::config::hustlers::HustlerItemConfig" + }, + { + "name": "clothes", + "type": "rollyourown::config::hustlers::HustlerItemConfig" + }, + { + "name": "feet", + "type": "rollyourown::config::hustlers::HustlerItemConfig" + }, + { + "name": "transport", + "type": "rollyourown::config::hustlers::HustlerItemConfig" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::game::GameConfig", + "members": [ + { + "name": "key", + "type": "core::integer::u8" + }, + { + "name": "cash", + "type": "core::integer::u32" + }, + { + "name": "health", + "type": "core::integer::u8" + }, + { + "name": "max_turns", + "type": "core::integer::u8" + }, + { + "name": "max_wanted_shopping", + "type": "core::integer::u8" + }, + { + "name": "max_rounds", + "type": "core::integer::u8" + }, + { + "name": "encounter_count", + "type": "core::integer::u8" + }, + { + "name": "rep_drug_step", + "type": "core::integer::u8" + }, + { + "name": "rep_buy_item", + "type": "core::integer::u8" + }, + { + "name": "rep_carry_drugs", + "type": "core::integer::u8" + }, + { + "name": "rep_hospitalized", + "type": "core::integer::u8" + }, + { + "name": "rep_jailed", + "type": "core::integer::u8" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::config::Config", + "members": [ + { + "name": "layouts", + "type": "rollyourown::config::config::LayoutsConfig" + }, + { + "name": "hustlers", + "type": "core::array::Array::" + }, + { + "name": "game_config", + "type": "rollyourown::config::game::GameConfig" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::drugs::Drugs", + "variants": [ + { + "name": "Ludes", + "type": "()" + }, + { + "name": "Speed", + "type": "()" + }, + { + "name": "Weed", + "type": "()" + }, + { + "name": "Shrooms", + "type": "()" + }, + { + "name": "Acid", + "type": "()" + }, + { + "name": "Ketamine", + "type": "()" + }, + { + "name": "Heroin", + "type": "()" + }, + { + "name": "Cocaine", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::utils::bytes16::Bytes16", + "members": [ + { + "name": "value", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::drugs::DrugConfig", + "members": [ + { + "name": "drug", + "type": "rollyourown::config::drugs::Drugs" + }, + { + "name": "drug_id", + "type": "core::integer::u8" + }, + { + "name": "base", + "type": "core::integer::u16" + }, + { + "name": "step", + "type": "core::integer::u16" + }, + { + "name": "weight", + "type": "core::integer::u16" + }, + { + "name": "name", + "type": "rollyourown::utils::bytes16::Bytes16" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::encounters::Encounters", + "variants": [ + { + "name": "Cops", + "type": "()" + }, + { + "name": "Gang", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::encounters::EncounterConfig", + "members": [ + { + "name": "id", + "type": "core::integer::u8" + }, + { + "name": "encounter", + "type": "rollyourown::config::encounters::Encounters" + }, + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "health", + "type": "core::integer::u8" + }, + { + "name": "attack", + "type": "core::integer::u8" + }, + { + "name": "defense", + "type": "core::integer::u8" + }, + { + "name": "speed", + "type": "core::integer::u8" + }, + { + "name": "rep_pay", + "type": "core::integer::u8" + }, + { + "name": "rep_run", + "type": "core::integer::u8" + }, + { + "name": "rep_fight", + "type": "core::integer::u8" + }, + { + "name": "min_rep", + "type": "core::integer::u8" + }, + { + "name": "max_rep", + "type": "core::integer::u8" + }, + { + "name": "payout", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::config::IConfig", + "items": [ + { + "type": "function", + "name": "initialize_1", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "initialize_2", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_config", + "inputs": [], + "outputs": [ + { + "type": "rollyourown::config::config::Config" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_game_config", + "inputs": [ + { + "name": "game_config", + "type": "rollyourown::config::game::GameConfig" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_drug_config", + "inputs": [ + { + "name": "drug_config", + "type": "rollyourown::config::drugs::DrugConfig" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "update_encounter_config", + "inputs": [ + { + "name": "encounter_config", + "type": "rollyourown::config::encounters::EncounterConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::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::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::config::config::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "rollyourown::config::config::config" + }, + { + "kind": "DojoContract", + "address": "0x84734c67ca6632fa219592396699139be045b969338790014dcf2c8836efc5", + "class_hash": "0x1b227cb71aff952f78c742ed52c37bfafce69cdbad51f547d9634f8a7528812", + "original_class_hash": "0x1b227cb71aff952f78c742ed52c37bfafce69cdbad51f547d9634f8a7528812", + "base_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DevtoolsImpl", + "interface_name": "rollyourown::systems::devtools::IDevtools" + }, + { + "type": "interface", + "name": "rollyourown::systems::devtools::IDevtools", + "items": [ + { + "type": "function", + "name": "failing_tx", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "feed_leaderboard", + "inputs": [ + { + "name": "count", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::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::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::devtools::devtools::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "rollyourown::systems::devtools::devtools" + }, + { + "kind": "DojoContract", + "address": "0x3029dd2132a24af3497e3d82c5a319d658393b93ff164670d476b9560cbb65f", + "class_hash": "0x69f843f0585d895781dec13ace55cdb97b62f6984de737e7b5d328c795058d", + "original_class_hash": "0x69f843f0585d895781dec13ace55cdb97b62f6984de737e7b5d328c795058d", + "base_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "GameActionsImpl", + "interface_name": "rollyourown::systems::game::IGameActions" + }, + { + "type": "enum", + "name": "rollyourown::models::game::GameMode", + "variants": [ + { + "name": "Dealer", + "type": "()" + }, + { + "name": "Warrior", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::systems::trading::TradeDirection", + "variants": [ + { + "name": "Sell", + "type": "()" + }, + { + "name": "Buy", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::drugs::Drugs", + "variants": [ + { + "name": "Ludes", + "type": "()" + }, + { + "name": "Speed", + "type": "()" + }, + { + "name": "Weed", + "type": "()" + }, + { + "name": "Shrooms", + "type": "()" + }, + { + "name": "Acid", + "type": "()" + }, + { + "name": "Ketamine", + "type": "()" + }, + { + "name": "Heroin", + "type": "()" + }, + { + "name": "Cocaine", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::systems::trading::Trade", + "members": [ + { + "name": "direction", + "type": "rollyourown::systems::trading::TradeDirection" + }, + { + "name": "drug", + "type": "rollyourown::config::drugs::Drugs" + }, + { + "name": "quantity", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::hustlers::ItemSlot", + "variants": [ + { + "name": "Weapon", + "type": "()" + }, + { + "name": "Clothes", + "type": "()" + }, + { + "name": "Feet", + "type": "()" + }, + { + "name": "Transport", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::systems::shopping::Action", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::systems::game::Actions", + "variants": [ + { + "name": "Trade", + "type": "rollyourown::systems::trading::Trade" + }, + { + "name": "Shop", + "type": "rollyourown::systems::shopping::Action" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::config::locations::Locations", + "variants": [ + { + "name": "Home", + "type": "()" + }, + { + "name": "Queens", + "type": "()" + }, + { + "name": "Bronx", + "type": "()" + }, + { + "name": "Brooklyn", + "type": "()" + }, + { + "name": "Jersey", + "type": "()" + }, + { + "name": "Central", + "type": "()" + }, + { + "name": "Coney", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::systems::game::EncounterActions", + "variants": [ + { + "name": "Run", + "type": "()" + }, + { + "name": "Pay", + "type": "()" + }, + { + "name": "Fight", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::systems::game::IGameActions", + "items": [ + { + "type": "function", + "name": "create_game", + "inputs": [ + { + "name": "game_mode", + "type": "rollyourown::models::game::GameMode" + }, + { + "name": "hustler_id", + "type": "core::integer::u16" + }, + { + "name": "player_name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "end_game", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "actions", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "travel", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "next_location", + "type": "rollyourown::config::locations::Locations" + }, + { + "name": "actions", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "decide", + "inputs": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "action", + "type": "rollyourown::systems::game::EncounterActions" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "claim", + "inputs": [ + { + "name": "season", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "claim_treasury", + "inputs": [], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::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::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::GameCreated", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "game_mode", + "type": "rollyourown::models::game::GameMode", + "kind": "data" + }, + { + "name": "player_name", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "hustler_id", + "type": "core::integer::u16", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::Traveled", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "turn", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "from_location_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "to_location_id", + "type": "core::integer::u8", + "kind": "data" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::TradeDrug", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "drug_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "quantity", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "price", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "is_buy", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::HighVolatility", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "location_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "drug_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "increase", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::UpgradeItem", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "item_slot", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "item_level", + "type": "core::integer::u8", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::TravelEncounter", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "encounter_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "demand_pct", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "payout", + "type": "core::integer::u32", + "kind": "data" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::systems::traveling::EncounterOutcomes", + "variants": [ + { + "name": "Died", + "type": "()" + }, + { + "name": "Paid", + "type": "()" + }, + { + "name": "Escaped", + "type": "()" + }, + { + "name": "Victorious", + "type": "()" + }, + { + "name": "Jailed", + "type": "()" + }, + { + "name": "Hospitalized", + "type": "()" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::TravelEncounterResult", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "action", + "type": "rollyourown::systems::game::EncounterActions", + "kind": "data" + }, + { + "name": "outcome", + "type": "rollyourown::systems::traveling::EncounterOutcomes", + "kind": "data" + }, + { + "name": "rounds", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "dmg_dealt", + "type": "core::array::Array::<(core::integer::u8, core::integer::u8)>", + "kind": "data" + }, + { + "name": "dmg_taken", + "type": "core::array::Array::<(core::integer::u8, core::integer::u8)>", + "kind": "data" + }, + { + "name": "cash_earnt", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "cash_loss", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "drug_id", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "drug_loss", + "type": "core::array::Array::", + "kind": "data" + }, + { + "name": "turn_loss", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "rep_pos", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "rep_neg", + "type": "core::integer::u8", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::MeetOG", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "og_id", + "type": "core::integer::u16", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::GameOver", + "kind": "struct", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32", + "kind": "key" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "leaderboard_version", + "type": "core::integer::u16", + "kind": "key" + }, + { + "name": "player_name", + "type": "core::felt252", + "kind": "data" + }, + { + "name": "hustler_id", + "type": "core::integer::u16", + "kind": "data" + }, + { + "name": "turn", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "cash", + "type": "core::integer::u32", + "kind": "data" + }, + { + "name": "health", + "type": "core::integer::u8", + "kind": "data" + }, + { + "name": "reputation", + "type": "core::integer::u8", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::game::game::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + }, + { + "name": "GameCreated", + "type": "rollyourown::systems::game::game::GameCreated", + "kind": "nested" + }, + { + "name": "Traveled", + "type": "rollyourown::systems::game::game::Traveled", + "kind": "nested" + }, + { + "name": "TradeDrug", + "type": "rollyourown::systems::game::game::TradeDrug", + "kind": "nested" + }, + { + "name": "HighVolatility", + "type": "rollyourown::systems::game::game::HighVolatility", + "kind": "nested" + }, + { + "name": "UpgradeItem", + "type": "rollyourown::systems::game::game::UpgradeItem", + "kind": "nested" + }, + { + "name": "TravelEncounter", + "type": "rollyourown::systems::game::game::TravelEncounter", + "kind": "nested" + }, + { + "name": "TravelEncounterResult", + "type": "rollyourown::systems::game::game::TravelEncounterResult", + "kind": "nested" + }, + { + "name": "MeetOG", + "type": "rollyourown::systems::game::game::MeetOG", + "kind": "nested" + }, + { + "name": "GameOver", + "type": "rollyourown::systems::game::game::GameOver", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "rollyourown::systems::game::game" + }, + { + "kind": "DojoContract", + "address": "0x20c98e76a0b23ba2c60c06484dc0476a7f0cbe17c9885d4a53995e6fe62b0c4", + "class_hash": "0x3a399c8a25a399e3a33ecf7af41d81630a23d3125ed7ecd74a55025e35c97ed", + "original_class_hash": "0x3a399c8a25a399e3a33ecf7af41d81630a23d3125ed7ecd74a55025e35c97ed", + "base_class_hash": "0x679177a2cb757694ac4f326d01052ff0963eac0bc2a17116a2b87badcdf6f76", + "abi": [ + { + "type": "impl", + "name": "DojoResourceProviderImpl", + "interface_name": "dojo::world::IDojoResourceProvider" + }, + { + "type": "interface", + "name": "dojo::world::IDojoResourceProvider", + "items": [ + { + "type": "function", + "name": "dojo_resource", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::world::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "RyoExternalImpl", + "interface_name": "rollyourown::systems::ryo::IRyo" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::systems::ryo::IRyo", + "items": [ + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "paper_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "treasury_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_paused", + "inputs": [ + { + "name": "paused", + "type": "core::bool" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_paper_fee", + "inputs": [ + { + "name": "fee", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_treasury_fee_pct", + "inputs": [ + { + "name": "fee_pct", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_leaderboard_duration", + "inputs": [ + { + "name": "duration_sec", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "function", + "name": "paper", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "treasury", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "paper_fee", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u16" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "leaderboard_duration", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradableImpl", + "interface_name": "dojo::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::components::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::components::upgradeable::upgradeable::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::components::upgradeable::upgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::components::upgradeable::upgradeable::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "rollyourown::systems::ryo::ryo::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::components::upgradeable::upgradeable::Event", + "kind": "nested" + } + ] + } + ], + "reads": [], + "writes": [], + "computed": [], + "name": "rollyourown::systems::ryo::ryo" + } + ], + "models": [ + { + "kind": "DojoModel", + "members": [ + { + "name": "drug", + "type": "Drugs", + "key": true + }, + { + "name": "drug_id", + "type": "u8", + "key": false + }, + { + "name": "base", + "type": "u16", + "key": false + }, + { + "name": "step", + "type": "u16", + "key": false + }, + { + "name": "weight", + "type": "u16", + "key": false + }, + { + "name": "name", + "type": "Bytes16", + "key": false + } + ], + "class_hash": "0x7e7630ee2fe127c3f08690bcb5bf48188a2b5c7c343633859ada3d7dd3f02ea", + "original_class_hash": "0x7e7630ee2fe127c3f08690bcb5bf48188a2b5c7c343633859ada3d7dd3f02ea", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "drug_configImpl", + "interface_name": "rollyourown::config::drugs::Idrug_config" + }, + { + "type": "enum", + "name": "rollyourown::config::drugs::Drugs", + "variants": [ + { + "name": "Ludes", + "type": "()" + }, + { + "name": "Speed", + "type": "()" + }, + { + "name": "Weed", + "type": "()" + }, + { + "name": "Shrooms", + "type": "()" + }, + { + "name": "Acid", + "type": "()" + }, + { + "name": "Ketamine", + "type": "()" + }, + { + "name": "Heroin", + "type": "()" + }, + { + "name": "Cocaine", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::utils::bytes16::Bytes16", + "members": [ + { + "name": "value", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::drugs::DrugConfig", + "members": [ + { + "name": "drug", + "type": "rollyourown::config::drugs::Drugs" + }, + { + "name": "drug_id", + "type": "core::integer::u8" + }, + { + "name": "base", + "type": "core::integer::u16" + }, + { + "name": "step", + "type": "core::integer::u16" + }, + { + "name": "weight", + "type": "core::integer::u16" + }, + { + "name": "name", + "type": "rollyourown::utils::bytes16::Bytes16" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::drugs::Idrug_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::drugs::DrugConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::drugs::drug_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::drugs::drug_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "id", + "type": "u8", + "key": true + }, + { + "name": "encounter", + "type": "Encounters", + "key": false + }, + { + "name": "level", + "type": "u8", + "key": false + }, + { + "name": "health", + "type": "u8", + "key": false + }, + { + "name": "attack", + "type": "u8", + "key": false + }, + { + "name": "defense", + "type": "u8", + "key": false + }, + { + "name": "speed", + "type": "u8", + "key": false + }, + { + "name": "rep_pay", + "type": "u8", + "key": false + }, + { + "name": "rep_run", + "type": "u8", + "key": false + }, + { + "name": "rep_fight", + "type": "u8", + "key": false + }, + { + "name": "min_rep", + "type": "u8", + "key": false + }, + { + "name": "max_rep", + "type": "u8", + "key": false + }, + { + "name": "payout", + "type": "u32", + "key": false + } + ], + "class_hash": "0x6096229c6671813a20e47b67831e5f23ff2ea92ec0a81fd2d2d70253d1b8a0b", + "original_class_hash": "0x6096229c6671813a20e47b67831e5f23ff2ea92ec0a81fd2d2d70253d1b8a0b", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "encounter_configImpl", + "interface_name": "rollyourown::config::encounters::Iencounter_config" + }, + { + "type": "enum", + "name": "rollyourown::config::encounters::Encounters", + "variants": [ + { + "name": "Cops", + "type": "()" + }, + { + "name": "Gang", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::encounters::EncounterConfig", + "members": [ + { + "name": "id", + "type": "core::integer::u8" + }, + { + "name": "encounter", + "type": "rollyourown::config::encounters::Encounters" + }, + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "health", + "type": "core::integer::u8" + }, + { + "name": "attack", + "type": "core::integer::u8" + }, + { + "name": "defense", + "type": "core::integer::u8" + }, + { + "name": "speed", + "type": "core::integer::u8" + }, + { + "name": "rep_pay", + "type": "core::integer::u8" + }, + { + "name": "rep_run", + "type": "core::integer::u8" + }, + { + "name": "rep_fight", + "type": "core::integer::u8" + }, + { + "name": "min_rep", + "type": "core::integer::u8" + }, + { + "name": "max_rep", + "type": "core::integer::u8" + }, + { + "name": "payout", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::encounters::Iencounter_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::encounters::EncounterConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::encounters::encounter_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::encounters::encounter_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "key", + "type": "u8", + "key": true + }, + { + "name": "cash", + "type": "u32", + "key": false + }, + { + "name": "health", + "type": "u8", + "key": false + }, + { + "name": "max_turns", + "type": "u8", + "key": false + }, + { + "name": "max_wanted_shopping", + "type": "u8", + "key": false + }, + { + "name": "max_rounds", + "type": "u8", + "key": false + }, + { + "name": "encounter_count", + "type": "u8", + "key": false + }, + { + "name": "rep_drug_step", + "type": "u8", + "key": false + }, + { + "name": "rep_buy_item", + "type": "u8", + "key": false + }, + { + "name": "rep_carry_drugs", + "type": "u8", + "key": false + }, + { + "name": "rep_hospitalized", + "type": "u8", + "key": false + }, + { + "name": "rep_jailed", + "type": "u8", + "key": false + } + ], + "class_hash": "0x1eb4608f53f9497f5bef570d5a7ffece32f2ffd2940f39c5ac2403445257d08", + "original_class_hash": "0x1eb4608f53f9497f5bef570d5a7ffece32f2ffd2940f39c5ac2403445257d08", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "game_configImpl", + "interface_name": "rollyourown::config::game::Igame_config" + }, + { + "type": "struct", + "name": "rollyourown::config::game::GameConfig", + "members": [ + { + "name": "key", + "type": "core::integer::u8" + }, + { + "name": "cash", + "type": "core::integer::u32" + }, + { + "name": "health", + "type": "core::integer::u8" + }, + { + "name": "max_turns", + "type": "core::integer::u8" + }, + { + "name": "max_wanted_shopping", + "type": "core::integer::u8" + }, + { + "name": "max_rounds", + "type": "core::integer::u8" + }, + { + "name": "encounter_count", + "type": "core::integer::u8" + }, + { + "name": "rep_drug_step", + "type": "core::integer::u8" + }, + { + "name": "rep_buy_item", + "type": "core::integer::u8" + }, + { + "name": "rep_carry_drugs", + "type": "core::integer::u8" + }, + { + "name": "rep_hospitalized", + "type": "core::integer::u8" + }, + { + "name": "rep_jailed", + "type": "core::integer::u8" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::game::Igame_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::game::GameConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::game::game_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::game::game_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "slot", + "type": "ItemSlot", + "key": true + }, + { + "name": "id", + "type": "u32", + "key": true + }, + { + "name": "slot_id", + "type": "u8", + "key": false + }, + { + "name": "name", + "type": "bytes31", + "key": false + }, + { + "name": "initial_tier", + "type": "u8", + "key": false + } + ], + "class_hash": "0x6600678052f110c4b227b8424b6a685ce0c7a97dcc90f9dd9c229b45f27ff7e", + "original_class_hash": "0x6600678052f110c4b227b8424b6a685ce0c7a97dcc90f9dd9c229b45f27ff7e", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "hustler_item_base_configImpl", + "interface_name": "rollyourown::config::hustlers::Ihustler_item_base_config" + }, + { + "type": "enum", + "name": "rollyourown::config::hustlers::ItemSlot", + "variants": [ + { + "name": "Weapon", + "type": "()" + }, + { + "name": "Clothes", + "type": "()" + }, + { + "name": "Feet", + "type": "()" + }, + { + "name": "Transport", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerItemBaseConfig", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + }, + { + "name": "id", + "type": "core::integer::u32" + }, + { + "name": "slot_id", + "type": "core::integer::u8" + }, + { + "name": "name", + "type": "core::bytes_31::bytes31" + }, + { + "name": "initial_tier", + "type": "core::integer::u8" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::hustlers::Ihustler_item_base_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::hustlers::HustlerItemBaseConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::hustlers::hustler_item_base_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::hustlers::hustler_item_base_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "slot", + "type": "ItemSlot", + "key": true + }, + { + "name": "tier", + "type": "u8", + "key": true + }, + { + "name": "slot_id", + "type": "u8", + "key": false + }, + { + "name": "cost", + "type": "u32", + "key": false + }, + { + "name": "stat", + "type": "u32", + "key": false + } + ], + "class_hash": "0x1731c752422e86494fecae658bbc66da0051569acd1d3089153b0b9cb3539d6", + "original_class_hash": "0x1731c752422e86494fecae658bbc66da0051569acd1d3089153b0b9cb3539d6", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "hustler_item_tiers_configImpl", + "interface_name": "rollyourown::config::hustlers::Ihustler_item_tiers_config" + }, + { + "type": "enum", + "name": "rollyourown::config::hustlers::ItemSlot", + "variants": [ + { + "name": "Weapon", + "type": "()" + }, + { + "name": "Clothes", + "type": "()" + }, + { + "name": "Feet", + "type": "()" + }, + { + "name": "Transport", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::hustlers::HustlerItemTiersConfig", + "members": [ + { + "name": "slot", + "type": "rollyourown::config::hustlers::ItemSlot" + }, + { + "name": "tier", + "type": "core::integer::u8" + }, + { + "name": "slot_id", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::integer::u32" + }, + { + "name": "stat", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::hustlers::Ihustler_item_tiers_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::hustlers::HustlerItemTiersConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::hustlers::hustler_item_tiers_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::hustlers::hustler_item_tiers_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "location", + "type": "Locations", + "key": true + }, + { + "name": "location_id", + "type": "u8", + "key": false + }, + { + "name": "name", + "type": "Bytes16", + "key": false + } + ], + "class_hash": "0x46236b15870af486e875c0d8f18ae9124214982a49e62749c85776b76551654", + "original_class_hash": "0x46236b15870af486e875c0d8f18ae9124214982a49e62749c85776b76551654", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "location_configImpl", + "interface_name": "rollyourown::config::locations::Ilocation_config" + }, + { + "type": "enum", + "name": "rollyourown::config::locations::Locations", + "variants": [ + { + "name": "Home", + "type": "()" + }, + { + "name": "Queens", + "type": "()" + }, + { + "name": "Bronx", + "type": "()" + }, + { + "name": "Brooklyn", + "type": "()" + }, + { + "name": "Jersey", + "type": "()" + }, + { + "name": "Central", + "type": "()" + }, + { + "name": "Coney", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::utils::bytes16::Bytes16", + "members": [ + { + "name": "value", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::locations::LocationConfig", + "members": [ + { + "name": "location", + "type": "rollyourown::config::locations::Locations" + }, + { + "name": "location_id", + "type": "core::integer::u8" + }, + { + "name": "name", + "type": "rollyourown::utils::bytes16::Bytes16" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::locations::Ilocation_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::locations::LocationConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::locations::location_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::locations::location_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "key", + "type": "u8", + "key": true + }, + { + "name": "paper", + "type": "ContractAddress", + "key": false + }, + { + "name": "treasury", + "type": "ContractAddress", + "key": false + } + ], + "class_hash": "0x5d45a0b7166d5fef0e633da37289dd602049e59f60961f3f42169d70b5bfc2e", + "original_class_hash": "0x5d45a0b7166d5fef0e633da37289dd602049e59f60961f3f42169d70b5bfc2e", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ryo_addressImpl", + "interface_name": "rollyourown::config::ryo_address::Iryo_address" + }, + { + "type": "struct", + "name": "rollyourown::config::ryo_address::RyoAddress", + "members": [ + { + "name": "key", + "type": "core::integer::u8" + }, + { + "name": "paper", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "treasury", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::ryo_address::Iryo_address", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::ryo_address::RyoAddress" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::ryo_address::ryo_address::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::ryo_address::ryo_address" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "key", + "type": "u8", + "key": true + }, + { + "name": "initialized", + "type": "bool", + "key": false + }, + { + "name": "paused", + "type": "bool", + "key": false + }, + { + "name": "leaderboard_version", + "type": "u16", + "key": false + }, + { + "name": "leaderboard_duration", + "type": "u32", + "key": false + }, + { + "name": "paper_fee", + "type": "u16", + "key": false + }, + { + "name": "treasury_fee_pct", + "type": "u8", + "key": false + }, + { + "name": "treasury_balance", + "type": "u32", + "key": false + } + ], + "class_hash": "0xc79f9914d4ca75ecef56d27d6e50e6c25d711bedb041a719112b3ef3a4dd97", + "original_class_hash": "0xc79f9914d4ca75ecef56d27d6e50e6c25d711bedb041a719112b3ef3a4dd97", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ryo_configImpl", + "interface_name": "rollyourown::config::ryo::Iryo_config" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::config::ryo::RyoConfig", + "members": [ + { + "name": "key", + "type": "core::integer::u8" + }, + { + "name": "initialized", + "type": "core::bool" + }, + { + "name": "paused", + "type": "core::bool" + }, + { + "name": "leaderboard_version", + "type": "core::integer::u16" + }, + { + "name": "leaderboard_duration", + "type": "core::integer::u32" + }, + { + "name": "paper_fee", + "type": "core::integer::u16" + }, + { + "name": "treasury_fee_pct", + "type": "core::integer::u8" + }, + { + "name": "treasury_balance", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::config::ryo::Iryo_config", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::config::ryo::RyoConfig" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::config::ryo::ryo_config::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::config::ryo::ryo_config" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "u32", + "key": true + }, + { + "name": "player_id", + "type": "ContractAddress", + "key": true + }, + { + "name": "player_name", + "type": "Bytes16", + "key": false + }, + { + "name": "hustler_id", + "type": "u16", + "key": false + }, + { + "name": "leaderboard_version", + "type": "u16", + "key": false + }, + { + "name": "game_mode", + "type": "GameMode", + "key": false + }, + { + "name": "max_turns", + "type": "u8", + "key": false + }, + { + "name": "max_wanted_shopping", + "type": "u8", + "key": false + }, + { + "name": "max_rounds", + "type": "u8", + "key": false + }, + { + "name": "game_over", + "type": "bool", + "key": false + } + ], + "class_hash": "0x4d25ed14bab536755433a442e56ef0afb33ff039c454050a7e5940756cb17ef", + "original_class_hash": "0x4d25ed14bab536755433a442e56ef0afb33ff039c454050a7e5940756cb17ef", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "gameImpl", + "interface_name": "rollyourown::models::game::Igame" + }, + { + "type": "struct", + "name": "rollyourown::utils::bytes16::Bytes16", + "members": [ + { + "name": "value", + "type": "core::integer::u128" + } + ] + }, + { + "type": "enum", + "name": "rollyourown::models::game::GameMode", + "variants": [ + { + "name": "Dealer", + "type": "()" + }, + { + "name": "Warrior", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::models::game::Game", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "player_name", + "type": "rollyourown::utils::bytes16::Bytes16" + }, + { + "name": "hustler_id", + "type": "core::integer::u16" + }, + { + "name": "leaderboard_version", + "type": "core::integer::u16" + }, + { + "name": "game_mode", + "type": "rollyourown::models::game::GameMode" + }, + { + "name": "max_turns", + "type": "core::integer::u8" + }, + { + "name": "max_wanted_shopping", + "type": "core::integer::u8" + }, + { + "name": "max_rounds", + "type": "core::integer::u8" + }, + { + "name": "game_over", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::models::game::Igame", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::models::game::Game" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::models::game::game::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::models::game::game" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "game_id", + "type": "u32", + "key": true + }, + { + "name": "player_id", + "type": "ContractAddress", + "key": true + }, + { + "name": "packed", + "type": "felt252", + "key": false + } + ], + "class_hash": "0x1affe738136ad9cb9556be9a5550e1cc1e9c8c49b56f08c0d8d103330a82f14", + "original_class_hash": "0x1affe738136ad9cb9556be9a5550e1cc1e9c8c49b56f08c0d8d103330a82f14", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "game_store_packedImpl", + "interface_name": "rollyourown::models::game_store_packed::Igame_store_packed" + }, + { + "type": "struct", + "name": "rollyourown::models::game_store_packed::GameStorePacked", + "members": [ + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "packed", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::models::game_store_packed::Igame_store_packed", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::models::game_store_packed::GameStorePacked" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::models::game_store_packed::game_store_packed::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::models::game_store_packed::game_store_packed" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "version", + "type": "u16", + "key": true + }, + { + "name": "game_id", + "type": "u32", + "key": false + }, + { + "name": "player_id", + "type": "ContractAddress", + "key": false + }, + { + "name": "high_score", + "type": "u32", + "key": false + }, + { + "name": "next_version_timestamp", + "type": "u64", + "key": false + }, + { + "name": "paper_balance", + "type": "u32", + "key": false + }, + { + "name": "claimed", + "type": "bool", + "key": false + } + ], + "class_hash": "0x846290e630532c0a16562b21c8f8a6970770a8aed4f1d1fe382dcb6ee4556d", + "original_class_hash": "0x846290e630532c0a16562b21c8f8a6970770a8aed4f1d1fe382dcb6ee4556d", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "leaderboardImpl", + "interface_name": "rollyourown::models::leaderboard::Ileaderboard" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "rollyourown::models::leaderboard::Leaderboard", + "members": [ + { + "name": "version", + "type": "core::integer::u16" + }, + { + "name": "game_id", + "type": "core::integer::u32" + }, + { + "name": "player_id", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "high_score", + "type": "core::integer::u32" + }, + { + "name": "next_version_timestamp", + "type": "core::integer::u64" + }, + { + "name": "paper_balance", + "type": "core::integer::u32" + }, + { + "name": "claimed", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "rollyourown::models::leaderboard::Ileaderboard", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "rollyourown::models::leaderboard::Leaderboard" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "rollyourown::models::leaderboard::leaderboard::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "rollyourown::models::leaderboard::leaderboard" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "token", + "type": "ContractAddress", + "key": true + }, + { + "name": "initialized", + "type": "bool", + "key": false + } + ], + "class_hash": "0x203cf018080b21fc921033ee35af2e1b8811cc7c73e9256fb7a86f794c556ce", + "original_class_hash": "0x203cf018080b21fc921033ee35af2e1b8811cc7c73e9256fb7a86f794c556ce", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "initializable_modelImpl", + "interface_name": "token::components::security::initializable::Iinitializable_model" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "token::components::security::initializable::InitializableModel", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "initialized", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "token::components::security::initializable::Iinitializable_model", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "token::components::security::initializable::InitializableModel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "token::components::security::initializable::initializable_model::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "token::components::security::initializable::initializable_model" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "token", + "type": "ContractAddress", + "key": true + }, + { + "name": "owner", + "type": "ContractAddress", + "key": true + }, + { + "name": "spender", + "type": "ContractAddress", + "key": true + }, + { + "name": "amount", + "type": "u256", + "key": false + } + ], + "class_hash": "0x194d40513d3428318f01b1cd74380d3dc67e361a3e6f31c2c1297b1099fb9a5", + "original_class_hash": "0x194d40513d3428318f01b1cd74380d3dc67e361a3e6f31c2c1297b1099fb9a5", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "erc_20_allowance_modelImpl", + "interface_name": "token::components::token::erc20::erc20_allowance::Ierc_20_allowance_model" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "token::components::token::erc20::erc20_allowance::ERC20AllowanceModel", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "spender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_allowance::Ierc_20_allowance_model", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "token::components::token::erc20::erc20_allowance::ERC20AllowanceModel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_allowance::erc_20_allowance_model::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "token::components::token::erc20::erc20_allowance::erc_20_allowance_model" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "token", + "type": "ContractAddress", + "key": true + }, + { + "name": "account", + "type": "ContractAddress", + "key": true + }, + { + "name": "amount", + "type": "u256", + "key": false + } + ], + "class_hash": "0x7b1ae7ba3115fabcc3a01e0046ec79bbcea285822ae3bde8501c499dcfb944f", + "original_class_hash": "0x7b1ae7ba3115fabcc3a01e0046ec79bbcea285822ae3bde8501c499dcfb944f", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "erc_20_balance_modelImpl", + "interface_name": "token::components::token::erc20::erc20_balance::Ierc_20_balance_model" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "token::components::token::erc20::erc20_balance::ERC20BalanceModel", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "account", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_balance::Ierc_20_balance_model", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "token::components::token::erc20::erc20_balance::ERC20BalanceModel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_balance::erc_20_balance_model::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "token::components::token::erc20::erc20_balance::erc_20_balance_model" + }, + { + "kind": "DojoModel", + "members": [ + { + "name": "token", + "type": "ContractAddress", + "key": true + }, + { + "name": "name", + "type": "felt252", + "key": false + }, + { + "name": "symbol", + "type": "felt252", + "key": false + }, + { + "name": "decimals", + "type": "u8", + "key": false + }, + { + "name": "total_supply", + "type": "u256", + "key": false + } + ], + "class_hash": "0x554661c0f3ba0abb585de13ad65cd95e60feee212f65e0f3d26f3c8b06d5058", + "original_class_hash": "0x554661c0f3ba0abb585de13ad65cd95e60feee212f65e0f3d26f3c8b06d5058", + "abi": [ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IDojoModel" + }, + { + "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": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::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, core::array::Span::)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, core::array::Span::)>" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::>" + }, + { + "name": "Array", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IDojoModel", + "items": [ + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "erc_20_metadata_modelImpl", + "interface_name": "token::components::token::erc20::erc20_metadata::Ierc_20_metadata_model" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "token::components::token::erc20::erc20_metadata::ERC20MetadataModel", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "symbol", + "type": "core::felt252" + }, + { + "name": "decimals", + "type": "core::integer::u8" + }, + { + "name": "total_supply", + "type": "core::integer::u256" + } + ] + }, + { + "type": "interface", + "name": "token::components::token::erc20::erc20_metadata::Ierc_20_metadata_model", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "token::components::token::erc20::erc20_metadata::ERC20MetadataModel" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "token::components::token::erc20::erc20_metadata::erc_20_metadata_model::Event", + "kind": "enum", + "variants": [] + } + ], + "name": "token::components::token::erc20::erc20_metadata::erc_20_metadata_model" + } + ] +} \ No newline at end of file diff --git a/web/src/pages/game/history.tsx b/web/src/pages/game/history.tsx index 93bb8939e..53bfb2b3d 100644 --- a/web/src/pages/game/history.tsx +++ b/web/src/pages/game/history.tsx @@ -137,7 +137,7 @@ const GameList = ({ games }: { games?: GameClass[] }) => { {game.player.turn} - {game.player.location.name} + {game.player.location?.name} {game.player.health}